vrijdag 29 juni 2012

The IO D2 Keynote

10:00
13700 photos contributed on google+ via the events. more than 2 billion user on internet traffic and more people getting the web via mobile. 70 million chrome user for chrome in 2010 160 million in 2011 310 in 2012. Today the browser is being used on more devices than only on the desktop. opening tabs cross devices and having the back button cross devices. Loading the pages in the background (first page only?). Chrome on the iPhone and iPad. Credentials are synced cross devices. adding google drive to chromeOS and iOS. Looking through pdf with OCR, looking/searching through photos using text. Google documents for editing offline getting the normal editing without an internet connection. 7.5Billion hits per day on appengine. Virtual machines on demand, google compute engine (IaaS), linux virtual machines, possible creating of clusters. more than 700000 cores available for the application. Rich games developed on chrome having games on things as chromebooks and boxes.

11:15
Second jump with glass just to let us see how it has been set up. And then the camera man hits against the waterpipe.

donderdag 28 juni 2012

The IO D1

9:39
Welcome and android start. 400M android devices have been activated, daily 1M. New android is Jelly Bean. Performance have been upgraded by project Butter. Triple buffer used in the graphics pipeline. Predicting finger position for screen updates, (People still walking in) to get a more natural response.
High speed camera test to compare jelly bean and ics. JB is quicker and looks better. Finally something that moves the app or resizes the widget. Tossing the apps of the screen. Added a predictive keyboard and a bigram recognizer/predictor. The google voice db has been made smaller. This can be used offline. Gesture mode for blind users. new animation for taking photo's. Scrolling in film strip review by pinching. They introduced android beam instantly paired devices by using NFC. The notification have been improved and extended. tune-in radio. expand and colapse notifications by using two finger gestures. google search using card view. combined with google voice search. Also giving websearch results.


10:00
Google now giving advice when travelling. Knows when the next bus or train arrives and which restaurant are in the neighborhood. Letting you know what the time is back home. The cards are self learning. PDK for developing hardware, has low-level apis.


More ways of billing and expanding the carrier billing. Launched android training for training the starting developers. Android app encryption with a device key. Smart app updates are partial updates no need for updating everything. Movie purchasing on google play and tv sessions. Magazines added to play. Nexus 7 build for google play running JB. Super thin light and protable. 1280 x 800, Tegra 3 quad core cpu triple core gpu, 340 grams. Optimizing articles for reading, adding interactive items. Recommendation for books music magazines and movies. A whats this song widgets to find a new song. chrome the standard browser. added compas mode for a better view of the inside of a restaurant, combined with the girosscope. Translate added to google current within second. 25$ credit to spend in the play store.


10:33
project thunsten. combining play and android the produce the first consumer electronics build from the ground up by google. Nexus Q connects to the cloud and is being controlled by the phone. The new social streaming device to let friends add the music. Also possible to play/be the dj. Knowing where you stopped playing even in other rooms/houses.Taking over the tv with your android device.
Youtube movie of hangout with the muppits, song: under pressure.


10:50
new google plus app for the tablets, finally going native. New hangout invite and auto switching video. Google plus events, sending new invites called cinemagraphs. unfolding the invites to see where it is and it can be added to calendar. There is an event page, to see who is going. party mode adds the photo's to the event. on the events landing page the photos taken by the attendees are shown. Events highlights showing the most important photos. Showing photo's by person.


11:07
Showing glass. Looking pretty great, having an hangout with a couple of glasses on. Using glass to interact with the virtual world. Display is slightly above the eye. It needs to be very light, latest prototype is lighter than most of the sunglasses. Developer preview for pre-order for US-Based IO attendees, $1500.


