In order to develop our Iphone web application, we had to pick a web server technology. The pages have to be served to the safari browser on the device, so a backend is needed. It’s a bit staggering that this adds a level of complexity native app developers don’t have to deal with. I hope this is duly noted.
Since only one of our team members had access to a mac machine, we had to go for web app development. Guess our team is not iCompatible.
Not all team members were proficient (enough) in PHP, so we ruled that out pretty fast. Since we’re all from a Java background, we would use a Java EE technology for the webserver-side. Nobody had a lot of experience with the platform, but at least we knew the language.
A lot of problems come to mind:
Client side
Has to display SpringChart graph, which is a fairly complex javascript. We don’t want to regenerate and reload the entire page whenever nodes are added.
Has to abide certain Apple Web-toolkit rules in order to display correctly on the iPhone.
Server-side
Has to fetch a lot of data from Last.FM API, preferably asynced.
Has to persist data and model
The standard JSP implementation works (on a lower level) with servlets. These are simple classes you can register with the web app, and they can respond to HTTP GET/POST requests. This is all very low-level, and I think implementing our application using these servlets might take a long time and result in a pretty static solution.
Then again, we probably haven’t even scratched the surface of what one can do with the Java EE web services, but the clock is ticking. It’s very annoying to code away on something you don’t totally grasp.
Another solution I’ve been looking at is the Google Web Toolkit, which has the following features:
Design client and server in plain JAVA. Client gets compiled to HTML and JavaScript, with optional compression and code optimisation.
Handles RPC: one can call a method on the client (javascript) and get a response from the server (java). This too is based on basic servlets, but all the low-level stuff is handled by the Google Web Toolkit.
For now, this seems like the best solution, but I think we will run into problems integrating the generated HTML/javascript code with the apple toolkit and the graph-drawing code …
I keep wondering how other groups manage these ’serving-dynamic-web-pages’-related problems …
Brainstorming time is over and we’ve all started to implement our iPhone app. Here’s an overview of what we plan to do.
The application
Interface: We’ll be roughly porting our android application interface to the iPhone. There will be a lot of technical difference, but we don’t plan any major changes in the workflow or general lay-out. We may try to have the app work both horizontally and vertically, but we’re not yet convinced that the extra ‘coolness’ or improved usability (if any) is worth the extra hours of work. The interface will be created in html/css in addition to jsp and maybe some javascript.
Central server: In our android application we’ll be expanding on the central server idea from our previous applications. All business logic and data storage will happen on a central application server. This means that it will be possible for multiple users to connect to the central server, and they will all see the same playlist. The server will be a glashfish server running beans and jsp on the webpages. We will use the beans’ persistence features.
Performance: The Android application suffered from a bit of performance issues because it had to download all the artist and track data. Each user has 50 top artists and each artist has 50 top tracks. The application became less responsive while downloading and parsing all this data. In our iphone app, all of this will be done on the central server, so this performance issue will be eliminated.
Last.fm data retrieval: The API calling and XML parsing will be roughly the same as in the previous application, except that it will be done on the central server, as mentioned above.
Visualisation: We will use an existing library for drawing graphs, though it will require a non-trivial amount of refactoring and feature-adding to suit it to our needs. This is done entirely in javascript and maybe it will be dynamic again, though this depends on how fast javascript runs in the emulator and on the iPhone (shotgun on the iPhone during class on friday!)
The work
Since we want to have our demo ready by next friday and want to avoid any last minuten integration issues, like last time, we have tried to define more clearly what technologies we’ll be using and how they interact. Also everyone is asked to finish their components by wednesday so we have plenty of time left to integrate and fix outstanding issues or bugs.
Onderstaande opinie is de persoonlijke mening van Bart Tuts
Delicious
Ik vind Delicious is een zeer handige tool voor het vergaren van resources rond een specifiek thema. Iedereen werkt als het ware samen en zo onstaat al vlug een lange lijst aan relevante resources (al 139 bookmarks met de tag mume09!) die iedereen kan raadplegen. De bookmarklet en de suggested tags maken het toevoegen en taggen van een nieuwe bookmark ook kinderspel. Conclusie: small personal investment, big return value. Just the way I like it!
Twitter
Ah Twitter, adored by the world…and misunderstood by me? Ik heb in het verleden al eens geexperimenteerd met twitter en ik heb er nooit veel waarde uit kunnen halen. Twitter heeft het potentieel een goede tool te zijn om snel een vraag te stellen aan een grote groep mensen waarvan dan hopelijk wel iemand het antwoord weet. Helaas vereist dat wel een grote groep actieve followers, die ik helaas niet heb. Voor zulke dingen gebruik ik dan ook veel liever (want succesvol) mijn facebook status. Verder kan Twitter handig zijn om gebeurtenissen of personen te volgen. Hierbij is helaas maar al te vaak een kwestie van een grote hoeveelheid kaf van een weinig koren te scheiden. Om nog maar te zwijgen van het enorme aantal ‘publieke personen’ die ongetwijfeld veel interessants te vertellen hebben, maar Twitter zien als een marketing tool en het dan maar volspammen met reclame (Guy Kawasaki, anyone?).
In de context van het vak Multimedia wordt gevraagd om telkens te tweeten wanneer er voor het vak gewerkt wordt. Persoonlijk ben ik hier niet zo’n voorstander van, maar goed, het levert misschien interessante informatie op voor de docent. Het probleem dat zich hierbij stelt is echter dat dit enorm veel ‘kaf’ genereert. Het is spijtig dat de posts met interessante inhoud (Q&A over flex/android, links naar interessante blogposts of websites) verloren gaan in de vloed aan “ik ben nu aan het werken aan…” posts, die – volgens mij althans – voor de studenten weinig waarde heben. Mss kunnen er aparte hashtags gebruikt worden voor deze twee types tweets?
Facebook
Ik vind facebook een leuke website om contact te houden met vrienden en kennissen, maar ik zie er weinig nut in als educatief ondersteunend platform voor een vak. Laten we even veronderstellen dat de facebookgroep mume09 niet bestond. Dan zouden de links naar de blogs via twitter bekend gemaakt zijn en zouden de links naar de presentaties op Toledo gepost kunnen worden. Niet dat ik zo’n fan ben van het Toledo platform (waar is de facebook groep “Wij willen RSS feeds voor de vakpagina’s Toledo” ?) maar bij Toledo heb ik alvast de gewoonte elke paar dagen te gaan kijken, een gewoonte die ik bij een facebook groep niet heb (en helaas ook daar geen RSS feeds). Het is wel leuk dat ik nu namen kan plakken op enkele onbekende gezichten in de les, maar daar stopt de toegevoegde waarde voor mij dan ook.
Blogs
Blogs zijn volgens mij een zeer goede manier om de vooruitgang van een groep te volgen. Het is gemakkelijk een overzicht te krijgen van wat er allemaal gebeurd is en er kan worden uitgewijd over details waar dat nodig is. Categorien en rich formatting zorgen voor een goede structuur en de comments garanderen de mogelijkheid tot interactie. De ingebouwde RSS functionaliteit zorgt ervoor dat nieuwe informatie vanzelf naar de gebruiker komt.
PS
Zoals de aandachtige lezer reeds heeft opgemerkt, is ondergetekende een groot fan van RSS feeds. Ik heb gejuicht als een kind dat jarig was toen ik RSS feeds en Google Reader ontdekte De mogelijkheid om interessante informatiebronnen te agregeren op 1 plaats ipv deze periodiek zelf te moeten controleren levert een ongeloofelijke tijdsbesparing op.
Het doel van het programma is: een playlist samenstellen voor een feestje op basis van de muzieksmaak van alle aanwezigen. We gaan er van uit dat de aanwezigen een last.fm-account hebben.
Wanneer ze aankomen geven ze de username van deze account in in het daartoe bestemde kader (zie storyboard nr 1). De visualisatie die rechts in deze tekening te zien is bestaat uit knooppunten van artiesten (gearceerde cirkels) en gebruikers (niet gearceerde cirkels). Een gebruiker kan nooit rechtstreeks met een andere gebruiker verbonden zijn en een artiest nooit rechtstreeks met een andere artiest. Er zal steeds respectievelijk een artiest of een gebruiker tussen zitten.
Naarmate artiesten met meer gemeenschappelijke gebruikers verbonden zijn (en dus ook bij een grotere hoeveelheid gebruikers in de smaak vallen) zullen ze dichter bij elkaar liggen. Zo ontstaan er clusters van artiesten die bij een grote groep van de aanwezigen hun muzieksmaak aansluit. Op basis hiervan wordt dan een playlist samengesteld met nummers van de populairste artiesten (zie storyboard nr3) . Storyboard 4,5,6 tonen respectievelijk dat er ingezoomd kan worden op een bepaalde artiest (waarbij er extra statistieken getoond kunnen worden van die artiest), dat er een overview venster uitgeklapt kan worden en dat er een configuratie-gedeelte kan uitgeklapt worden waarop bvb. kan aangeduid worden welke groep songs er geselecteerd moeten worden (bvb. enkel songs van artiesten die de meerderheid goed vind of ook songs van artiesten die maar bij een aantal mensen in de smaak vallen).