Programmatore iOS / Android cercasi

La mia azienda sta cercando dei programmatori con esperienza in Objective-C, Swift e Java per lo sviluppo di applicazioni iOS ed Android.

Altralogica è un azienda con sede a Gorle in provincia di Bergamo. Attualmente stiamo portando avanti parallelamente lo sviluppo di prodotti sia interni sia per conto terzi.

Cerchiamo sia figure professionali che hanno già  una certa esperienza consolidata nel settore, sia ragazzi anche alle prime armi che hanno magari scritto la loro prima applicazione per iPhone o che hanno una passione per i videogiochi e per i device mobile ed una preparazione per quanto riguarda linguaggi come C, C++, Java, C#.

Per chi studia abbiamo a disposizione anche dei posti per stagisti, un’occasione in più per capire cosa sta succedendo nel mondo della tecnologia, con uno sguardo dall’interno.

Per un contatto lasciatemi un commento con il vostro indirizzo email o numero di telefono qui, oppure scrivetemi a iphone@altralogica.it

Backup istanze Amazon EC2

Non so se sono io che sono estremamente pignolo quando si tratta di scegliere un software per il backup o se capita più o meno a tutti. Ad ogni modo, ho passato un po’ di tempo a cercare un software per effettuare gli snapshot dei volumi di Amazon EC2 in quanto volevo automatizzare i backup delle mie istanze. Ho trovato diversi script e li ho provati, ma alla fine nonostante li abbia usati anche per lunghi periodi non ero contento.

Uno dei problemi principali è la gestione dei vecchi backup. Amazon è piuttosto aggressiva sulla tariffazione degli snapshot e lasciare tanti snapshot vecchi online dopo un po’ diventa un costo non indifferente. A me serviva un sistema per conservare almeno un backup di ogni mese e poi tenere quelli dell’ultima settimana, o qualcosa del genere.. il tutto senza impazzire e senza dovermi ricordare, ogni volta che creo una nuova istanza o che aggiungo un volume, di andarlo ad aggiungere anche nel software di backup.

Alla fine ho risolto scrivendo un mio programma in Go che utilizza le API di AWS e che mi permette di fare esattamente quello che serve a me. Pensando che possa tornare utile anche ad altri, l’ho pubblicato su GitHub a questo indirizzo: https://github.com/tanis2000/ec2backup

Se doveste trovarlo utile, fatemelo sapere. Se dovesse servire qualche modifica, ben venga! Sarò felice di metterci mano per migliorarlo.

Analisi di Shovel Knight

Shovel Knight

Mauro Fanelli (vi invito ad andare a vedere il sito del suo studio Mixed Bag, se non lo conoscete ancora) ha condiviso in un tweet un articolo di David D’Angelo, uno degli autori di Shovel Knight.
In questo articolo D’Angelo racconta come è andato il primo mese di vendite del suo gioco. Di fatto è un’analisi interessante per capire quali sono i costi stimati per lo sviluppo di un videogame da parte di un piccolo studio e quali sono stati gli effettivi ricavi e dove stanno i punti deboli. L’ho trovato interessante soprattutto per avere un termine di paragone quando i clienti chiedono la quotazione per un videogame senza sapere, nello specifico, a cosa vanno incontro.

Alcuni fatti:

  • Shovel Knight è un gioco sviluppato per Wii U e 3DS (solo negli Stati Uniti) e per PC in tutto il resto del mondo.
  • Sia per le piattaforme Nintendo sia per PC è stato scelto di distribuire il gioco solo in formato digitale (niente scatola in negozio). Nel caso del PC, la piattaforma di distribuzione è quella di Steam.
  • Il gioco è stato inizialmente finanziato tramite una campagna su Kickstarter (e donazioni tramite PayPal).
  • Il team è composto da 6 persone

Il risultato dello sviluppo del gioco lo potete vedere direttamente dal sito degli sviluppatori, dove trovate il press kit completo.

