Profile

Cover photo
Verified name
Gerwin Sturm
Works at FoldedSoft e.U.
Attended TU Wien
Lives in Vienna, Austria
49,846 followers|11,126,034 views
AboutPostsPhotosYouTube+1'sReviews

Stream

Gerwin Sturm

Shared publicly  - 
 
Weee, episode 2 of Broken Sword 5 is finally here.

Guess I'll replay from episode 1 though, been a while...

And some day I might actually get my backer package for this kickstarter project as well...
4
l cy's profile photo
l cy
 
pretty much what i will be doing as well, still, cant believe it's over and actually not that late... wow...
Add a comment...

Gerwin Sturm
moderator

Discussion  - 
 
Some issues I stumbled upon with the different gapi.auth functions of the javascript library, which others might find confusing as well:

------------------------

gapi.auth.authorize and gapi.auth.signIn use differently named parameters.

gapi.auth.signIn({
  "clientid": "...",
  "cookiepolicy": "...",
  "requestvisibleactions": "...",
  "callback": "...",
  "scope": "..."
});

vs.

gapi.auth.authorize({
  "client_id": "...",
  "cookie_policy": "...",
  "request_visible_actions": "...",
  "scope": "..."
}, callback);

The use of underscores vs. no underscores can be confusing, especially since the errors you get when using the wrong parameters not always tell you what the problem actually is.

I've raised issues to get more consistency between those two:
https://code.google.com/p/google-plus-platform/issues/detail?id=814
https://code.google.com/p/google-api-javascript-client/issues/detail?id=141

------------------------

gapi.auth.signOut() doesn't have a callback parameter.

It usually calls the callback that is either defined via page-level configuration
<meta name="google-signin-callback" content="signinCallback" />
or in the markup of a sign-in button

It doesn't call a callback if you have previously called
gapi.auth.signIn({
  "clientid": "..:",
  "callback": "myCallback"
});

I've added a feature request for the possibility to define a callback for the gapi.auth.signOut method as well: https://code.google.com/p/google-plus-platform/issues/detail?id=815
5
Add a comment...

Gerwin Sturm

Shared publicly  - 
 
The other half of photos from last weekend :)
 
Photos of the OSN Convention Mennorode 2014 in the Netherlands last weekend are now online here and on our homepage http://www.origami.at/en/osn2014.php
6
Add a comment...
 
Dart People Mosaic

Photo mosaics have fascinated me for quite a while, so some time ago I had the idea of turning a profile photo into a photo mosaic using the profile photos of people in your circles. I then quickly forgot about that idea, remembered it again, started with some coding, got distracted with some other projects, remembered it once again, found my code and finished the project now.

Originally I had planned to implement it using Dart Isolates/Webworkers but I have run into some problems with this approach. Firstly Isolates don't have access to the DOM, meaning I couldn't use Canvas objects there (and Dart isolates can't use HttpRequest either which I could have used for fetching the list of people from the Google+ API). So I did all the fetching and getting the colour information for all the profile images asynchronously in the main process.

I then wanted to send this information to an Isolate for actually choosing the best photos for each "pixel" of the main photo. This worked very nicely in Dart but somehow didn't work when combiled to JavaScript (and unfortunately Isolates aren't very well documented yet either...)

So I'm now doing all the calculations in the main process, but asynchronously via Futures as to not freeze the browser completely.

Another challenge I came across is how best to calculate an average colour for an image to match against a pixel of the main image. My first attempt was using drawImageScaled(img, 0, 0, 1, 1) on a 1x1 pixel canvas, but the canvas image scaling method didn't work nicely.
As it turns out I could let Google do this work for me by appending a `sz=1` parameter to the profile images, which gave a much better average colour for the image and didn't take any computation on my side at all.

So the full process works like this now:
1 -> Sign in with Google
2 -> Fetch profile image and list of people via Google+ API
3 -> Fetch profile images for all people in two sizes: one small image to be used in the mosaic and one 1x1 pixel image to get the colour.
4 -> Put the profile image on a canvas and read out the pixel colours.
5 -> For each pixel find a close match from the profile images (trying to reduce reuse of images as much as possible)
6 -> Put the small profile images in the correct spot of the mosaic.

There's a version of this live here if you want to give it a try:
https://scary-experiments.appspot.com/dartmosaic/

It takes a while at first to load all people and profile images, but you can then play around with the tolerance parameter to see what produces the best results for your profile photo selection.
Smaller values will match the colours more closely, but you will have  a higher rate of repeated profile photos.
Higher values will add more diversity but can easily distort the image.
I found the best results between 5-10 for me, but that totally depends on what and how many photos are available.

If you don't like the photo selection you can always "Disconnect" and then Sign in again and choose different circles to expose to the script during authentication.

There are definitely much better photo mosaic algorithms out there, but this one works rather quickly AND is fully implemented in Dart, which I think is a first ;)

