Universe
2010-02-09
Feb 10th
ShakeIt
- scripts utilizando o novo modelo (supernova)
- objetos tambem utilizando novo modelo
Uprofile
- scripts usando supernova
- objetos usando supernova
- API nova OK
Tenho algumas ideias novas para o Uprofile e quero implementar ao longo de amanha. Melhorar o sistemas de msgs e como a API fala com o web-service.
2010/01/29
Jan 29th
Sem internet
Estou a alguns dias sem me conectar a internet, e fazia tempo que nao era tao produtivo como esses dias o tempo perdido com pessoas em jabber/xmpp/gtalk e irc e’ muito grande. Sem falar que elas atrapalham a concentracao, suas perguntas sobre questoes de programacao e universo unix me tiram totalmente do que estou fazendo, adoro resolver problemas, todo problema tem de ser visto, sempre. E’ com eles que voce consegue realmente aplicar o seu conhecimento e ganhar mais. E os seus links ao youtube e noticias sao um chamariz a parar de desenvolver. Com isso estou pensando seriamente em deixar para la’ IMs/irc. Vou fazer um teste sobre isso, talvez ficar sem IMs/irc por uma semana ou 15 dias. E e’ com isso que vejo que o simples email e’ muito bom, quando tenho realmente tempo entro e utilizo alguns minutos para responder perguntas de amigos ou entao para escrever para a lista mitgnu =)
MitGNU
Com algumas mudancas que aconteceram nesse final de ano, venho me concentrando 100% a MitGNU agora, empresa que sou co-founder e vejo que tem grande futuro. O que temos de qualidade de pessoal e’ muito forte. Mas nem tudo e’ alegria. Tivemos um “atraso”(?) com o ShakeIt. Nao considero atraso. Bem…
ShakeIt
O projeto ShakeIt nasceu de uma grande ideia do nosso CEO Rafael “HULK” Almeida. Nao irei falar o que e’ o projeto ShakeIt, mas que erramos em dar um deadline para ele. No caso o co-founder Thiago Tiveron escolheu a data por ser uma data legal, 10/01/10 (100110). Fui de acordo. Poderiamos lancar com certeza uma versao beta do projeto para um uso e pesquisa do que poderiamos estar com duvidas sobre o plano de negocio.
Achei super legal a ideia do Tiveron de colocar um deadline e correr atras de uma versao usavel ate’ aquele ponto. Verdade o meu empenho na tecnologia que o ShakeIt vai usar foi aumentado diversas vezes. Ainda mais quando fiz um countdown para (as) minha(s) workstation. Toda vez que meu olho batia no canto da tela via o tempo passar realmente. Era por varias vezes motivo de justificar a minha ambicao por nao cair no sono e codificar nesse tempo que para meu ponto de vista e’ um certo desperdicio. Resultado comecei a “aproveitar” melhor meu tempo. Comecei a dormir exatas 4 horas por dia no maximo. Quando me acostumei consegui fazer melhor, dormir apenas na manha, sim dormia das 07:00am ate’ 10/10:30am, e em alguns dias. Escolhi eles sabado, segunda e quarta. Demorei cerca que quase 10 dias para me acostumar. Mas deu certo. Nao posso falar que era 100% produtivo como costumo ser, mas se for colocar na ponta do lapis (? colocar na planilha) eu tive entre 75% a 95% do aproveitamento, isso de acordo com minha/o/o planilha/trac/redmine. Com isso tive mais horas de desenvolvimento e dedicacao a novas tecnologias que criamos na MitGNU.
E voltando a ideia do Tiveron, perfeita. So’ tem um problema, eu. Tenho um grande problema em falar que algo esta’ pronto, quando esta’ pronto? Quando esta’ perfeito? Nao quero algo bom, quero algo perfeito que me orgulhe de ter criado e orgulho em usar e fazer com que os outros usem. Passava dias inteiros melhorando algo que muitos falavam que estava perfeito. Mas sempre tem um X para melhorar. Errei nisso. Nao sou uma pessoa de deadlines. Sou uma pessoa que adota a versao de “estara’ pronto quando ficar pronto”. Por isso nao considero um atraso nosso ao ShakeIt nao ter uma versao beta para todos no dia do deadline. Com esse pequeno “atraso” aproveitei e melhorei/refiz varios objetivos no ShakeIt nesses dias sem internet.
- templates usando dogtag e nao mais OCGI
- tudo esta’ em modulos
- apliquei recurso de concorencia no ShakeIt (ver universe)
- algoritimos usando novo “metodo” de threads e distribuicao
- pages usando templates-dogtag
Universe
Ajustei varias questoes no Universe, primeiro de tudo refiz o modulo de distribuicao de processamento. Agora podemos distribuir os processos em diversas maquinas de um modo facil. Tudo usando a mesma lib que criei em 2007. Todo processo de melhoramento de codigo e aplicar novos recursos foram no Python. Mas quero em um futuro proximo colocar a mao na lib denovo.
Outro ponto bacana foi melhorar o core do Universe. Agora temos um novo recurso de quando aquele modulo/objeto nao foi localizado ou gerou um erro, nosso core procura a ultima versao que aquele processo estava “certo” e refaz o processamento usando aquele codigo. Nao estou muito certo se ira’ ser util realmente, mas no caso imagino um sistema sendo atualizado em varias maquinas, quero que cada maquina (ponto de processamento) tenha uma copia do aplicativo, assim quando um processo gerar um erro, essa demanda ira’ passar para a maquina a frente dela, ate’ chegar em uma maquina que o resultado seja positivo, dai sim retornando a quem quis o processo e caminhar dai para frente normalmente. Nao tenho nome para esse recurso. Mas se for bem implementado, daqui a algum tempo nao teriamos mais nos preocupar em atualizar tudo de uma vez ou ter as quedas de sistema sem usar slave. Deixarei esse recurso como unstable e nao ira’ para o core da pre-stable. Quero lancar uma nova stable quanto antes para me focar mais em outros produtos.
- nova versao pre-stable
- dogtags totalmente em uso, irei tirar o OCGI quando todos os produtos estiverem usando dogtag
- leitor de feed de wordpress (WPReader)
SF
Estou bastante contente com a evolucao do SF. Temos varios novos recursos como download-key configurando a velocidade. Essa key permite que apenas o numero de pessoas possam usar aquela chave e quantos mb/s poderam abaixar. Quero melhorar o sistema de log do SF.
Alem de melhorar o sistema de log do SF, queria criar um recurso de quando subir um arquivo para o storage um sistema de “alerta”/msg qualquer no twitter, quero aplicar isso justamente para o UPA. Assim o pessoal que tiver cadastro no UPA podera’ “espalhar” seus arquivos com maior facilidade.
VCNews
Estive revendo o backend do VCNews, quero colocar ele para frente. Temos varios recursos do projeto final ja’. Teriamos de terminar o processo de app e front-end. Que estao praticamente a 0% do desenvolvimento.
2009/11/25
Nov 26th
SF
- app scripts
- check name
- login
- get
- create
- app bridge
- login
- IO scripts
- create
- delete
- read
- file scripts
- create
- delete
- get
- getAll
- makePath
ShakeIt
- usando SF’s API
- usando SI’s API
UPA
Coloquei parte do meu .plan no Brainstorm do UPA (uploaddearquivos.com.br) para novas modificacoes.
WM e outros
Nov 18th
Awesome
Voltei a usar o AWESOME, sem duvidas, o melhor de todos window managers que existem por ai. Bem talvez perca para o meu em alguns pontos =) (sim, ja’ fiz um window manager do zero). Depois de certa campanha para eu parar de usar o Windowmaker (Tiveron esta’ lendo isso? Feliz?), voltei ao incrivel Awesome.
O que faz dele incrivel:
- Very stable, fast and small codebase and footprint;
- First window manager using asynchronous XCB library instead of the old synchronous Xlib: make awesome less subject to latency than many window managers;
- Very well documented source code and API;
- No mouse needed: everything can be performed with keyboard;
- Real multihead support (XRandR, Xinerama or Zaphod mode) with per screen desktops (tags);
- Implement many Freedesktop standards: EWMH, XDG Base Directory, XEmbed, Desktop Notification, System Tray;
- Doesn’t distinguish between layers: there is no floating or tiled layer;
- Use tags instead of workspaces: allow to place clients on several tags, and display several tags at the same time;
- A lot of Lua extensions to add features: dynamic tagging, widget feeding, tabs, layouts …;
- D-Bus support;
Com ele tenho total controle de tudo no meu Desktop apenas usando o teclado. Bem outro ponto legal e’ que pratico o meu Lua.
Aterm
Tambem acabei voltando a usar o Aterm. Sempre gostei muito do Aterm, mas sempre acabava usando o Xterm ja’ que sempre encontro ele em qualquer lugar.
Meu .Xdefaults para Aterm:
aterm*transparent:true
aterm*shading:40
aterm*foreground:Gray
aterm*scrollBar:false
aterm*saveLines:32767
aterm*font: -misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-iso8859-1
Resultado do .Xdefaults esta’ no screen shot la’ em cima… =)
SI
Agora temos um recurso muito legal para quem ira’ utilizar a nuvem SI para deixar imagens padroes da sua app/site.
Si.sprite(['image1','image2','image3'])
Podemos criar um Sprite dinamico! Tenho de estudar alguns metodos para aproveitar ainda mais os espacos em branco deixado pela juncao das imagens e colocar atribuicao de preferir sprite horizontal ou vertical.
Workstation
Novo layout da minha workstation:
- coloquei o Libretto 50ct de volta ao trabalho rodando uma BNC para me deixar o maximo possivel online no #mitgnu (freenode)
- walker (eeepc900) rodando o pidgin, skype, irssi e um cliente synergy para ter um controle facilitado
- darthvader rodando synergy server e Universe
- earl rodando varios services para minha rede local como Universe, UDB, stg dos meus projetos, postgresql, bittorrent e getstream (script meu para ripar radios online)
- bajinger rodando sync server de meus documentos
- sarabi servindo mysql
Universe — Supernova [0]
Nov 11th
Mudancas:
- Bridge.Load - reformulacao dos componentes (app,html,urlopen,xml)
- Objects.Main — novos metodos e mudancas no init
- Objects.xml — objeto para gerar xml
- Objects.io — objecto para manipular IO
- nao existe mais o acesso IO via universe.File (old stuff!!!)
- String2Image foi totalmente deixado de lado, logo mais vai virar um service com API
- Apps.Google.Chart — atualizado para novo modelo de objetos
- SI operando 100%
- ShakeIt operando 100%
- VCNews operando 100%
- myUniverse operando 100%
E’ isso. Existem novas mudancas que estao em “teste”. Supernova ainda e’ considerada unstable por causa dessas mudancas que estao por vir (nao falei delas ainda). Porem ganhamos, e muito, em facilidade de desenvolver com os novos objectos. Exemplo e’ que OCGI[0] agora vai ser reduzido e muito, ja’ que vamos ter elementos prontos direto da Universe.
Futuro (bem) proximo:
- UDB escrevendo em disco (implementacao ok, quero melhorar a performace antes de soltar)
- Protocolo Universe nao esta’ totalmente ok ainda e falta um nome legal
- API para SI
Quero ver se ate’ o final da semana esteja tudo ok.=)
[0] = ”‘OCGI tem que ter um novo nome… Alguem tem alguma ideia?”’
MitGNU SI
Nov 6th
Yeap. Voltei com o SI. SI nada mais e’ do que uma ferramenta para fazer storage de imagens de um modo facil e rapido.