What's new in android.
It's pretty busy here, to many people to little room. Even killing the wifi again. Performance new framework features, Graphics. Choreographer streaming input. host the widgets in a third party app by application bind. Action change live wallpaper possible to update the wallpaper. Lot of the code looks like CSS3. New is animating with a layer. Possible to react to any change. Improved the textview it uses now less memory and has higher performance for longer text. Support for styled text in ClipData. Start an animation from a certain spot. Parent activity for going back to the previous activity. Modifying the backstack. improvement to the right to left texts/languages. Added the external storage permission to get access to external storage. Limiting Costly Downloads. Improvements for Opensl. Tap to pair for bluetooth. Respond to user comments in google play. Android expansion files. GPU support for the emulator, and hardware acceleration. Big content view to give more information to the user. prio buckets for the notifications, Max = emergency, Min = not attention, and three levels in between. bigcontentview 4 times bigger 4 tmis more information for the user. Adding three buttond to the notifications. Adding bigpicture style to the notifications. Inbox style seeing an email conv like chat style. The top most notification is being expanded. Discover the package who made the nofication and they can be blocked.


Hangouts
Using iframes in hangout apps. hangout.js getting participants from the hangout. the application can be hosted on the appengine. One can create games to play with the hangout participants. Displaying names from the persons who are in the hangout. It is possible to store some data in de hangout. For instance with a guessing game that the guesses are being saved. Put the people first, identifying who is doing what, having the application/hangout being collabrative and synchronise. The people will be joining the game when not expected and there are callbacks for this. semi private mode where you can only see your own world and everybody else can see yours. MMO style application is not build yet.  


Maps
Using custom icons to visualize the data better convenient when using big data sets. Also the markerclass can be used to summarize the markers. Heatmaps to represent intensity or density. There is a new heathmap layer to visualize data. Rendered client side (No support for IE7) which is quicker and looks better. Standard points can disappear due to the fixed radius of the points, this can be removed also the radius can be changed. The heathmap can be overlayed with ocean polygons to make sharper edges for countries. It is also possible to visualize temporal data, data that changes overtime. The line which is being used for the navigation can be changed in color but also symbols can be added, in total there are 5 symbols. High data for mountains can be displayed using the svg paths. compress the data using encode/decode data, speed vs space. Styled maps to remove data from the original google maps. For very large data WebGL can be used, this can cope with the big data sets. Overlaying a canvas on the maps, to do this you need the world coordinates for speed.


Youtube + offline rendering
Almost half of the US will playing mobile games by 2014. 800 million youtube viewers worldwide. Gameplay videos are being viewed by a lot of users. New android player api to incorporate the video play into the app. Get the video frames from the game-engine, the frames are being parsed and send to the youtube service. The reading of the frames is being done on the native level. The other way is cloud rendering which does as little as possible on the device. The gaming data is being send to cloud storage, from there it is being rendered to local storage being encoded sended back cloud storage and then send to youtube. for the controller which sends the data to cloud storage appengine is being used, (URL listeners for a part of the program want to do something) communicate with linux devices and C2DM. The linux machines are able to poll for jobs from the app-engine. Sound is hard to encode due to the latency.   


WebRTC
state of the art audio/video communication stack in your web browser. cross industry effort to create a new communications platform. WebRTC Vision: The communications industry at webspeed. to allow real-time communication to be a feature of apps. WebRTC coming to almost all desktop browsers by EOY 2012 IE via chromeframe. Native C++ versions of WebRTC available. MediaStreams access to the camera and mic, DataChannels p2p application data transfer. Using css to add styles to the webcam stream. Getusermedia used for face recognition in javascript. PeerConnections buit-in p2p, codecs and … WebRTC is using a JSEP approach, App signals to the cloud and send the sessiondescription to the browser. Browser which is the caller send the media to the other caller which has done the same thing. Local session (configuration of the local side) remote session (configuration of the remote side) remote transport (configuration of how to connect) the things necessary to connect P2P. WebRTC signalling channel: XMLHttpRequest for sending the request but not for receiving. The appengine can use the channel api for sending and receiving this. B sends the session id  which is being send by the xmlhttprequest to the appengine which sends it via a channel to A. apprtc.appspot.com sample app. DataChannels low latency, high message rate/throughput, optional unreliable semantics. Good for file transfer :), decentralized networks and multiplayer games. Similar to websockets.