L’idea iniziale del team era di sviluppare l’intero videogame, comprensivo di tutte le extended feature promesse durante la campagna su Kickstarter, nel giro di 24 mesi. Alla scadenza della campagna, il totale delle donazioni era di circa 328k$, che corrisponde all’incirca a 245k€. Da questa somma vanno tolte le percentuali che trattengono Kickstarter e PayPal. Facendo finta che il finanziamento sia tutto su Kickstarter, vorrebbe dire eliminare il 5% che è quello che tengono loro ed un altro 5% che è quello che trattiene Amazon. Di fatto si arriverebbe attorno ai 220k€ effettivamente utilizzabili.

Il costo previsto per lo sviluppo era di 10k$ al mese per ogni membro del team. Di fatto vuol dire 1.440M$, quindi 1.076M€. Una bella cifra che comprende anche tutti i costi vivi della società, per cui oltre agli stipendi ci sono di mezzo tasse, bollette, tenute contabili, hardware, affitto, ecc…
Comparata a quanto hanno raccolto su Kickstarter è una cifra esorbitante, però è abbastanza realistica considerando che il costo medio di uno sviluppatore di videogame, almeno negli Stati Uniti, viaggia effettivamente attorno ai 120k$ l’anno.

Il piano finale è quindi variato in questo modo: uno dei 6 membri del team ha deciso di prendere la sua parte solo al termine dello sviluppo (il membro che si è occupato di musica e di effetti sonori). Gli altri 5 hanno optato per prendere la metà di quanto deciso inizialmente, quindi 5k$ al mese. In più, tutte le caratteristiche extra del gioco sarebbero slittate al secondo anno, in modo di poter recuperare dei fondi dopo la messa in vendita della prima versione del gioco.
Il conto diventa quindi 12 mesi x 5 persone x 5k$, ovvero 300k$ che corrispondono a 225k€, una cifra già più vicina a quella incassata su Kickstarter.

Quello che è poi successo nella realtà è che anzichè impiegare 12 mesi, ne hanno impiegati 17, di cui 5 senza pagarsi uno stipendio. Il gioco è comunque uscito ed è in vendita al costo di 14,99$ e ne hanno vendute 180k copie nel giro del primo mese. Da queste vanno tolte le circa 15k promesse ai finanziatori su Kickstarter. Facendo due conti, l’incasso per le copie vendute è attorno ai 2.475M$. A questi vanno tolte le fette di Nintendo e di Steam di cui non conosco i dettagli. Ho letto in giro per la rete che su Steam di solito si aggira attorno al 30%, mentre per Nintendo non ne ho proprio idea. Ma da quel che ho potuto capire, è una percentuale che viene decisa insieme allo sviluppatore caso per caso.
Ipotizzando che in media, tra Steam e Nintendo, rimanga anche solo il 50% di quella cifra, sono comunque 925k€ che, sommati ai 245k€ iniziali portano il conto a 1.170M€ che è poco più che superiore rispetto alla cifra ipotizzata inizialmente per l’intero sviluppo nell’arco dei due anni. Di conseguenza, dopo solo un mese di vendite, tutto quello che è venduto in più è puro guadagno per questo prodotto, ammesso che invece di 24 mesi non arrivino a 24+5+X dove X non si sa quanto possa essere.

Per me, a parte le valutazioni del fatto che sia stato un investimento che ha portato profitto o meno, quello che è interessante è la valutazione dell’effort necessario per un gioco senza troppe pretese. Nel mio caso, tendenzialmente si tratta di un team di tre persone, un programmatore un game designer ed un artista. Prendendo le stesse cifre di cui sopra, per un progetto di 12 mesi, vorrebbe dire un investimento di 10k$ x 12 x 3 = 360k$ = 269k€. Per un progetto molto contenuto, diciamo di tre mesi, 90k€.

L’altra cosa interessante è rapportare le cifre stimate per le risorse Statunitensi con quelle Italiane. 10k$ = 7,4k€. Calcolando che, in genere, il costo medio aziendale per una risorsa è del 47% (prendo come riferimento uno studio di Assolombarda relativo al 2011), vuol dire che al netto vanno 3.9k€ alla risorsa che, tutto sommato, è una cifra che può essere credibile per un senior.

Sarei curioso di sentire cosa ne pensano anche altre persone. I commenti cono ben accetti!

Jenkins: come aggiornare in automatico i Google Play Services

