GoKart Telemetry with Microsoft Band

image

 

As a sportsman, I always liked to monitor the sports I practice. Once time, I used a cell phone attached to my arm to monitor how much I ran a soccer match. Then I started using the Nike Fuelband that has a very good gamification system and I used it for almost two years to monitor my workouts. My bike tours also always been a fun where my phone was attached to the bike and this way tracking my ride on the streets. In this case in particular I liked to make “drawings” through the city streets as you can see in the images below (more pictures on my behance)

like spaceneedle cactus

Like at Manaus/Amazon – Space Needle at Seattle/EUA – Cactus at Guadalajara/MEX

When Microsoft released Microsoft Band I got really excited, especially because it is not a product in the same smartwatches line that other companies were adopting but a product in the fitness line helping to monitor the health and also serving as notifications of what happens in my mobile phone. Microsoft Band has several interesting sensors as: Heartbeat, ultra-violet rays, skin temperature, GPS, accelerometer, microphone and others.

msband

The SDK (Software Develpoment Kit) for the Band was released in February/2015 and I, as a mobile developer passionate about sports, could not fail to make an app for the Band. In this year of 2015 I am participating in the CDC Kart Cup and for the second race of the championship I made an application for my Windows Phone that communicates with the Band, the goal of app was:

1) notify the driver with the lap time info
2) notify the driver with the maximum heart rate that it had during the race and an average heart rate as well.
3) notify the driver with the maximum skin temperature and skin temperature average (not important to the case, but only to explore the sensor)
4) Record the GPS data throughout the race in order to calculate speed, position on the track and gravitational force. also known as G-Force

By using the SDK,  I realized that the system is quite simple. Developers must not develop an application that runs in the Band, but develop an application for Windows Phone (or Android or iOS because the SDK also covers other mobile platforms). A mobile application communicates with the Band for 3 summary features:

1) Create/Remove Tiles in the Band
2) Read sensors from the Band
3) Send notifications and messages to the Band

In the case of Kart app, I made an app that reads the heartbeat sensor and skin temperature sensor from the Band. The GPS coordinates are read from the phone itself. Although the Band have a GPS sensor, it does not expose to the developer the ability to get the GPS coordinates. This is a very logical reason: all current smartphone also features GPS and most likely the cell and the Band will be with the person at the same time, ie, at the same GPS position.

The app then monitors the above data and sends notifications to the Band so informing the driver of the lap time, heart rate and skin temperature.

The source code of the app is available in my GitHub account. Take a look there!

The most important information: the lap time, is calculated by a GPS position I set in the phone app (attached in my arm). The GPS point I set after qualify lap and before start the race. The app checkpoint on the track is not the same official checkpoint track system, since the official checkpoint is at the finish line and the application checkpoint ended up being the end of the last curve before the finish line

As time is a very important information in a race, I did a comparison of the times calculated by the application and the official time of Kart track. Below is a comparison:

Lap     Official Time     App Time         Diff
1              1:06.12              1:06.26         +00.24
2              1:06.82              1:07.82         +01.00
3              1:11.70              1:10.58         -01.12
4              1:06.44              1:07.45         +01.01
5              1:05.86              1:06.06         +00.20
6              1:08.01              1:08.09         +00.08  (closer)
7              1:05.88              1:06.12         +00.24
8              1:06.01              1:07.18         +01.17
9              1:07.80              1:07.33         -00.47
10            1:06.23              1:06.53         +00.30
11            1:07.54              1:08.04         +00.50
12            1:06.73              1:06.33         -00.40
13            1:05.98              1:06.11         +00.13
14            1:06.76              1:06.31         -00.45
15            1:05.74              1:08.53         +02.79 (further)
16            1:05.72              1:05.10         -00.62

If we get out the closer time and the further time from table above and calculate an average, we have a standard difference of 0.56 seconds. Then you decide: the 0.56 seconds is a satisfactory difference? In my opinion is a reference time, which helps the driver to know if that curve slightly closed or an increase on zebra worsened or improved the lap time. Therefore for me it was worth it to know times.

