Posts de December, 2011

[Igor Sobreira] Book review: Being Geek

Thursday, December 29th, 2011

Published on: 28/12/2011 23:50h

I’ve finished reading this book, Being Geek, by Michael Lopp, an experienced engineering manager from Silicon Valley. And recommend it…

It’s a book about geeks professionalism, career. I liked the way the author exposes his ideas, he’s clear and pragmatic. Right in the second chapter there are these three questions I think it’s worth pointing out:

  1. Are you actively defining the technical direction for your product?
  2. Do you understand what you need to do in order to grow?
  3. Are you hitting your dates? Are you meeting your commitments? Are you doing what you say you’re going to do?

That’s it! That’s what you need to ask yourself every day. Those answers will make you realize if this job is being useful for you to archive your professional goal in your life.

Later in the book he talks about task management, to-do lists and so on. And a very interesting one he calls “The Trickle List”. This is not a simple to-do list for that day. It’s a list of tasks you do every day with a bigger goal in mind, in the future. If you want to be a better engineer, every day you may want to learn something, improve on something, read something. I suddenly realized I was missing this list…

Well, I liked the book. I was not very excited reading the first chapters. But as I continued reading it just got better and better. The author writes comfortably about our career, being an engineer or a manager. The book is full of good advices based on experience. Hiring process, remote working, giving presentations, etc.

By Igor Sobreira

[Igor Sobreira] Book review - Being Geek

Wednesday, December 28th, 2011

Book Being Geek

I’ve finished reading this book, Being Geek, by Michael Lopp, an experienced engineering manager from Silicon Valley. And recommend it…

It’s a book about geeks professionalism, career. I liked the way the author exposes his ideas, he’s clear and pragmatic. Right in the second chapter there are these three questions I think it’s worth pointing out:

  • Are you actively defining the technical direction for your product?
  • Do you understand what you need to do in order to grow?
  • Are you hitting your dates? Are you meeting your commitments? Are you doing what you say you’re going to do?

That’s it! That’s what you need to ask yourself every day. Those answers will make you realize if this job is being useful for you to archive your professional goal in your life.

Later in the book he talks about task management, to-do lists and so on. And a very interesting one he calls “The Trickle List”. This is not a simple to-do list for that day. It’s a list of tasks you do every day with a bigger goal in mind, in the future. If you want to be a better engineer, every day you may want to learn something, improve on something, read something. I suddenly realized I was missing this list…

Well, I liked the book. I was not very excited reading the first chapters. But as I continued reading it just got better and better. The author writes comfortably about our career, being an engineer or a manager. The book is full of good advices based on experience. Hiring process, remote working, giving presentations, etc.

[Igor Sobreira] Command line interface to FMS Admin

Monday, December 26th, 2011

Published on: 25/12/2011 13:29h

I’ve been working with Flash Media Server for the last 8 months now, and
one tool that really annoys me is the Administration Console. I miss a
command line interface to accomplish tasks like see all live streams, reload
an app, etc.

That’s why I’ve started the fms-admin-api. It’s a command line
client to Flash Media Server Administration API.
Since it’s written in ruby, it’s possible to use the ruby client class directly.
Use rubygems to install:


$ gem install fms-admin-api

The way it works is really simple. Here is an example: there is a reloadApp() method available
that accepts the arguments host, auser,
apswd and appInst. The command line interface just replaces
from camelCase syntax to underscore:


$ fmsapi reload_app –host=fms.example.com –auser=fms –apswd=secret –app_inst=live

There are improvements to be made
and help is welcome.

By Igor Sobreira

[Igor Sobreira] Command line interface to FMS Admin

Sunday, December 25th, 2011

I’ve been working with Flash Media Server for the last 8 months now, and one tool that really annoys me is the Administration Console. I miss a command line interface to accomplish tasks like see all live streams, reload an app, etc.

That’s why I’ve started the fms-admin-api. It’s a command line client to Flash Media Server Administration API. Since it’s written in ruby, it’s possible to use the ruby client class directly. Use rubygems to install:

$ gem install fms-admin-api

The way it works is really simple. Here is an example: there is a reloadApp() method available that accepts the arguments host, auser, apswd and appInst. The command line interface just replaces from camelCase syntax to underscore:

$ fmsapi reload_app --host=fms.example.com --auser=fms --apswd=secret --app_inst=live

There are improvements to be made and help is welcome.

[Igor Macaubas] iPhone 4S e a sua péssima bateria – como resolvi

Sunday, December 25th, 2011

