Restart Part 2: Loading…

No começo do ano passado eu soube que a Donuts tinha começado a operacionalizar uma série de novos gTLDs, entre eles, o .photography.

Num impulso eu comprei alguns domínios diferentes aproveitando o fato de, por conta do “.photography” ter sido recentemente lançado, vários nomes interessantes ainda estavam disponíveis e relativamente baratos.

Fiz o óbvio que foi segurar o meu nome (alfredmyers.photography). Os outros domínios podem ser vistos como uma reserva estratégica para garantir que eu tivesse bons nomes de domínio caso eu viesse a implementar algumas das idéias que eu tinha na cabeça.

Durante boa parte do ano passado eu trabalhei na pesquisa e coleta de material para um segundo projeto que ainda está em andamento e que será hospedado em um dos domínios que foram comprados na época.

Voltando ao alfredmyers.photography, eu decidi implementar o site usando a plataforma de portfólios do 500px. Não demorou muito, no entanto, pra eu perceber suas limitações:

  • Número limitado de templates, ou seja, as diferentes caras que podem ser dadas ao site;
  • Limitações quanto a customização dos templates, ou seja, até que ponto você pode mudar a cara do site depois de ter escolhido um dado template como ponto de partida;
  • Eco-sistema pequeno. O que põe em dúvida a viabilidade econômica e o consequente desenvolvimento contínuo da plataforma. Por exemplo, o braço de venda de prints e wall art do 500px será fechado no final deste ano.
  • Desempenho sofrível. Antes de fazermos um upgrade no plano de banda larga daqui de casa, o primeiro acesso à página inicial do meu site demorava em média 45 segundos para carregar. Neste meio tempo, o visitante era contemplado com nada além de uma espécie de ampulheta. Com boa parte das pessoas migrando sua navegação cada vez mais para dispositivos móveis usando 3G, etc, o desempenho do site era simplesmente inaceitável.

Depois de avaliar algumas alternativas e sendo o control-freak que sou, eu cheguei à “brilhante” conclusão de que deveria estudar os fundamentos de programação web moderna e fazer tudo do zero para ter controle total sobre a plataforma e seu desempenho. Eu já tinha conhecimento anterior de HTML e Javascript. Era só questão de eu me atualizar. Quão difícil a empreitada poderia ser?!? Mergulhei a cara na web e estudei todo o material disponibilizado pelo Google.

O problema é que construir o que eu tinha em mente era uma tarefa dantesca e toda vez que chegava a hora de botar a mão na massa, eu arrumava alguma outra coisa “mais importante” pra fazer. Acho que era o meu subconsciente me dizendo “Isso vai dar merda, Capitão!”.

A questão só foi resolvida recentemente quando, escutando um podcast durante uma corrida matinal, fiquei sabendo de algumas informações e características interessantes a respeito de uma plataforma que eu havia descartado prematuramente e que basicamente eu vinha ignorando até então.

Mas isso vai ficar para o próximo post…

Restart Part 1: Shutting Down

É provável que eu devesse ter pulado o post de ontem e ter deixado para postar hoje, mas a falta de tempo (por conta de uma reunião fora) conjugada com a ansiedade de postar alguma coisa e divulgar o novo endereço do blog fizeram com que eu me limitasse a postar a imagem de ontem – reproduzida aqui.

re·start verb rēˈstärt/ 1. start again. "the talks will restart in September" noun ˈrēstärt/ 1. a new start or beginning.

Desde o último post há pouco mais de 3 anos (vamos ignorar o de ontem que cá pra nós, não conta), muitas coisas aconteceram na minha vida: Em agosto de 2013 eu larguei o meu emprego e uma situação profissional bem estável e embarquei num ano sabático que acabou se extendendo e pra dizer a bem da verdade, ainda não está totalmente terminado – já que ainda estou tocando alguns projetos pessoais, que espero estar divulgando em breve.