Source code available if you want to play with it a bit, e.g. using other images than your profile image like I did with the Dart logo in the screenshot :)
https://github.com/Scarygami/dart_people_mosaic


#gde   #googleplus   #dart   #dartlang   #opensourcecode  
38
11
Alok Tiwari's profile photoThomas Fiedler's profile photoGerwin Sturm's profile photoNate Taylor's profile photo
17 comments
 
Totally splendid +Gerwin Sturm ,I love it .
Add a comment...

Gerwin Sturm

Shared publicly  - 
 
Oooh, nice! No more having to disable apps / enable billing for the multiple test projects I have running :)

Especially useful since creating new projects in the new Google Developers Console still automatically creates an App Engine application even if you don't need one.
 
Did you know you can now have up to 25 free apps in your #AppEngine account ?
13
2
Mario Ezquerro's profile photoCarlos Vaca's profile photoFernando Miguel's profile photo
 
Pues si  para poder practicar sin problemas o para dar las charlas estaría bien tener alguna mas.
 ·  Translate
Add a comment...
16
1
Gerwin Sturm's profile photoJaana Nyström's profile photoGoogle+ Facial Hair Club's profile photoZawali Shah's profile photo
5 comments
 
Respect!
Add a comment...
In his circles
1,365 people
Have him in circles
49,846 people

Gerwin Sturm

Shared publicly  - 
65
27
Chris Ruhs's profile photoRicarda Riechert's profile photoRichard Wooding's profile photoAdel Alsabeeha's profile photo
 
Back in my day, you had to use a separate app like AfterFocus to blur up your images, and you liked it.  Uphill, both ways.
Add a comment...

Gerwin Sturm

Shared publicly  - 
 
Some random impressions from Amsterdam, Artis Zoo, Lelystad and Oostvaardersplassen.
44
5
Sirine Ar's profile photoPhillip Ressler's profile photoFlorentina Huaman's profile photoCarolina Huignard's profile photo
3 comments
 
Was für ein wunderschönes Blumenmeer - DANKE, lieber Gerwin!
 ·  Translate
Add a comment...

Gerwin Sturm

Shared publicly  - 
 
You can also track the issue here: https://code.google.com/p/google-api-javascript-client/issues/detail?id=136

Update: Everything back to normal.
 
PSA
Because of an issue on Google's side +All my + statistics (and many other tools depending on Google APIs) are currently not working. Google has been informed and is working on it.

This post will be updated as soon as there are news.
4
1
Merry Lauren's profile photoMike Mackley's profile photo
 
Thank you
Merry🌻
Add a comment...

Gerwin Sturm

commented on a video on YouTube.
Shared publicly  - 
 
Very interesting talk, definitely worth watching (as is any talk by +Ade Oshineye really). Also a lot of content that will be interesting to non-developers.
19
9
Vladimir Bjelakovic's profile photogeorge oloo's profile photoGerman Quiroz's profile photoBart Ettinger's profile photo
 
grow what with google?  they getting into agriculture now? LOL
Add a comment...
People
In his circles
1,365 people
Have him in circles
49,846 people
Work
Occupation
Software Developer
Skills
Writing Code, Solving Rubik Cubes, Designing Origami
Employment
  • FoldedSoft e.U.
    Owner & Developer, 2010 - present
  • Bayer Austria
    Sysadmin, Software Developer, 1997 - 2009
  • Christophorus Verlag
    Author, 2007 - 2008
    "Origami - Kreative Falt-Ideen" published in 2008 which includes original and traditional Origami Models. / "Origami extra groß" a compilation published in 2013 including several of my models.
  • Halvotec
    Web Developer, 1999 - 2000
Places
Map of the places this user has livedMap of the places this user has livedMap of the places this user has lived
Currently
Vienna, Austria
Previously
Knittelfeld, Austria - Grafenwörth, Austria - Spielberg, Austria - Växjö, Sweden
Story
Tagline
Origami-loving computer geek
Introduction
Computers, Origami, Photography, Music, Android, Cooking, Rubik Cubes and variations, ...
Just to name a few of my interests :)

Very active in developing and playing around with several Google APIs including the Google+ APIs. For my activities, open source projects and support in this area I have been granted membership in the Google Developers Expert program as Google+ GDE 2012-2013.

I have started a series of "About me"-posts which you might want to check out to learn more about me. Start here
Bragging rights
Author of a well-selling Origami book / one of the very first Austrians on Google+ / Google+ GDE 2012-2013 / wrote Glassware before the Mirror API actually launched (and without owning Glass)
Education
  • TU Wien
    Computer Science, 1998 - 2004
  • BG/BRG Knittelfeld
    1989 - 1997
  • VS Knittelfeld
    1987 - 1989
  • VS Grafenwörth
    1985 - 1987
Basic Information
Gender
Male
Looking for
Friends, Networking
Relationship
In a relationship