With a GoPro camera attached to my helmet I recorded the whole race where you can see me being notified by Band of lap times. The video is edited with a visual layer where you can also view the speed data, heart rate and temperature of my skin, and a nice graph showing the G-Force and kart track position.

Abstract video version on channel9

FULL RACE version on youtube: https://www.youtube.com/watch?v=5RvvSJ21L9Y

The app developed recorded all the GPS positions every 1 second in a GPX file format. This file format is used in sports applications such as Sports Tracker and stores not only the GPS positions as well as heart rate and temperature. Once saved the file on the phone, I added a function in the application to connect on my personal OndeDrive and upload there, that way then I could download the .GPX file on my computer.

To make the visual layer in the video showing the Band, the track and the G-Force, I used a software called Dashware whose company was recently acquired by GoPro and made the software free, anyone can download and use the software freely.

The Dashware offers various gauges, which are visual components, but, of course, there was no gauge with the look of the band, so I created one :)! If someone else wants to use the component can download it here: Microsoft Band

#KeepCoding
@marlonluz
I empower developers to build awesome apps

 

 

turma

Devoxx4Kids Brazil

turma

 

O Devoxx4Kids é um evento onde o foco é mostrar para crianças e adolescentes que computador pode ser mais do que redes sociais e vídeos. A idéia do evento é despertar o interesse nesse público em usar o computador para construir coisas, seja um jogo, um robô, cenários virtuais, etc. Já é sabido também que faltam programadores no mercado atual de desenvolvimento de software, nesse sentido eventos como esse ajudam a despertar o interesse nas crianças nesse ramo, afinal nenhuma criança, infelizmente, diz que quer ser “programador” quando crescer.😦 ! O evento teve vários workshops, entre eles: Scratch, Robótica com Arduino, Minecraft, Freenfoot, Google Coder e Microsoft Kodu. Acessem o SITE para saber mais

A Microsoft apoiou o evento e eu e o meu colega Fabricio Catae preparamos um Workshop de Kodu Game Lab. Nessa ferramenta é  possível criar cenários 3D rapidamente, editando um mundo e colocando KODUs para interagir com esse cenário, a programação dos KODUs são simples e basta usar o mouse para dizer basicamente QUANDO acontecer algo FAZ isso. Isso é bom porque desperta nas crianças essa lógica tão excencial na programação.

Costumo dizer que numa sala de aula, o professor/instrutor é a pessoa que mais aprende e dessa vez não foi diferente. As crianças deram um cansaço gigante no Fabrício e em mim, mas valeu a pena depois eles virem tirar fotos com a gente e também ver os pais deles felizes com o que eles tinham construído no computador.

No vídeo está uma compilação do que foi o evento.

#KeepCoding

 

GAP de Apps Globais no Windows Phone