No dia 15 de Dezembro as 23:00 horas, 1 hora antes da data oficial do lançamento do iPhone 4S no Brasil (16/12), lá estava eu com a minha mulher, na loja da Vivo do Barra Shopping, para o coquetel de lançamento do aparelho. Resolvi comprar o iPhone 4S para atualizar o iPhone da minha mulher, que ainda estava com um 3GS, e também porque eu não poderia ficar sem o novo aparelho :-P

Após enfrentar cerca de 3 horas de peregrinação, eu era o mais novo proprietário de um iPhone 4S de 32GB! E foi aí que o meu pesadelo começou: logo no primeiro dia, eu já estava extremamente incomodado com a performance da bateria. Mas tudo bem, primeiro dia com o telefone, é normal que a bateria quando nova tenha uma performance cerca de 40% inferior da sua performance após 3 cargas completas… enfim.

Mas o que eu esperava não aconteceu. Mesmo após 3 dias de uso, e 3 cargas completas, eu continuava experimentando uma performance horrível de bateria. Em média, cada hora em stand-by, sem uso algum do aparelho, me custava 10% de carga. Recorri aos forums da Apple, e descobri várias dicas interessantes, que conseguiram melhorar significativamente a vida da minha bateria. São elas:

Notification center: desative tudo que você não precisa

Desabilite todas as porcarias que você tem no seu notification center que não servem de nada. O widget de bolsa de valores é um bom exemplo: no Brasil é totalmente “para inglês ver”, pois não serve absolutamente para nada, a não ser que você seja o Eike Batista e tenha ações nas bolsas dos EUA. Deixei no meu notification center só as apps que eu realmente uso e quero receber notificações. Todas as demais levaram um off. Tentei não ficar muito paranóico, pois se você sair desabilitando tudo seu iPhone vai virar um iPod que liga. Deixei as notificações de Twitter, Facebook, Path, Instagram, todas ativadas. Só desliguei as que realmente não uso mesmo – por exemplo, para que o jogo InifityBlade2 precisa mandar uma notificação pra mim? Para nada! Sumi com ele.

notification-center

Deixei somente o que importa no notification center (App Settings, depois opção ‘Notifications’).

infinity-blade2

Desativei sem piedade as bobagens.

Location services: desative algumas coisas que você não precisa, mas não sabe.

Pelas pesquisas que fiz nos forums da Apple, do mesmo jeito que existem várias apps que usam notificações em vão, existem várias apps que usam Location Services em vão. E ficam sugando a sua bateria em vão também. Então, é bom desativar essas bobagens. (app Settings, opção ‘Location Services’):

Location-services-1

Desative os locations services das apps que você não precisa.

Mas o que faz a maior diferença mesmo é lá no final dessa tela, na opção de System Services. Nessa tela, pode desativar sem medo de ser feliz as seguintes opções:

- Diagnostic & Usage: para enviar suas coordenadas de localização quando um crash de alguma app ocorrer. Ou seja, para nada além de sugar sua bateria.

- Location Based iAds: para exibir anúncios do tipo ‘Solteiras procurando por uma noite quente no Rio de Janeiro’. Ou seja, para nada além de sugar sua bateria.

- Setting Time Zone: esse é até útil. Se você viajasse todos os dias para locais com fuso-horários diferentes. Ou seja, para nada além de sugar sua bateria. Esse aqui eu ainda ativo, quando viajo, para o iPhone ajustar o horário automaticamente. E uma vez o horário ajustado (não demora mais do que 5 minutos), vou lá e desativo de novo.

location-services-2

Siri: desative a função raise-to-speak

Também descobri que o Siri tem uma funcionalidade um tanto interessante: raise to speak. Essa funcionalidade permite que o Siri seja ativado pelo simples movimento de levar o iPhone à orelha. Para fazer isso, um sensor de proximidade, que utiliza infra-vermelho, é ativado toda vez que a tela acende. E esse cara parece ser o grande vilão da história. Desative a funcionalidade sem pena, ou desative o Siri como um todo se você não precisa dele.

siri

 Desative a função ‘raise to speak’

Notificações individuais das apps: desative as que você não precisa.

Essa é meio chatinha de se configurar. Vá na App Settings e vá de uma a uma nas configurações de todas as apps que você tem instaladas no seu iPhone. Procure por apps que são muito ‘fominhas’ por push notifications. A do Facebook é um bom exemplo: tem 10 eventos diferentes de notificações push. Isso consome uma bateria incrível. Desative tudo que você não precisa. Na app do Facebook, por exemplo, só deixei o Push ativo para Mensagens, Posts na minha Wall e Solicitações de Amizade. Todo o resto não é importante o suficiente para que eu receba uma notificação Push. Essa parte é chata porque você tem que ir de um por um, mas tenha em mente que por mais sutis que sejam, notificações push são intrusivas e interrompem você.

