Archivi categoria: Mobile

Sorpresa di fine estate

TIM mi ha appena mandato questo messaggio:

nuova_tariffa.png

Ma che bella sorpresa! Come mai questo aumento? Che ho fatto di male? Forse perchè utilizzo un iPhone che non ho acquistato da loro? Si, ok, ma loro che ne sanno che io ho un iPhone? Lo sanno, lo sanno! Anzi, si accorgono di ogni volta che sposto la loro SIM da un telefono all’altro, ad esempio da un iPhone 2G:

tim_profilo_iphone2g_small.png

ad uno 3G:

tim_profilo_iphone3g_small.png

Tentativo di farmi cambiare tariffa? Ma perchè? Che ho fatto di male? Sono cliente da tanto tempo! Poi non lamentatevi se la gente cambia operatore…

Online le slide del talk Playing with Mobile 2.0

Ecco le slide dell’intervento che io e Roberto Fraboni abbiamo tenuto a Frontiers of Interaction IV:

Il video dell’intervento è disponibile qui: http://frontiers.dolmedia.tv/

Speriamo di riuscire a pubblicare a breve il video demo di Graviter, il "Twitter by gestures", e il sorgente per iPhone OS e i Sony-Ericsson JP-8 dotati di accelerometro.

E qui i relatori in tutta la loro bellezza:

robertofraboni_stefanosanna_2.jpg

Frontiers of Interaction IV


A poco più di un anno di distanza dalla precedente edizione, domani si svolgerà Frontiers of Interaction IV, una delle più interessanti conferenze italiane e senza dubbio l’unica interamente dedicata all’interaction design e alle nuove tecnologie in questo ambito.

frontiere4_qvga.png

Brillantemente ideata e condotta da Matteo Penzo e Leandro Agrò, la quarta edizione delle Frontiere si svolgerà a Torino presso la Fondazione Sandretto Re Rebaudengo, Museo di Arte Contemporanea, Via Modane 16,
dalle 8.30 alle 17.30.

Il programma è decisamente succoso (occhio ai keynote!):

08:30 Apertura
09:00 Music, Second Life & TV!
09:30 Frontiers of Interaction showreel
09:35 Benvenuto da Leeander, Matt & Flavio
09:45 Introducing Frontiers of Interaction IV, JEFFREY SCHNAPP
09:50 Mobile and the Internet Mutation, ASHLEY BENIGNO
10:20 Digital Yet Invisible: Making Ambient Informatics More Explicit to People, NICOLAS NOVA
10:40 Welcome to TED, BRUNO GIUSSANI (video)
10:50 Break
11:20 Talking about OPENSPIME, DAVID ORBAN & THE BAND
11:50 From Science Fiction to Reality (KEYNOTE, 45/60min), BRUCE STERLING

13:00 Lunch (Tramezzino.it)
14:20 A little BEAT Live Performance KORINAMI
14:30 Mobile Open Source FABRIZIO CAPOBIANCO (Video from Redwood City)
14:40 Playing with MOBILE 2.0, STEFANO SANNA & ROBERTO FRABONI
15:00 Mobile natural interaction, LUCA MASCARO
15:20 Frontiers and Boundaries: The Business of the SocioTechnical, ELIZABETH CHURCHILL (KEYNOTE, 45min)

16:20 Break
16:40 Smartmobs: vision about the future of mobility and pervasive techs, HOWARD RHEINGOLD (Video Interview with Robin Good)
16:50 “Personal embedded: uno spettro aperto per la comunicazione degli oggetti”
ROBERTO BORRI
17:10 The Future of Workstations in a mobile world!, NICO SICA
17:30 Frontiers of Interaction IV: Producer’s Message, LEEANDER, MATTEO, FLAVIO
17:40 Thank you! End.

L’intero evento sarà trasmesso in diretta su web a questo indirizzo:

http://frontiers.dolmedia.tv/

Symbian diventa open?


Mentre Google prepara lo sbarco del suo Android(e) e Apple affila le unghie del proprio felino mobile, il resto del mondo mobile sembra in attesa, senza particolari sussulti. Vincerà l’approccio chiuso dell’iPhone o quello aperto di Android e OpenMoko? E in questo contesto, che fine faranno le soluzioni proprietarie quali NokiaOS e MotorolaOS? E quelle pi&augrave; diffuse come BlackBerry e Windows Mobile?