Muita gente fala que Windows Phone não tem apps, mas se perguntarem para as pessoas qual é esse GAP de Apps, muitos não sabem responder. Sei que um post mostrando o GAP de Apps para Windows Phone vindo da minha parte, um evangelista da própria MSFT, pode parecer meio louco. Mas gosto sempre de passar para os desenvolvedores qual é a real situação do mercado e mostrar que empregados da MSFT não vivem alienados achando que tudo na MSFT é ótimo. Semana passada fiz uma lista de 10 Apps Globais que eu entendo ter um GAP, ou seja, uma falha ou uma desvantagem sobre as plataformas mobile concorrentes. Segue abaixo a lista.

  • Instagram: Ainda em verão Beta no Windows Phone, não teve nenhuma atualização depois que foi lançado. Existe um bug onde se vc tirar a foto com o celular em pé, vc não consegue postar a foto pela app Instagram Beta pois a foto sempre sai de lado dentro do app, isso é um bug que acontece sempre. Já um item de design na app é a tela de escolha de álbuns de fotos, essa tela é COMPLETAMENTE fora dos padrões WP. Lista com fontes pequeníssimas dificílimas de clicar
  • Snap Chat: Tem apps de terceiros e não oficiais com o 6snap do famoso Rudy Huyn, mas não tem a versão oficial do aplicativo na loja. Entendo ser um GAP forte, pois os adolescentes gostam muito desse aplicativo
  • Tinder: Embora tenha as alternativas: 6tin do Rudy e Timber. Também não tem a versão oficial do aplicativo
  • Candy Crash Soda: Acabou de sair o Candy Crush Saga pra Windows Phone, mas infelizmente é a versão antiga! A nova versão (que o próprio candy crush faz propaganda em tudo quanto é lugar) não tem pra Windows Phone. Ou seja, isso coloca fricção para venda de WPs para mulheres que são o principal público do jogo
  • Foursquare: essa app se dividiu em 2: o SWARM e o FOURQUARE. O swarm é para fazer check-ins (que antes os usuarios usavam o foursquare pra isso) e o Foursquare virou uma aplicativo de recomendação. O problema é que em outras plataformas o foursquare recomenda através de notificações simplesmente quando vc está andando pela rua, se eu passar na frente de algum lugar ele solta uma notificação e me recomenda de acordo com as minhas preferencias. Já na app para WP essas notificações não acontecem😦
  • Linkedin: no app para WP não dá pra colocar atualizações de timeline com fotos/imagens, apenas texto! Na versão Android é possível anexar fotos nos updates, mas no WP isso não é possível!
  • WhatsApp: anexar vídeo já existente do celular era uma feature que não tinha, mas adicionaram! o problema é que qualquer vídeo que se faça com a câmera do celular dá mais do que 16  megas obviamente. Mas o whats app só manda os primeiros 16 megas de qualquer vídeo que já está no celular (aproximadamente 15 segundos de vídeo apenas). O certo seria a app fazer um downscale pra caber todo o vídeo. Entretanto vídeos gravados por de dentro do whatsapp são permitidos mais que 15 segundos
  • Trip Case: É um aplicativo de gerenciamento de viagens que tem crescido muito. A própria agencia de viagens da MSFT usa agora o Trip Case para termos as informações de viagem. Entretanto não existe a app Trip Case para WP, apenas pra Android e para iOS.
  • Plants vs. Zombies 2: Não tem pra WP
  • Dropbox: É concorrente direto do OneDrive, mas não tem a app oficial e isso é atrito para entrar para a plataforma (como alternativa tem apps como CloudSix do Rudy)

Bom, é isso! essa é um situação resumida do que eu entendo ser um GAP de apps globais para Windows Phone. Desenvolvedores como o Rudy Huyn se aproveitam desse GAP e lançam suas próprias apps não oficiais dos aplicativos ganhando assim dinheiro com publicidade (banners dentro das apps). Para os desenvolvedores independentes fazer apps como Rudy faz é um negócio bem lucrativo, oportunidade para ganhar dinheiro e fama.

 

IMPORTANTE ressaltar também que a MSFT sabe desses GAPs e trabalha arduamente junto com as empresas para cobrir esses GAPs. A MSFT oferece suporte técnico para o desenvolvimento e porte dos aplicativos, além de oferecer ferramentas também. Entretanto algumas empresas pedem dinheiro (E MUITO) para portar a app para plataformas Windows. Tudo é analisado caso a caso, mas em geral a MSFT não tem interesse em pagar pelo porte da App, pois isso não alimenta saudavelmente o ecossistema

Internet of Bananas

Hackathon é aquele momento que colocamos em prática as nossas idéias mais malucas. E não foi diferente no Hackathon de Windows 10 que eu e meu colega Caio Chaves, também evangelista da Microsoft, participamos! O Hackathon foi no hotel Eden Rock em Miami Beach, um mega hotel, super xique! a sala do hackathon foi no andar PentHouse do hotel! TOP TOP TOP! #HackathonOstentação