Nesses pouco mais de 18 meses eu viajei um bocado pelo Brasil (Minas, Rio de Janeiro, Bahia, Maranhão), dei uma esticadinha pro Chile, mergulhei de cabeça na fotografia, entrei e saí de um projeto de app que parecia ser bastante promissor e tive inúmeras distrações – poucas ruins, muitas boas e outras ótimas 🙂

Se tem uma coisa que marcou este período foi o meu empenho, ora consciente, ora inconsciente, em assumir pouquíssimos compromissos com outras pessoas e comigo mesmo. Não faltaram mudanças de planos na última hora e na maior parte do tempo, eu fiz o que me deu na telha.

Embora isso possa parecer interessante para muitas pessoas, a verdade é que corre-se o risco de se tornar refém da própria vontade. E ser refém nunca é bom – mesmo quando o raptor é você mesmo.

Erro ao tentar atualizar o NuGet Package Manager

Ao tentar atualizar o Nuget esses dias eu vinha recebendo um erro. Analisando o log, via se que o problema estava relacionado assinatura digital do pacote.

clip_image001

O erro é um problema conhecido do NuGet no Visual Studio 2010 SP 1: http://docs.nuget.org/docs/reference/known-issues

Embora você possa solicitar um patch junto ao suporte da Microsoft usando as instruções encontradas em http://support.microsoft.com/kb/2581019, eu não atualizo extensões com uma frequência que justifique a instalação deste patch.

No próprio documento de problemas conhecidos estão listados os passos necessários que eu reproduzo aqui na ordem correta e em português para a sua conveniência.

  1. Abra o Visual Studio como administrador (Run As Administrator). Isto é necessário para poder desinstalar a versão atual do NuGet

  2. Desinstale o NuGet

  3. Reinicie o Visual Studio

  4. Abra o Extension Manager (Tools -> Extension Manager), vá em Online Gallery, faça uma busca por Nuget e instale-o.

HTH

 

Alfred Myers

Cannot obtain value of local or argument ‘variableName’ as it is not available at this instruction pointer, possibly because it has been optimized away

… onde variableName é o nome da variável local ou parâmetro cujo valor você deseja inspecionar.

 

 

Na palestra do sábado passado (19/Mai/2010) eu falei sobre o acesso ao código-fonte do .NET Framework.

Um dos problemas quando você dá step-into o código do .NET Framework é que muitas vezes os valores das variáveis locais e parâmetros não são exibidos.

Isto ocorre por conta de otimizações feitas durante a compilação JIT.

Shawn Buke, um dos responsáveis pela liberação do código do Framework, postou sobre como resolver isto no começo de 2008.

http://blogs.msdn.com/b/sburke/archive/2008/01/29/how-to-disable-optimizations-when-debugging-reference-source.aspx

 

Eu já tinha cruzado com este artigo e até twitei a respeito, mas os twits se “perdem” com o tempo. Por aqui vai ficar mais fácil de encontrar.

Estamos Contratando

Pessoal,

Temos vários projetos bacanas vindo por aí e para dar conta do recado, estamos contratando gente aqui para a ITGROUP.

Eu estou aqui desde setembro de 2006 e o que posso dizer é que o ambiente é bacana e o que não faltam são chances de trabalhar com coisas legais.

Se você se encaixa num dos perfís abaixo, mande um currículo para rh [at] itgroup.com.br.

Qualquer coisa manda uma Direct Message lá no Twitter em @AlfredMyers

 

– Analista de Sistemas .NET Jr

Buscamos profissionais dinâmicos, com paixão por tecnologia, facilidade de aprendizado e comunicação, com bons conhecimentos em programação, orientação a objetos, plataforma Microsoft .NET, Office e SQL Server.

Cursando a partir do segundo semestre de uma faculdade de tecnologia ou bacharelado na área, boa leitura em inglês e certificações Microsoft serão considerados diferenciais.