A volte capita che un progetto abbia come dipendenze i Google Play Services o altre librerie che fanno parte del Google Repository.

In questo caso, Jenkins non si accorge delle dipendenze e dà un errore sulla falsariga di questo:

> Could not find com.google.android.gms:play-services:4.3.23.

La soluzione più semplice è di aggiungere negli script il seguente comando:

android update sdk --no-ui --all --filter "extra-google-m2repository"

Istanza EC2 Windows che non riparte dopo un riavvio

Non è la prima volta che in Altralogica sperimentiamo problemi con le istanze di EC2. Qualche anno fa c’era stato un disservizio piuttosto pesante nel data center Irlandese mentre ieri, nostro malgrado, ci siamo imbattuti in un altro problema piuttosto pesante.

Di fatto, di recente, Amazon ha cominciato ad aggiornare il proprio parco macchine host su cui girano le virtual machine di EC2. Il che è un bene perché l’hardware nuovo è più veloce. Peccato, però, che non abbiano avvisato nessuno che le istanze Windows un po’ vecchiotte (per intenderci qualsiasi cosa precedente a Windows Server 2012, non parliamo di sistemi arcaici) non hanno i driver di rete per i nuovi host.

Questo cosa significa? Che se, per caso, quando riavviamo un’istanza, questa viene fatta partire su un host nuovo, la nostra virtual machine non andrà!

E’ incomprensibile come un colosso come Amazon non avvisi i propri clienti in queste situazioni. Ad ogni modo, dopo una concitata sessione al telefono con il loro staff tecnico, siamo riusciti a venirne a capo.

Riporto qui sotto la soluzione per chi, come me, dovesse incappare in questo problema di punto in bianco e non sappia da che parte guardare per trovare aiuto.

  • Scaricare l’ultima versione di EC2Config da qui: http://aws.amazon.com/developertools/5562082477397515
  • Scaricare i driver aggiornati della scheda di rete Citrix (contiene anche lo script per eliminare i vecchi driver RedHat): http://aws.amazon.com/developertools/2187524384750206
  • Stoppare l’istanza che non parte più.
  • Fare un detach del volume root della macchina.
  • Lanciare un’istanza (anche t1.micro o m1.small, non importa) di Windows 2003 su cui andrà montato il disco di root che non parte. E’ importante che sia un’istanza di 2003 perché così non fa casino con il disco di boot. Per trovarla, basta cercare Windows_Server-2003-R2_SP2 nelle community AMI.
  • Fare un attach del volume di root alla nuova istanza.
  • Collegarsi alla macchina Windows 2003. Il disco dovrebbe già essere visibile. Se non lo fosse, basta usare il Disk Manager per metterlo online ed assegnargli una lettera di unità.
  • Scaricare i due pacchetti di cui sopra su questa macchina e copiarli in una cartella citrix sul disco della macchina che non parte. (ad es. E:\citrix). Mettete pure tutti i file insieme, tanto non c’è nulla con lo stesso nome.
  • Date permessi full control all’utente everyone per quella cartella, giusto a scanso di equivoci
  • Lanciate regedit
  • Aprite il ramo HKEY_LOCAL_MACHINE
  • Dal menù file selezionare Load Hive…
  • Selezionate il file SOFTWARE dalla cartella E:\Windows\System32\config (ricordate che E: è il percorso assegnato nel mio caso, nel vostro potrebbe essere differente)
  • Chiamate questo hive 00Software
  • Navigate in HKEY_LOCAL_MACHINE\00Software\Microsoft\Windows\CurrentVersion\RunOnce
  • Create una nuova chiave di tipo stringa e chiamatela 01EC2Config e come valore mettete c:\citrix\ec2install -q
  • Create una nuova chiave di tipo stringa e chiamatela 02RHPurge e come valore mettete C:\WINDOWS\system32\WindowsPowerShell\v1.0\powershell.exe -file C:\citrix\Purge.ps1
  • Create una nuova chiave di tipo stringa e chiamatela 03Citrix e come valore mettete C:\citrix\Citrix_Xensetup.exe /S
  • A questo punto navigate in HKEY_LOCAL_MACHINE\00Software\Microsoft\WindowsNT\CurrentVersion\Winlogon
  • Create una nuova chiave di tipo stringa e chiamatela  AutoAdminLogon e come valore mettete 1
  • Create una nuova chiave di tipo stringa e chiamatela DefaultUsername e come valore mettete Administrator
  • Create una nuova chiave di tipo stringa  e chiamatela DefaultPassword e come valore mettete la vostra password di Administrator (va messa in chiaro)
  • A questo punto tornate su 00Software e andate su File -> Unload Hive..
  • Chiudete regedit e fate il logoff dalla macchina Windows 2003.
  • A questo punto, dalla console di EC2, fate un detach del disco dalla macchina Windows 2003 e fate un attach sulla vostra vecchia macchina che non parte più, mettendo come nome del device /dev/sda1
  • Riavviate la vostra vecchia istanza e lasciatela andare per qualche minuto. Si dovrà riavviare un paio di volte (di solito è automatico) togliere i vecchi driver di rete, installare quelli nuovi ed aggiornare EC2Config. Una volta finito sarà di nuovo online.
  • Buona fortuna!