push-facebook

Desative todo o lixo de notificações que o Facebook tenta empurrar

Depois disso tudo…

… a vida útil da minha bateria voltou a ser como era na época do iPhone 4. Chego no final de um dia de uso moderado ainda com 50% da bateria. Num dia de uso intenso, 20%. E, não perco mais do que 5% de bateria numa noite de 10 horas (média de 0.5% de descarga por hora). Um bom indicador para saber o quão bem anda a sua bateria é indo lá na app Settings -> General -> Usage. Lá você vai saber à quanto tempo de uso (uso = tela acesa, não necessariamente navegando ou falando ao telefone) e a quanto tempo de standby você submeteu o seu aparelho. No momento em que eu escrevia esse artigo, estava com o seguinte cenário:

usage

51% de bateria restante, quase 20 horas após a última carga. Nada mal.

Algumas outras dicas para prolongar a vida útil da sua bateria:

- Não deixe muitos programas rodando em background. A maioria deles acaba com a sua bateria. O Twitter é um grande ladrão de bateria quando fica em background.

- Dê pelo menos um ciclo de carga completo por semana. Deixe sua bateria descarregar até o iPhone desligar. Use até o osso mesmo. Depois, plugue no carregador de parede (na tomada) e deixe carregar até os 100%, mas de preferência procure deixa-lo ligado pelo menos 2 horas (mesmo que ele atinja os 100% de carga antes desse tempo, deixe ele ligado um pouco mais). Se puder ser de um dia para o outro, melhor ainda.

- Deixe poucas contas de email e calendário configuradas. Aprenda a usar a funcionalidade de foward, e deixe no máximo 2 contas de email e calendário configuradas no seu iPhone. Mais do que isso e a sua bateria começará a ser sugada para manter tudo sincronizado. Também procure evitar usar contas exchange – vi relatos de que ele é muito mais ‘gastão’ do que as contas de Gmail, Hotmail e iCloud.

Particularmente, eu não gosto de desabilitar notificações push e nem reduzir demais as configurações de sincronismo. A mágica do iPhone está justamente na velocidade da coisa. Tenho amigos que configuram as contas de email para fetch manual, de 1 em 1 hora, e desabilitam absolutamente todas as notificações push. Acho isso exagero. Com certeza a bateria dele deve durar umas 3 ou 4 horas a mais do que a minha, mas na minha opinião o trade-off não vale à pena.

[Tiago Peczenyj] FFmpeg new version

Thursday, December 22nd, 2011

Changelog for 0.9 version.

Entries are sorted chronologically from oldest to youngest within each release, releases are sorted from youngest to oldest.

version 0.9:

- openal input device added
- boxblur filter added
- BWF muxer
- Flash Screen Video 2 decoder
- lavfi input device added
- added avconv, which is almost the same for now, except
for a few incompatible changes in the options, which will hopefully make them
easier to use. The changes are:
* The options placement is now strictly enforced! While in theory the
options for ffmpeg should be given in [input options] -i INPUT [output
options] OUTPUT order, in practice it was possible to give output options
before the -i and it mostly worked. Except when it didn’t – the
behavior was
a bit inconsistent. In avconv, it is not possible to mix input and output
options. All non-global options are reset after an input or
output filename.
* All per-file options are now truly per-file – they apply only to the next
input or output file and specifying different values for different files
will now work properly (notably -ss and -t options).
* All per-stream options are now truly per-stream – it is possible to
specify which stream(s) should a given option apply to. See the Stream
specifiers section in the avconv manual for details.
* In ffmpeg some options (like -newvideo/-newaudio/…) are irregular in the
sense that they’re specified after the output filename instead of before,
like all other options. In avconv this irregularity is removed,
all options
apply to the next input or output file.
* -newvideo/-newaudio/-newsubtitle options were removed. Not only were they
irregular and highly confusing, they were also redundant. In
avconv the -map
option will create new streams in the output file and map input streams to
them. E.g. avconv -i INPUT -map 0 OUTPUT will create an output stream for
each stream in the first input file.
* The -map option now has slightly different and more powerful syntax:
+ Colons (‘:’) are used to separate file index/stream type/stream index
instead of dots. Comma (‘,’) is used to separate the sync
stream instead
of colon.. This is done for consistency with other options.
+ It’s possible to specify stream type. E.g. -map 0:a:2 creates an
output stream from the third input audio stream.
+ Omitting the stream index now maps all the streams of the given type,
not just the first. E.g. -map 0:s creates output streams for all the
subtitle streams in the first input file.
+ Since -map can now match multiple streams, negative mappings were
introduced. Negative mappings disable some streams from an already
defined map. E.g. ‘-map 0 -map -0:a:1′ means ‘create output
streams for
all the stream in the first input file, except for the second audio
stream’.
* There is a new option -c (or -codec) for choosing the decoder/encoder to
use, which allows to precisely specify target stream(s) consistently with
other options. E.g. -c:v lib264 sets the codec for all video
streams, -c:a:0
libvorbis sets the codec for the first audio stream and -c copy copies all
the streams without reencoding. Old -vcodec/-acodec/-scodec
options are now
aliases to -c:v/a/s
* It is now possible to precisely specify which stream should an AVOption
apply to. E.g. -b:v:0 2M sets the bitrate for the first video
stream, while
-b:a 128k sets the bitrate for all audio streams. Note that the
old -ab 128k
syntax is deprecated and will stop working soon.
* -map_chapters now takes only an input file index and applies to the next
output file. This is consistent with how all the other options work.
* -map_metadata now takes only an input metadata specifier and applies to
the next output file. Output metadata specifier is now part of the option
name, similarly to the AVOptions/map/codec feature above.
* -metadata can now be used to set metadata on streams and chapters, e.g.
-metadata:s:1 language=eng sets the language of the first stream to ‘eng’.
This made -vlang/-alang/-slang options redundant, so they were removed.
* -qscale option now uses stream specifiers and applies to all streams, not
just video. I.e. plain -qscale number would now apply to all
streams. To get
the old behavior, use -qscale:v. Also there is now a shortcut -q
for -qscale
and -aq is now an alias for -q:a.
* -vbsf/-absf/-sbsf options were removed and replaced by a -bsf option which
uses stream specifiers. Use -bsf:v/a/s instead of the old options.
* -itsscale option now uses stream specifiers, so its argument is only the
scale parameter.
* -intra option was removed, use -g 0 for the same effect.
* -psnr option was removed, use -flags +psnr for the same effect.
* -vf option is now an alias to the new -filter option, which uses
stream specifiers.
* -vframes/-aframes/-dframes options are now aliases to the new
-frames option.
* -vtag/-atag/-stag options are now aliases to the new -tag option.
- XMV demuxer
- LOAS demuxer
- ashowinfo filter added
- Windows Media Image decoder
- amovie source added
- LATM muxer/demuxer
- Speex encoder via libspeex
- JSON output in ffprobe
- WTV muxer
- Optional C++ Support (needed for libstagefright)
- H.264 Decoding on Android via Stagefright
- Prores decoder
- BIN/XBIN/ADF/IDF text file decoder
- aconvert audio filter added
- audio support to lavfi input device added
- libcdio-paranoia input device for audio CD grabbing
- Apple ProRes decoder
- CELT in Ogg demuxing
- G.723.1 demuxer and decoder
- libmodplug support (–enable-libmodplug)
- VC-1 interlaced decoding
- libutvideo wrapper (–enable-libutvideo)
- aevalsrc audio source added
- Ut Video decoder
- Speex encoding via libspeex
- 4:2:2 H.264 decoding support
- 4:2:2 and 4:4:4 H.264 encoding with libx264
- Pulseaudio input device
- Prores encoder
- Video Decoder Acceleration (VDA) HWAccel module.
- replacement Indeo 3 decoder
- new ffmpeg option: -map_channel
- volume audio filter added
- earwax audio filter added
- libv4l2 support (–enable-libv4l2)
- TLS/SSL and HTTPS protocol support
- AVOptions API rewritten and documented
- most of CODEC_FLAG2_*, some CODEC_FLAG_* and many codec-specific fields in
AVCodecContext deprecated. Codec private options should be used instead.
- Properly working defaults in libx264 wrapper, support for native presets.
- Encrypted OMA files support
- Discworld II BMV decoding support
- VBLE Decoder
- OS X Video Decoder Acceleration (VDA) support
- compact and csv output in ffprobe
- pan audio filter
- IFF Amiga Continuous Bitmap (ACBM) decoder
- ass filter #meldels
- CRI ADX audio format demuxer
- Playstation Portable PMP format demuxer
- Microsoft Windows ICO demuxer
- life source
- PCM format support in OMA demuxer
- CLJR encoder
- new option: -report
- Dxtory capture format decoder
- cellauto source