– DBA SQL Server Pleno

Buscamos profissionais dinâmicos, com facilidade de aprendizado e comunicação, com experiência em implementação da infraestrutura em alta disponibilidade, modelagem de dados relacional, tunning e operação de bancos de dados de missão crítica com altos volumes de dados e bons conhecimentos em modelagem multidimensional, ETL e soluções de BI com uso do Microsoft SQL Server e seus recursos avançados Analysis Services, Integration Services e Reporting Services.

Conhecimentos em desenvolvimento nas plataformas .NET, Office e SharePoint completam o perfil.

– Analista de Sistemas MSCRM

Buscamos profissionais com experiência em implantação do Microsoft Dynamics CRM 4.0, com conhecimento em configuração, parametrização e desenvolvimento de componentes customizados. Sólidos conhecimentos em programação, orientação a objetos, plataforma Microsoft .NET e SQL Server são primordiais, conhecimentos em metodologias de gestão de projetos e arquitetura são importantes e certificações Microsoft serão consideradas diferenciais. Dinamismo, facilidade de aprendizado e boa comunicação oral e escrita completam o perfil.

– Analista de Testes

Buscamos profissionais com experiência na elaboração de planejamentos de testes, realização de testes funcionais e homologação de sistemas. Conhecimentos em programação, plataforma Microsoft .NET e SQL Server, bem como em metodologias de gestão de projetos serão consideradas diferenciais. Dinamismo, facilidade de aprendizado e boa comunicação oral e escrita completam o perfil.

 

 

P.S: Ah… Também precisamos de analistas funcionais, mas eu não tenho o perfil necessário. Caso interesse, mande um e-mail para rh [at] itgroup.com.br pedindo detalhes.

APIs do Exchange Server

No decorrer dos anos foram criadas diversas APIs para acessar as funcionalidades do Exchange Server

Com o Exchange Server 2007, a Microsoft iniciou um trabalho forte de consolidação destas APIs e com isto diversas APIs deixaram de ser suportadas entre as versões 2003 e 2007 e outras deixaram de ser instaladas como parte do produto sendo disponibilizadas em download a parte (Microsoft Exchange Server MAPI Client and Collaboration Data Objects 1.2.1, por exemplo).

Com a transição do Exchange Server 2007 para 2010, as APIs foram consolidadas ainda mais. Vejam:

Exchange 2007 Exchange 2010 Mantido
Active Directory Services Interfaces (ADSI)   FALSO
CDOEXM Evaluation Criteria   FALSO
CDOSYS SMTP/NNTP Event Sinks   FALSO
CDOWF Evaluation Criteria   FALSO
Collaboration Data Objects for Exchange (CDOEX)   FALSO
Collaboration Data Objects for Windows 2000 (CDOSYS)   FALSO
Exchange Backup and Restore API   FALSO
Exchange OLE DB Provider (ExOLEDB)   FALSO
Exchange Rules   FALSO
  Exchange Server Protocols FALSO
Exchange Store Event Sinks   FALSO
Exchange Web Services Evaluation Criteria Exchange Web Services VERDADEIRO
Exchange Web Services Managed API 1.0 Exchange Web Services Managed API 1.0 VERDADEIRO
Exchange writer for the Windows Volume Shadow Copy Service Exchange Writers for Volume Shadow Copy Service VERDADEIRO
HTTP/Web Distributed Authoring and Versioning (WebDAV)   FALSO
Incremental Change Synchronization (ICS)   FALSO
Lightweight Directory Access Protocol (LDAP)   FALSO
Messaging Application Programming Interface (MAPI) Messaging API VERDADEIRO
Outlook Object Model (OOM) Microsoft Office Outlook Object Model VERDADEIRO
Outlook Web Access (OWA) Outlook Web App Customization VERDADEIRO
SMTP Event Sinks   FALSO
Transport Agents Transport Agents VERDADEIRO
Web Forms Evaluation Criteria   FALSO
WebDAV Notifications   FALSO
  Windows PowerShell FALSO