Antes o sistema tinha recursos de separacao por albuns, categorias e tags. Hoje ele bem mais simples, deixando assim esses recursos para a aplicacao que ira’ utilizar ele desenvolver e aplicar conforme o necessario.
Os recursos da versao 1.0:
- um novo sistema de storage foi desenvolvido, assim podemos ter ate’ 2^48 ou 281474976710656 arquivos por dia
- cada app tem acesso unico as suas imagens
- api rest simples
- modifique a imagem antes de receber… resize, transform e rotate
E’ isso. Irei portar agora o ShakeIt para utilizar o SI. =)
Mudancas…
Oct 12th
- novo modelo de objetos no universe
- portei os objetos do ShakeIt para o novo modelo (eles nao seguiam modelo universe)
- mudei a api do Linkaaa para um novo modelo utilizando o univese.object
- fiz um sisteminha de pegar todas as cidades e estados do Brasil para o ShakeIt, quero colocar isso como um service depois. =)
- e o mesmo sistema esta’ pegando estilos de musica eletronica tambem para o ShakeIt
- melhorei o desempenho de cache das apis para Google Chart
- melhorei/terminei (stable) sistema de msgs do ShakeIt, tenho de alinhar agora com o Tiveron apenas
- temos universe supernova-rc2
- comecei a criar uma api para uprofile tratando agenda de contatos — tenho de terminar um design para implementar de verdade
Quero dar um tempo e tratar melhor a solucao de fotos que fiz para o ShakeIt, talvez criar algo mais pratico do que um sistema de “albuns de fotos”. Ja’ que vai ser usado para quase tudo do site.
Universe — URLs — Linkaaa.com
Sep 29th