A solução que eu e o Caio fizemos foi um jogo colaborativo, onde um jogador controla um macaco através de 2 bananas! isso mesmo, bastanto encostar nas bananas você desloca o macaco para a direita ou para esquerda. o objetivo e fazer o macaco coletar as bananas que estao caindo. As bananas são jogadas por outros jogadores que participam do jogo, podendo ter N jogadores jogando bananas num mesmo jogo! quanto mais jogadores, mas dificil fica de coletar todas as bananas!

Tecnicamente falando a solução é composta por 3 partes:

– Aplicativo Windows 8 que controla o macaco através de bananas fisicas

– Aplicativo Universal App que joga as bananas para dentro do jogo do outro aplicativo (Windows 8 acima)

– Website no Azure com ASP.net e SignalR para fazer a comunicação em tempo REAL!

o resultado foi que ganhamos de prêmio um Microsoft Band e uma mochila cada um!

 

 

Unity Porting Lab

WP_20141125_003

Mais uma vez  a Universidade Anhembi Morumbi cediou um evento da Microsoft, dessa vez em parceria com a Unity fizemos o “Unity Porting Lab” onde desenvolvedores de jogos levariam seus jogos já desenvolvidos em outras plataformas para portar os jogos para Windows Phone e Windows 8. Foram portados jogos com muito boa qualidade, realmente fiquei impressionado com a qualidade de vários jogos. Todos os desenvolvedores que portaram seu jogo para plataforma Windows Phone ganharam um Lumia 830 como prêmio, não foi concurso, portou o jogo, ganhou o telefone. O evento contou com o Jay, evangelista da Unity, além dos evangelistas da Microsoft: Gafa, Caio, Daibert e eu!

As fotos do evento vocês pode ver aqui: http://bit.ly/125bO94

O que mais me chamou a atenção no evento foi um menino de 13 anos, o Pedro Henrique, que estava no evento com 4 jogos em Unity que já tinha publicado os jogos na plataforma Android e estava ali para portar para os 4 jogos para Windows Phone. Esse menino passou por um transplante de fígado aos 12 anos e durante o período de recuperação da cirurgia ele simplesmente aprendeu a PROGRAMAR!!! Sozinho aprendeu Delphi, Java e Unity. Gravei um DevChat com ele. O aúdio e o vídeo estão aqui embaixo.

Startup Weekend Florianópolis Mobile

WP_20141115_009

Nos dias 14,15 e 16 de novembro aconteceu em Florianópolis o Startup Weekend, um evento muito focado em criação de novos negócios no modelo de startup em apenas 1 final de semana. A vertical desse evento foi focada em Mobile e eu recebi um convite para participar como Mentor das equipes. Fui então para a ilha da magia (como é conhecida Florianópolis) para mentorar as equipes. Foi minha primeira vez num startup weekend, já costumo mentorar startups afiliadas ao programa BizSpark da Microsoft, mas nunca tinha participado de um startup weekend. Gostei D+ do evento. A idéia foi criar novos negócios baseados em aplicativos mobile. Como mentor enchi as equipes de perguntas para questionar os modelos de negócio, a forma de aprendizado e fazendo eles refletir e aprender bastante (que é o mais importante numa startup: APRENDER) e também energizei bastante as equipes, foi muito interessante ver algumas equipes meio down e depois de algumas perguntinhas fazer eles mudarem de humor drasticamente ficando energizados e correndo atrás do modelo de negócio ideal. Gostei bastante do networking, conheci startupeiros locais de Florianópolis e outros que vieram do Brasil inteiro para participar.

Fiz algumas fotos do evento que vocês podem olhar aqui: http://bit.ly/1y8FXRl

E também montei 2 vídeo sobre o evento:

– um curto de 3 minutos mostrando o evento em geral: https://www.youtube.com/watch?v=UygGL5RLLOs

– e outro com os pitches completos das 10 equipes: http://youtu.be/JH6Fn68gqcA

 

#keepCoding