WMI Evaluation Criteria   FALSO

 

A grande aposta são nos Exchange Web Services e a sua contra-partida no lado do cliente, o EWS Managed API. Realmente é uma API muito promissora mais ainda faltam alguns recursos existentes no MAPI, como por exemplo, a habilidade de se criar propriedades nomeadas (ou estendidas na nomenclatura do EWS) para anexos.

Resoluções de 2009 – O resultado

No início do ano eu fiz um post sobre a minha resolução de praticar mais esporte em 2009:

“Em 2008 eu já vinha praticando moutain bike e caminhada(mais)/corrida(menos).

Em 2009 espero não passar tanto tempo sem praticar estes dois esportes e quem sabe arrumar alguma outra coisa pra fazer. “

Bom, o ano não acabou mas estamos no finalzinho e apesar de eu ter uns treinos de corrida planejados até o fim do mês, o que eu fizer até lá não vai mudar muito o quadro geral.

Em 2008 eu corri um total de 183,93Km de abril quando comecei a logar site até dezembro. Agora em 2009 eu já corri 496,68Km incluindo a corrida de 5Km de agora a pouco e tenho planejados mais 32Km até o final do mês. Pouco mais de 500Km num ano para quem era sedentário como eu não está nada mal.

 

image

Melhor ainda é saber que eu poderia ter corrido ainda mais se eu não tivesse estressado joelho, tornozelo e articulações em abril e maio quando corri 80Km em cada um dos dois meses. Isto e outras desculpas fizeram com que eu parasse em junho e fosse retomando devagar (por conta de várias outras desculpas).

 

image

Uma das desculpas que vale a pena mencionar é que em março eu comprei um XBOX. Correr depois de virar noite jogando definitivamente não dá certo.

Espero virar menos noites jogando e assim não ter desculpas para deixar de correr… Vamos ver se vou conseguir isto, já que já tenho encomendados Mordern Warfare 2 e Halo ODST que receberei em Janeiro… Vamos ver!

Mas voltando ao esporte: Esse negócio de registar as corridas no site da Nike e a possibilidade de você montar objetivos por lá é bem interessante porque te motiva a treinar com mais frequência. O problema é que se você for meio obsessivo como eu e não estabelecer metas razoáveis, você vai acabar deixando outros esportes de lado. Foi o que aconteceu com o mountain bike. Andei muito pouco esse ano. Acho que não cheguei a ir uma vez sequer à Serra do Japi. Pretendo retomar as pedaladas em 2010.

Sobre a prática de outros esportes:

Em julho comecei um curso de vela e arrais, que não cheguei a concluír. Pretendo retomar já em Janeiro.

Em outubro comecei a jogar futebol com o pessoal lá da ITGROUP. Uma vez por semana. Um pouco de esporte e muita diversão. Isso é praticamente certo continuar no ano que vem.

O resultado disto tudo é que perdi um bocado de barriga e a disposição melhorou muito. Muito bom!

EWS Managed API 1.0

O Exchange 2010 está sendo lançado hoje e com isto eles liberaram também a versão final do Exchange Web Services Managed API 1.0 que poderá ser rodado contra Exchange 2007 SP1 ou Exchange 2010.

O EWS é uma fachada de Web Services que foi liberado pela primeira vez com o Exchange 2007. O uso no lado do cliente era feito tipicamente através de um “Add Web Reference” da vida, mas a usabilidade não era lá essas coisas.

O EWS Managed API, é irmão “inteligente” do proxy que fornece uma API consistente e de boa usabilidade.

Caso tenham que conversar com o Exchange, sugiro que dêem uma olhada:

 

Documentação:

http://msdn.microsoft.com/en-us/library/dd633710.aspx

 

Download:

http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=c3342fb3-fbcc-4127-becf-872c746840e1