Manca un nome: Symbian. Il player piu` importante nel mercato degli smartphone (oltre 100 milioni di terminali venduti) si appresta a diventare open o, quantomeno, royalty-free per i membri della Symbian Foundation. Questi gli obiettivi della fondazione:

The demand for converged mobile devices is accelerating. By 2010 we expect four billion people to have joined the global mobile conversation. For many of these people, their mobile will be their first Internet experience, not just their first camera, music player or phone.

Open software is the basic building block for delivering this future.

With this in mind, industry leaders are coming together to establish Symbian Foundation, to bring to life a shared vision and to create the most proven, open and complete mobile software platform – available for free. To achieve this, the foundation will unify Symbian, S60, UIQ and
MOAP(S) software to create an unparalleled open software platform for converged mobile devices, enabling the whole mobile ecosystem to accelerate innovation.

Una mossa per sfruttare l’enorme base di device e sviluppatori di Symbian e contrastare i nuovi sfidanti? Sarà open (in qualsiasi veste) il runtime Java ME fornito con il sistema operativo?

Intervista su JavaStaff


È con un pizzico di emozione che leggo oggi la mia intervista sul portale JavaStaff, uno dei siti storici italiani dedicati alla programmazione Java. Facendo questa intervista, ho scoperto che esistono due livelli di difficoltà nel rispondere alle domande: trovare una via di fuga all’arguzia dell’ottimoFederico Paparoni, che fa domande solo apparentemente innocue, e trovare una foto con espressione intelligente da mettere accanto al testo! 😀

Python for the S60 Platform eLearning


A coloro che vogliono imparare la programmazione Python su Series 60, segnalo un tutorial appena pubblicato da Nokia sul portale dedicato agli sviluppatori:

Python for the S60 Platform eLearning

Altri riferimenti utili:

Infine, il mio progettino stupido di Blackout Alarm via SMS (da cui, però c’è ben poco da imparare).

Sun Technology Day a Cagliari


Dopo Roma, Napoli e Pisa, arriva anche sull’Isola il Sun Technology Day, un evento seminariale gratuito organizzato da Sun Microsystems e le università italiane. Grazie alla collaborazione e all’ospitalità dell’Università degli Studi di Cagliari, venerdi’ 13 giugno si svolgerà al Dipartimento di Ingegneria Elettrica ed Elettronica un pomeriggio di seminari su Java, Solaris, MySQL e Sun SPOT.

l0_techday.jpg

Questa l’agenda:

15:00 Sun Academic Initiative: welcome Università di Cagliari
15:15 Qualità del SW – jMetrics: come controllare l’andamento di un progetto SW con misure oggettive (Giulio Concas DIEE/FlossLab)
16:00 Solaris 10: Solaris, OpenSolaris e Progetto Indiana
Paghi zero, prendi 2: ZFS filesystem e volume manager
Dimostrazione interattiva: clonazione Solaris Containers e ZFS tramite chiavette USB
Domenico Minchella, Sun Solaris Ambassador
16:45 Sun SPOT (Small Programmable Object Technology)
Come si utilizzano, Concorso Sun SPOTs Projects
Stefano Sanna, JUG Sardegna
17:30 Java e Spring: tutte le novità per il 2008
Fabrizio Gianneschi Massimiliano Dessì, JUG Sardegna
18:15 Programmazione creativa con MySQL: come programmare il database indipendentemente dal linguaggio di programmazione scelto
Giuseppe Maxia, MySQL Community Leader
19:00 Ask the expert bar

Pagina ufficiale dell’evento:

http://it.sun.com/sunnews/events/2008/mar/techday/cagliari.jsp

da cui è possibile scaricare l’agenda del pomeriggio.

JARD: primo contatto!


Il progetto è ancora a livello troppo embrionale perché possa essere pubblicato, però comincia a prendere forma. Si chiama JARD, "Java ME controller for Arduino Bluetooth", una MIDlet che consente il controllo di Arduino Bluetooth attraverso un cellulare.

jard_pre1_1.png

L’idea è di realizzare una doppia interfaccia verso Arduino: una generica, che consenta di controllare separatamente gli I/O analogici e digitali (realizzando così una specie di telecomando), ed una specializzata, verticalizzata per applicazioni, ad esempio, il controllo di un display LCD o di un motore. L’obiettivo è incoraggiare l’utilizzo del telefono cellulare nelle applicazioni basate su Arduino, senza che sia necessario avere competenze specifiche di programmazione Java ME (o Python S60, o C++ o quello che si vuole).

jard_pre1_5.png

Il video che segue mostra l’uso di JARD per il controllo di un display tramite Arduino Bluetooth. Un esempio di applicazione, opprtunamente ingegnerizzata, potrebbe essere quella di un Post-It digitale da attaccare ad un mobile o ad un elettrodomestico e sul quale lasciare un appunto che chiunque potrà leggere (anche senza cellulare). Dal display LCD ai sistemi di textlight o di visualizzazione su grandi superfici il passo è breve…

PyS60 blackout alarm


(english translation follows – segue testo in inglese )

Ci sono applicazioni che richiedono un controllo costante dello stato della linea elettrica, per segnalare eventuali interruzioni. Può trattarsi di sistemi di ricarica per l’industria o, più semplicemente, della linea elettrica domestica dei nonni dai quali correre in aiuto in caso di blackout.

È davvero semplice realizzare un "allarme blackout" via SMS utilizzando un vecchio terminale Series 60 e Python. Io ho utilizzato un glorioso Nokia 6630, che appartiene alla Series 60 2nd Edition Feature Pack 2.

6630_pyblackout.jpg

Prima di tutto è necessario installare il runtime PyS60 per il terminale in uso. I file di installazione aggiornati si possono scaricare dalla pagina del progetto su sourceforge, mentre consiglio un ottimo tutorial sull’installazione del runtime e sulla programmazione Python su Series 60 scritto da Jurgen Scheible.

Il vantaggio nell’utilizzare un Series 60 2nd Edition rispetto ad uno più recente appartenente alla 3rd Edition è nella maggiore facilità di installazione degli script. Mentre nella terza edizione occorre creare una cartella "Python" della memory card e copiarvi gli script all’interno utilizzando OBEX FTP (purtroppo non supportato nativamente dai driver Bluetooth di Windows XP), il runtime della 2nd Edition consente di inviare gli script via OBEX Push e di installarli direttamente dalla message box.

Un vecchio terminale 2nd Edition con il suo caricatore, Python for S60 e poche linee di codice sono sufficienti a creare questa applicazione. L’idea è banale: il telefono è connesso al caricabatterie, che a sua volta è connesso alla rete elettrica domenistica; poichè via software è possibile sapere lo stato del caricatore (connesso, non connesso, in carica, scarico…), se quest’ultimo appare disconnesso (ovvero la batteria non è mantenuta in carica) significa che "manca la corrente" e dunque c’è un blackout.

Python consente di scrivere in poche righe questa applicazione: lo script comincia chiedendo all’utente il numero di telefono el destinatario del messaggio d’allarme, dunque provvede a controllare lo stato del charger ogni 10 secondi. Non appena il caricatore risulta non connesso, l’applicazione manda un SMS al numero di telefono indicato all’inizio. Finito!

Prima di poter eseguire il codice sul terminale, è necessario installare la libreria sysagent, che permette di accedere ad alcune funzioni a basso livello dell’hardware e del sistema operativo. Occorre inoltre installare lo script esysagent come libreria; questo script fornisce le costanti numeriche utilizzate da sysagent.

È possibile scaricare questi due file dal sito Cyke64 (link diretti: sysagentesysagent). Su questo interessante sito potete trovare anche uno script d’esempio che mostra come utilizzare le funzioni di sysagent.

L’installazione può avvenire trasferendo via Bluetooth i due file sul telefono e selezionando "Install as lib" quando richiesto:

sysagent_py.png

A questo punto il runtime PyS60 possiede tutto ciò che serve a fare questo allarme blackout:


import e32, messaging, appuifw
import sysagent, esysagent

recipient = appuifw.query(u"Recipient:", "text")

print "Checking power line..."

while True:
    print "Sleeping..."
    e32.ao_sleep(10)
    print "Checking status"
    if sysagent.charger_status() != esysagent.ESAChargerConnected:
        print "Powerline is down!"
        messaging.sms_send(recipient, u"Powerline is down!")
        break

print "Bye bye..."

Lo script comincia importando alcuni moduli: e32 (per la gestione dei thread), messaging (per l’invio del messaggio d’allarme), appuifw (per visualizzare una popup) e la coppia sysagent-esysagent (per leggere lo stato del caricatoe). La prima istruzione visualizza la popup dove digitare il numero del destinatario::


recipient = appuifw.query(u"Recipient:", "text")

pyblackout_recipient.png

Un ciclo while() infinito controlla ogni 10 secondi lo stato del caricatore. In realta’ il ciclo parte aspettando 10 secondi prima di fare il controllo, dando cosi’ il tempo di connettere il caricatore al cellulare e alla linea elettrica. Scaduta la sleep(), viene invocata la funzione sysagent.charger_status(), che restituisce lo stato del caricatore (connected, disconnected, not charging). Se il caricatore non e’ connesso:


sysagent.charger_status() != esysagent.ESAChargerConnected

lo script invia il messaggio. That’s all!

pyblackout_start.png

There are some applications which require to verify powerline status and to report any power down event. It could be a industrial recharging system and, simpler, the domestic line of your grandparents (that may get in panic in case of blackout).

It is very easy to build an SMS-based "blackout alarm system" using an old Series 60 device and Python. I used a Nokia 6630, which belongs to Series 60 2nd Edition Feature Pack 2.

6630_pyblackout.jpg

First of all you need to get and install the PyS60 runtime tailored for your device. You can find all files at sourceforge and get read detailed installation instructions at Jurgen Scheible’s tutorial. Main advantage of 2nd Edition compared to the 3rd Edition is the easier installation process of Python scripts. While on the latter you have to create a "Python" forlder on memory card and trasfer files using OBEX FTP, the 2nd Edition lets you install applications simply (OBEX) pushing scripts to the messaging box.

An old 2nd Edition device with its charger, Python for S60 and a few lines of code are enough to build a (very) simple blackout alarm system. The idea is simple. The phone is connected to its charger, which is connected to powerline: if the charger seems to be disconnected (the battery is not charging), it means that powerline is down and the phone has to send an alarm message.

Python code is straightforward: it starts querying the telephone number to receive alarm messages, then checks the charger status every 10 seconds. When the charger status is not connected, it sends an SMS to the telephone number previously specified. That’s all!

Before writing the code, you need to install the sysagent library, which provides interface to some lowlevel hw & os routines. You have also to install the esysagent script, which defines names for numeric constants used by sysagent.

You can download these files from Cyke64 web site (direct links: sysagentesysagent). On this site, you can find also a sample script that shows how to use sysagent routines.

You can install both by simply pushing them via Bluetooth and clicking on "Install as lib" when prompted:

sysagent_py.png

Now the PyS60 runtime has all the stuff required to read charger status. Here’s the code:


import e32, messaging, appuifw
import sysagent, esysagent

recipient = appuifw.query(u"Recipient:", "text")

print "Checking power line..."

while True:
    print "Sleeping..."
    e32.ao_sleep(10)
    print "Checking status"
    if sysagent.charger_status() != esysagent.ESAChargerConnected:
        print "Powerline is down!"
        messaging.sms_send(recipient, u"Powerline is down!")
        break

print "Bye bye..."

The application stars importing some modules: e32 (for thread sleeping), messaging (for sending alarm messages), appuifw (to display the initial query popup) and sysagent-esysagent pair (to read charger status). The first instruction displays a popup where to type the phone number receiving alarm messages:


recipient = appuifw.query(u"Recipient:", "text")

pyblackout_recipient.png

An infinite while block checks every 10 seconds the status of powerline. The cycle starts pausing the application for 10 seconds (you have time to connect the handset to the charger, if it is still untethered). Then, it invokes the sysagent.charger_status() method, which returns the status of charger (connected, disconnected, not charging). If the charger appears not to be connected (sysagent.charger_status() != esysagent.ESAChargerConnected), the script sends a message to the recipient provided at startup.

pyblackout_start.png