donderdag 30 december 2010

Spring Roo

A couple of days ago I started with Roo, just to see what it is and how difficult it is to master. The first time I read something about Roo was on a Google blog announcing it's compliance with GWT. That was when I got interested, cause I'd done something with GWT, and found it very easy to use. The second time I saw something about Roo was at the Dev day in Munich. I went like that's just some nice and powerful tool and it looked very easy to use. The next day download STS but didn't have the time trying it out.

Now I've been using it for a few days, found it nice and easy to work with. Especially when you don't have to worry about did I test everything or doing only good weather test and skipping the bad because they will work anyway. It makes test for you when you ask it to. It even modifies the toString function of a class so you don't have to. By using AspectJ it creates lots of stuff automatically so you don't have to worry about something like the annoying getters and setters. If you want you can do them yourself but most of the times I'm just to lazy to do that so I'm using the autocomplete functionality of Eclipse.

There are only a few thing I need to figure out. One for instance is how to find the AspectJ files I wanna what's in the. A second thing when using GWT is that it makes for all the classes some kind of fill in possibility. When connecting to some Google services I don't want the user to make his own connections. And then there is the site I definitely need to figure out how to make that more slick, come to think of it one thing I didn't test is what the mobile classes do within the project. If these make a mobile site or something like that, that would be awesome.

Building a "standard" Roo app with STS:
Make a Roo project and then issue these command in the RooShell in STS

  • persistence setup --provider HIBERNATE --database HYPERSONIC_IN_MEMORY
  • entity --class ~.Timer --testAutomatically
  • field string --fieldName message --notNull
  • controller all --package ~.web
  • selenium test --controller ~.web.TimerController
  • perform tests
  • perform package
Then right-click on the project and choose run on server

Building a GWT and Google Roo App with STS:
First make sure you have the plugins installed. If not go to the dashboard on the bottom of the dashboard there are two/three tabs click on the one that says Extensions.
Then find and check everything from Google, this way you have also the datanucleus plugin installed.
After this make a Roo project and issues the following commands which are very similar to the ones above:
  • persistence setup --provider DATANUCLEUS --database HYPERSONIC_IN_MEMORY
  • entity --class ~.Timer --testAutomatically
  • field string --fieldName message --notNull
  • gwt setup
Now right-click the project and run as web-application.

These are the basic steps to get you going. 

woensdag 10 november 2010

The Google developers day in Munich

It was pretty awsome. The day started for me around 3:30 with getting out of bed and driving to Munster/Osnabruck Airport. Catching a flight in to Munich. A bit early but if you don't know what to expect then it's all worth it. So I grabbed a cab to take me to the exhibition centre. I was a bit late actually I must say my boss was a bit to late. I could get a ticket to get in so my boss said you can have mine. What a nice guy he is. So when I finally arrived everyone was already in the keynote room and it was busy. I haven't seen so many people watching at four screens in my life.