Quanto costa sviluppare un’app iOS?

Diversi mesi fa ero incappato in una discussione su StackOverflow riguardante il costo per lo sviluppo di un’applicazione iOS tipo Twitterific.

Volevo scrivere qualcosa a riguardo prendendo come riferimento il mercato italiano, ma me ne sono dimenticato.. tanto per cambiare. Nel frattempo è passato altro tempo e finalmente mi sono deciso.

La discussione verteva principalmente sul capire quanto potesse costare un’applicazione iOS simile a Twitterific (la domanda è stata posta nel 2008 ed i prezzi sono sicuramente cambiati, vista la crisi mondiale, anche se alcune risposte abbastanza recenti danno un’idea del costo del lavoro attuale o quasi negli Stati Uniti).

Uno dei programmatori di Twitterific, nel 2010, ha aggiunto il suo commento alla domanda portando come esempio il porting dell’app da iPhone ad iPad. Nel loro caso si trattava di portare l’app in 60 giorni. A conti fatti, prendendo come riferimento 6 giorni lavorativi alla settimana, per 10 ore al giorno, con due risorse dedicate, si arriva a 1.100 ore. Calcolando che la loro tariffa media per i clienti è di 150$/ora, si arriva ad una stima di 165.000$, a cui va aggiunto il costo di ciò che era già stato sviluppato e che è stimato in circa 35.000$. Si arriva ad un totale di 200.000$, senza tenere conto del design e del project management. Con quelli si arriva tranquillamente a circa 300.000$.

Questo stesso personaggio, porta come esempio anche il fatto che Instagram si sia fatto finanziare 500.000$ da un venture capitalist per rifare frontend e backend.
Altri sviluppatori hanno commentato rimanendo sempre nel range dei 150$/ora uomo. Ora non so dire se negli Stati Uniti ci siano pochi programmatori iOS, poche società che sviluppano per iOS, un mercato talmente grande che giustifica certe cifre o che altro, ma confrontate con quelle che sono le tariffe medie italiane, sono dei numeri esageratamente importanti.

Parlando con altri sviluppatori, sono arrivato alla cifra di 50€/ora come tariffa media per lo sviluppo puro. Che, diciamocelo, di questi tempi è anche un buon prendere. Ritornando al calcolo relativo a Twitterific, se l’avessimo fatto in Italia, il risultato sarebbe di 1.100 ore x 50€/ora = 55.000€ di solo sviluppo dell’aggiornamento per iPad. Sempre senza includere project management e design.

La realtà è, a mio avviso, che in Italia nessuno avrebbe investito una cifra del genere solo per portare un’app da iPhone ad iPad. La realtà è che, se si chiede 1/5 di quella cifra, si è ancora ancora concorrenziali.. e deve includere anche design e project management, altrimenti si è completamente fuori target.