Acabei de trazer mais uma feature para Universe, agora com o servico Linkaaa temos mini urls. =) Ah… O servico do Isgd continua nas apis tambem… Usem Linkaaa.com! =)
Algumas coisas que fiz hoje…
Sep 27th
Hoje ate’ que foi um dia legal.
ShakeIt
- changeLocation — Agora podemos controlar location dos profiles usando Session normal, esta’ aplicado normalmente na classe, gostei do resultado final.
- search — Sistema de busca totalmente ok! [*] Ver Uprofile =)
- event — recomecei a escrever a class de eventos e ja’ connectei ao OODB
Uprofile
- search profile — Gracas ao ShakeIt, agora o search de profile ganhou um ponto a mais em performace e API pronta para uso do search. Detalhe que ele busca em qualquer informacao basica do profile retornando assim os encontrados. Ah, paginacao esta’ ok tambem e no caso a App tem total liberdade de escolher o “limit” da “query”.
VCNews
- Refiz grande parte da Engine…
- Novas features:
- Mention — get — Retorna info de uma Mention
- Mention — getAllProfile — Retorna todos os mentions pelo profile X
- Mention — Last — Retorna o ultimo mention
- Comecei a escrever a “categorizacao” dos posts.…
Uprofile — Profile’s Session (Fetus)
Sep 23rd
Coisas que modifiquei:
- criacao de novo metodo para checkar se existe o Session indicado
- ajustes da API para novos os metodos
- ajustes na API para tratar o novo Session’s service
- mudanca da classe para uma sub-class do Profile
Bem a grande mudanca foi ter acesso aos Sessions apenas via o Profile, assim nao temos mais aqueles “erros de encontro” em cima de sessions com share entre apps.
Quero terminar logo uma versao nova stable da Fetus para liberar para API em PHP, talvez alguem ai queira usar Uprofile em sistemas PHP. =) E tenho varias ideias de projetos para usar o Uprofile. No caso, apenas dar um controle via web para ele ja’ vira uma “super-agenda” de contatos. Ja’ que nao temos limitacoes do que guardar no Uprofile.