The keynote
There were 2000 signups for this event and they could house only half of them. So the event probably will be bigger next year. But I think that won't help. If there were 2000 signups this year there will be 4000 next year. The history of developing apps. Most of the apps before 04/05 were desktop apps. The biggest desktop app that has been developed after 05 is Skype. So the internet gets a bigger share with apps and it will get bigger with the usage of HTML5. The only thing is the support of HTML5 by the webbrowsers. Somewhere at the beginning of this year the support for HTML5 by webbrowsers was very low but in the last couple of months all the free and multi platform browsers are supporting HTML5. So with the possibility to use the local resource of the device like for instance using the device's accelerometer to play a game in a webpage. Or using the build-in mic for a speech to text webapp. But you can also create 3D graphics and games by using WebGL. WebGL doesn't require a lot of CPU power but it uses hardware acceleration. Which is pretty cool so my Mac's CPU won't be maxed out because it also uses the GPU. Then there was a presentation about something the GWT team and VMWare have been working on: GWT + Roo. This makes it possible to develop applications with Roo and then adding a GWT webpage to it. But it doesn't stop there, it is also possible to use the app engine for data storage and launch it in the Google Cloud. To see this was pretty amazing it opens new possibilities for fast app developing and for multi-cloud development so your not stuck in the Google cloud. The reason of that we're working so much with the internet is not only it's possibilities but also that it's possible for us to access the internet on almost every device you can imagine. The real big change happened when iOS was introduced. The iPhone together with iOS made it possible for many people to get on the internet. It was possible before but the iPhone was so designed that many people wanted one. With Android there is still a long way to go but in the first few months it already beat the iPhone by small numbers. So yes Google is still thinking big about their mobile devision. You could see that by looking at where the Android sessions were being held. They had a complete hall reserved for those sessions.

Google Web Toolkit + VMWare.
I didn't know what to expect from this session at first but it looked promising. After the keynote it became clear that it was about the integration of Spring Roo with GWT. So walking to the first floor I saw that there was some food lying there and I hadn't eaten since 4am so taking a pretzel to the session. Why don't they have these thing in the Netherlands I love them. So after the t-shirt that was handed out at the entrance here was the second t-shirt of the day. A Google Chrome shirt at a Cloud Session hmm. So about Spring Roo. It's basically a program that can do a lot for you. When you say Roo make me an entry it make a class with automatically added the toString function. When you use the SpringSource Tool Suite (STS) to manage the project it's even a lot easier. For instance you have a entity and add a variable to it Roo thinks: "Hey you might want getters and setters with this" So it adds the getters and setters for this variable. You can still do this your self when you want to modify it or something but this way it's a lot quicker. The only thing I personally missed was some more info about using GWT with Roo. So I'll be figuring this out by myself. Still it's a program I want to start using to see what it can do. That's also because it uses some new techniques I want to learn like AspectJ that could simplify my code a lot. AspectJ is used in this case to house all the getters and setters and the toString methods. And did I mention that is was Cloud independent?

Excellence in the Android User Experience
The first question is where does the User Experience start? Does it start at running the App? Nope it start when the user first hears about the app. This can be in a number of ways, for example on a blog, webpage or in the marketplace. So it's important to provide that experience in the best possible way. So make an icon that is not yelling "pick me pick me" but try to make one that says "i'm part of the system". And make the description of the app as clear as possible. Another big no no is copying the interface of other devices. That's one I can understand who wants an app that looks the same on every devices but the layout of that app only preforms the best on Android. No one wants that. One surprising thing was that the speaker said don't use the hardware buttons. More or less user them for the thing they are designed for. So the menu button to show a small menu. That's what I think he meant. Another thing the speaker was pointing out is that you might want to first think of designing the lay-out and then building it. Instead of right away building the layout of the app. This is really a good point to consider, I know that I'm a developer but yeah I probably should reconsider some interfaces. Also the loading screen don't make them stop your app. What I mean is that the user wants to do something while the app is loading the information. So don't lock the app while it's loading some stuff.

Lunch!!
When 1000 people want to lunch it's busy. And I mean really busy. 1000 hungry developers what do you offer. A well different kinds of stuff. Like wraps, hamburgers, hot dogs and salads. And when everyone is eating you can quietly walk around a bit to see what is going on else where in the building.


Practical HTML5
For the ones thinking HTML5 is not popular you're wrong, and when you saw this session you probably know why. Like lunch it was busy there weren't enough chairs so the people were sitting on the ground or standing. I think this was one of the best sessions out there that day. It was showing you how to preform some need stuff with HTML5 and CSS3.The most important thing for me was to understand how some of the effects work. But also how to create my own effects. The presentation was made with HTML so that they could use all the effects within the presentation. Especially seeing how some of the games work and of course seeing the effects made it worth it. But the drag and drop from files to the webpage is super 'cause I could see that working in at least on of my one apps. Blowing up the SVG is just cool seeing that put to work.