Mi piacerebbe sentire l’opinione anche di altri sviluppatori che si muovono nell’ambito delle app mobile qui in Italia, per capire se siamo anche noi coinvolti dal momento di crisi che prima o poi passerà, o se c’è qualcosa di male nel sistema del mercato dello sviluppo, soprattutto tenendo conto che spesso e volentieri dobbiamo scontrarci con i lavoratori dell’est Europa che hanno prezzi estremamente concorrenziali ma che, allo stesso tempo, sono difficili da gestire, fanno perdere un sacco di tempo per spiegare che cosa si vuole e, in gran parte dei casi, il prodotto finale non è nemmeno lontanamente all’altezza di ciò che si voleva.

Contattatemi, anche in privato se preferite, per approfondire l’argomento.

 

Novità su iTablo

E’ da un po’ che volevo scrivere un paio di righe riguardo iTablo, la soluzione che abbiamo sviluppato per la pubblicazione di riviste e cataloghi su iPad. Qualcuno, probabilmente, avrà già letto qualcosa nei miei post di qualche mese fa. Per chi non sapesse di cosa sto parlando, iTablo è il nome che abbiamo dato a questa soluzione che è composta da un lettore (una app per iPad), un designer (un’applicazione desktop per OS X e Windows) ed una serie di servizi accessori per l’hosting dei contenuti. A che serve? A pubblicare dei PDF arricchiti da elementi multimediali fondamentalmente.

Rispetto agli esordi di un anno fa, il prodotto si è decisamente evoluto. Non sto qui a snocciolare i dettagli.. per quelli c’è il sito (per ora in lingua d’Albione, ma da metà settembre sarà anche in Italiano): http://www.itablo.com/

Magari in un prossimo post parlerò un po’ della tecnologia che sta dietro ad iTablo. Per ora mi limito a dire che sono parecchio orgoglioso del lavoro svolto dal team che lo ha concepito e portato avanti. E sono contento di poter dire di aver trovato un ottimo partner per la commercializzazione di iTablo. Infatti, fin da ora è possibile acquistare iTablo tramite Graphiland, azienda leader nella distribuzione di prodotti per l’editoria. La scheda del prodotto ed il listino sono reperibili qui: scheda di iTablo

Per chi, invece, volesse saperne di più, i signori di Graphiland hanno organizzato una serie di seminari per il mese di Settembre in cui il qui presente mostrerà come trasformare le proprie pubblicazioni cartacee in contenuti multimediali interattivi consultabili su iPad. Qui potete vedere il calendario. Iscrivetevi e non ve ne pentirete! Mi raccomando, nel caso fatemi sapere chi siete e che arrivate da qui! 🙂

Il Media Center perfetto

E’ da qualche tempo che voglio scrivere questo post. Ho passato diverso tempo valutando varie opzioni per un Media Center da utilizzare in casa.

Tutto è partito con l’acquisto del nuovo televisore per casa (un Samsung LED 40″ della serie 6) che integra un Media Center di base in grado di leggere i vari file video, foto ed audio da una chiavetta USB, un disco esterno o un server di streaming. Tutto sommato devo ammettere che quello di Samsung non è poi così male. E’ un pò limitato (alcuni codec non sono supportati), non viene aggiornato molto spesso, ma direi che un buon 90% dei film che mandavo in streaming dal PC funzionavano alla grande.

Il problema in realtà è un altro: essere costretti a tenere acceso un PC che consuma parecchio ed ha una ventola molto rumorosa. Se poi aggiungiamo che mi piacerebbe poter lasciare acceso il PC per scaricare torrent e cosette varie, non mi dispiacerebbe trovare una soluzione economica ed efficiente.

In prima battuta avevo preso in considerazione Popcorn Hour che è piccolo, consuma pochissimo, gli si può montare un disco di qualsiasi dimensione, ha integrato un suo Media Center, ha un client torrent, insomma.. apparentemente non gli manca niente. Non ha molta potenza di processore, ci gira Linux, tutto sommato non è malaccio. Ma il suo software di Media Center non è proprio il massimo. Ogni tanto gli aggiornamenti hanno problemi che lo rendono inutilizzabile, insomma.. non ha una bellissima storia alle spalle, almeno dalle voci degli amici che l’hanno tutto’ora.

Un giorno un amico mi ha parlato di un sistema della Sapphire, uscito da pochissimo, che fondamentalmente è un PC basato su un Atom di ultima generazione. Molto piccolo, silenzioso, ci si può montare un qualsiasi disco da 2,5″, supporta Windows e Linux senza problemi. Al che, lui ha pensato bene di provarlo ed io ho seguito le sue prove.

Installato Windows 7, provati VLC, MediaPlayer e compagnia bella ed il risultato è stato che dopo qualche decina di minuti il PC si bloccava completamente. Stessa prova con Linux ed identico risultato. Stessa prova con un CD live di Boxee, stesso risultato. Cambiato il PC in questione ed ancora lo stesso problema che si ripropone. Purtroppo non è raffreddato come si deve e dopo un pò si scalda troppo e si blocca.

Aggiornamento del 3 Agosto 2011: alla seconda sostituzione del box Sapphire, tutto è andato come si deve. Con Windows 7, Boxee e filmati a 1080p che girano ininterrottamente da giorni non c’è alcun problema. A quanto pare si trattava di un problema di un lotto di questi apparecchi. Avendo, nel frattempo, utilizzato a fondo la soluzione Mac Mini, c’è da dire che entrambe le piattaforme sono valide. Diventa quasi più una scelta di tipo filosofica.. ci piace di più OS X o Windows (o Linux)? Ad ogni modo consiglio a chiunque decidesse di acquistare il Sapphire di metterlo sotto stress per bene, per assicurarsi che non ci siano problemi hardware.

Il lato positivo è stato che, durante queste prove, ho rivisto il caro vecchio Boxee, che non tenevo d’occhio da parecchio tempo. E, da quando avevo provato io una beta anni fa, ha fatto passi da gigante. Tant’è che adesso vendono anche hardware dedicato a questa piattaforma. Ho letto un pò, mi sono informato, ed ho visto che è multipiattaforma. Al che, un altro amico mi ha lanciato l’idea di provare ad installarlo su di un Mac Mini. Cosa che ho fatto al volo. Ho preso un vecchio Mac Mini che avevamo in ufficio, ho installato Boxee, ci ho copiato sopra qualche film in 720p e l’ho fatto girare per un pò di ore. Il risultato è stato inaspettato. Sistema stabile, riproduzione dei film perfetta: ecco la macchina definitiva!

Con un pò di ricerche fra eBay e eBay Annunci sono riuscito a trovare un Mac Mini usato ad un prezzo abbordabile (250 €). Io consiglio come minimo un modello anche vecchio ma che abbia almeno un processore a 1.83GHz e 2Gb di RAM. Con una configurazione di questo tipo si è a posto per mandare in play filmati anche in 1080p.

In questo momento l’ho collegato al televisore di casa, ci girano Boxee, Transmission e JDownloader accesi 24 ore su 24 e non ho avuto il minimo problema. Ho aggiunto un disco esterno collegato tramite USB su cui tengo tutti i film e sono pienamente soddisfatto. Per completare ho recuperato un telecomando IR della Apple e mouse e tastiera wireless giusto per quando mi serve fare manutenzione (tra l’altro si può fare tutto comodamente da una qualsiasi altra postazione collegandosi in VNC).

Mi sento di consigliare questa soluzione a chiunque sia alla ricerca di un Media Center flessibile, stabile, poco costoso e che consumi poco (e di conseguenza che faccia risparmiare sulla bolletta della luce).

Il Poeta

screenshotsFinalmente posso parlare del progetto su cui sto lavorando a tempo perso da qualche mese. Si chiama Il Poeta (o per gli anglofoni The Poet) ed è un puzzle game per iPhone ed iPod Touch.

Il funzionamento del gioco è molto semplice. Si hanno a disposizione un certo numero di tesserine con una o più parole scritte su ognuna e l’obiettivo è ricostruire una frase famosa nel più breve tempo possibile. Sembra semplice detto così, ma quando il tempo è poco e le tessere tante, comincia a diventare difficile!

Oggi l’abbiamo iniviato alla Apple per la valutazione prima della pubblicazione sull’App Store. Ci vorrà qualche giorno per vederlo online alla folle cifra di €0,79!!

Per chi volesse un pò di informazioni in più c’è il sito ufficiale

Già  che ci siete, date un’occhiata anche al filmato 🙂