Close to the metal: Building with the Android NDK.
When I at first heard that it was about playing with C or C++ on Android I went like yes another good show. It went not quite as I expected but still it was pretty interesting. It was more about developing games for the Android and how to make use of the NDK and OpenGL. That last part I would have liked to hear more about but still it was interesting. So one of the cons of using the NDK is catching all the events that are triggert but then again you can make use of the OpenGL libraries. The one thing I did hear before is the part of selling extra's or add-ons in the marketplace. That could be interesting. Another thing was about installation on removable memory, I didn't think that this was a big issue but apparently some users won't install the app if it is not installable on a SD card. But the widgets and live wallpapers need to be installable on the device and not on the SD or funny things will happen.

TUM presents: Visual Localization and Fast Mobile Media Search
This was a presentation about a project of two Ph.D. student whereby the app provides the user with information about what he's looking at. Something like Augmented reality. The presentation was more about how the app works. And sure it looks great and preforms well. The app provides the user with information about his location and orientation. To do this in the field there is a connection with the Google Streetview database with this information they can see what the user is actually looking at. the biggest problem they had to coop with was the fact that the GPS information in urban canyons most of the times not accurate is. Another interesting problem was the fact of different camera's with different resolution. A one on one comparison wasn't possible. What they do is create a kind of heath map of the interesting point and comparing them with the points in an image. The orientation of the user or device is being calculated on the rating of the images in the Google Streetview database. But the database is to large to send via gprs or 3g and it takes time to look at all the pictures. They have created a decision tree to solve this. First of all they fill the decision tree with a training set and then they feed the image to the tree to see which panorama has the most resemblance. They had a cool example with CD covers to show that it works.

HTML5 or Native for mobile development
I've really looked forward to this session because a couple of weeks ago I've had an argument with to of my teachers about this. Honestly I'm a pro native guy who sees that HTML5 could be nice but never can replace native. So hopefully next week I will get some questions about this discussion. One of the statement about using native for a webapp was: "if you can't improve your app by using the SDK you're not trying hard enough". It offers more features for example widgets and live wallpapers. It's faster then HTML. If you need to wait for the stuff to be come standard for all platforms then it sometimes is a long wait. Because hardware evolves faster than the standards can coop with it. It is possible to exchange data between the apps. So that was in short the pros for native. HTML5 works on all the phones not just on one therefore it also works on all the OSs. It with stay working for the next decades, that is always a con with native. You can target with CSS for specific queries. Now with HTML5 it's also possible to receive input from native stuff for instance using the GPS for geolocation in a webapp. You can make it look nice with CSS3. So the bottomline is that there isn't something like you need to do this or you need to do that.

What did I forgot?
Some stuff was interesting but I don't have enough info about was the presentation of Capgemini. Although Clojure is a thing I would like to try. Still I'm like I would have loved to see more but had to choose and it was a difficult choice to make. And I've made some pictures.
GDDDE

Websites
html5rocks.com
diveintohtml5.org
chromeexperiments.com/

donderdag 4 maart 2010

Waarom dit blog

Dit blog is meer een manier om mijn bevindingen tijdens het programmeren te delen met de wereld. Kortom kennisdeling. Ik kwam op het idee door het bedrijf waar ik op dit moment stage loop. Mijn stagebegeleider kwam met het idee om voor kennisdeling een uitbreiding te maken op het google apps blog dat zij inmiddels gebruiken. Alleen naast dit werk ben ik ook bezig om applicaties te schrijven in objective-c dus daar gebruik ik dit blog ook voor. Je kunt hier dingen als code snippets vinden maar ook misschien wel tutorials van hoe je het moet doen. Veel plezier