[GSoC2012] Weekly Update of Content Personalization Module

108 views
Skip to first unread message

Yuki Awano

unread,
May 26, 2012, 1:14:41 AM5/26/12
to silverst...@googlegroups.com
Hi,
We are writing codes of content personalization module.

This post we will tell you what's going on this project, what making us busy and what is a problem that we are facing now.

What we already implemented are...
What making us busy are...
  • Currently CPEnvironment works as stub, so add logics to make it work on the actual environment.
  • Create "DataObject"(Currently we don't have a good name of this...)
  • Provide basic interfaces to uses DataObject in the website(I don't know good at how SS3 render the page, so in this part I need more research.)
Problems that we are facing are...
  • Good name of "DataObject" and its design(DataObject is main concept of our personalization. You can check the overview of our personalization from the wiki page or the discussion. The discussion would show the details.)
You can see our codes at the repository.

We are really welcome to any comment or opinion to our project.

Thanks in advance,
Yuki

Ingo Schommer

unread,
May 28, 2012, 6:05:35 AM5/28/12
to silverst...@googlegroups.com
Thanks for the update, Yuki! Also thanks for setting up your blog at http://gsoc2012ss.yaunix.com/

May I suggest that you keep technical documentation like the CPEnvironment wiki page inside the code repo? 
In our experience, its much more likely that devs keep it updated this way (e.g. when changing an API,
and doing a global search/replace to see what code+docs are impacted).

If it gets longer than adequate for a normal PHPDoc class header, 
there's also the possibility of putting individual files into a docs/ subfolder.
There's a SS module for creating a hosted documentation site
from any Markdown files in this module. Its just a convention, not a hard-and-fast rule, of course. 

Cheers
Ingo

Yuki Awano

unread,
May 28, 2012, 12:33:16 PM5/28/12
to silverst...@googlegroups.com
Hi Ingo,

Thank you for your advice.
I added docs folder and put the document of CPEnvironment in the folder.

https://github.com/yukiawano/sscpmodule/commit/1ebde46c8c9a6d8c9b262b8bbba4c066394d2552

Best regards,
Yuki

Yuki Awano

unread,
Jun 8, 2012, 1:37:51 PM6/8/12
to silverst...@googlegroups.com
Hi,

We released the first alpha version of our module now!
While features are limited in this version, but you'll be able to get a quick look of our module.

You can download or see this module and documents from the below repository.


If you want to see the live demo of our module, access to the url below. Personalized content is shown in the right-side box.


This version is under development, and we need many feedbacks.
We are really welcome to any comment, opinion.

Thanks.

* DO NOT use this module on the practical environment, because this version is unstable, and there would be many large changes in the future.

Best regards,
Yuki

Sigurd Magnusson

unread,
Jun 10, 2012, 7:08:37 PM6/10/12
to silverst...@googlegroups.com
Yuki - awesome. With the demo site could you show a screenshot (or two) of the management interface so that it's easier for people to quickly get an understanding of how to manage the content?

I'll check out the demo code this week… :)

Cheers,
Sigurd.


Best regards,
Yuki

--
You received this message because you are subscribed to the Google Groups "SilverStripe Core Development" group.
To view this discussion on the web visit https://groups.google.com/d/msg/silverstripe-dev/-/f-HXcQU70PAJ.

To post to this group, send email to silverst...@googlegroups.com.
To unsubscribe from this group, send email to silverstripe-d...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/silverstripe-dev?hl=en.


Yuki Awano

unread,
Jun 11, 2012, 12:00:13 AM6/11/12
to silverst...@googlegroups.com
Hi Sigurd,

If this is not enough, please let me know.

Best regards,
Yuki

Sigurd Magnusson

unread,
Jun 11, 2012, 7:42:24 AM6/11/12
to silverst...@googlegroups.com
Oh that getting stated guide is excellent, and I get a good grasp of what's involved in personalising content from that... You've made some good progress. :)

Do you have a list of key features you're working on, with certain items showing done and not yet done? :)
(Perhaps the front page of the demo is a good place for this?)

Hah I see your demo has "kia ora!" - how did you find that New Zealand phrase? :)

Cheers,
Sigurd.



Yuki
--
You received this message because you are subscribed to the Google Groups "SilverStripe Core Development" group.
To view this discussion on the web visit https://groups.google.com/d/msg/silverstripe-dev/-/SZ3ceE7uMFMJ.

Nicolaas Thiemen Francken - Sunny Side Up

unread,
Jun 12, 2012, 5:56:29 AM6/12/12
to silverst...@googlegroups.com
just a wee random note on personalisation:

on personalisation.... Google would be a good place to look at.  You noticed that if I regularly search for something and always click on the same thing - then google will move the specific link to the top of the search results for me.

I also noticed that because my language is set to Maori within Google.com, I get less advertisements as not many people advertise in Maori.... NICE!

Nicolaas

Sigurd Magnusson

unread,
Jun 12, 2012, 7:24:40 AM6/12/12
to silverst...@googlegroups.com
Nicolaas, thanks for your input.

There's already an idea to have searches performed on a site to generate personalisation, so you could be getting something related to what you're suggesting.

I don't think the language setting has been considered in this project; multiple language websites is a related concept handled by a different set of code / module.

Sigurd.

--
You received this message because you are subscribed to the Google Groups "SilverStripe Core Development" group.
To post to this group, send email to silverst...@googlegroups.com.
To unsubscribe from this group, send email to silverstripe-d...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/silverstripe-dev?hl=en.



--
Sigurd Magnusson
Business Relationship Manager
SilverStripe

Mobile: (NZ): +64 21 42 12 08
Skype: sigurdmagnusson

Yuki Awano

unread,
Jun 12, 2012, 12:33:06 PM6/12/12
to silverst...@googlegroups.com
Hi Sigurd and Nicolaas,

Thank you for checking our updates and your great inputs.
Sorry for this late reply.


There's already an idea to have searches performed on a site to generate personalisation, so you could be getting something related to what you're suggesting.

I think this would be query based personalization.
I and Philipp talked about this yesterday. And we decided not to implement this feature at this time.
Translation is one of query based personalization. But IMHO, it is the only use case of query based personalization.

Of course, this is not a final decision, and we develop this module according to feedbacks or actual needs.
So if there is use cases or need for query based personalization, we'll implement it.
Otherwise we focus on Block Based Personalization which we are currently developing.


Do you have a list of key features you're working on, with certain items showing done and not yet done? :)

Currently we do not have a long term schedule of implementation. However, you can check what is keeping us busy from issues.
(I should add long term schedule in the front page or good place.)


Hah I see your demo has "kia ora!" - how did you find that New Zealand phrase?

I cannot remember where the page is, I found the phrase in reference of silverstripe. :)

Thanks,
Yuki

Dan Rye

unread,
Jun 12, 2012, 6:04:02 PM6/12/12
to silverst...@googlegroups.com
Yuki, nice work.

One suggestion, I saw your note about IP based geo location.  Have you considered (or are you already) using html5 geolocation api?  I'd recommend using this with fallback to a service, rather than utilizing a service as your primary source of location data.

Do you have documentation of the list of items you can use within AudienceTypes?

Again, nice work!
-Dan

--
You received this message because you are subscribed to the Google Groups "SilverStripe Core Development" group.
To view this discussion on the web visit https://groups.google.com/d/msg/silverstripe-dev/-/kgzTi6UIhJIJ.

Sigurd Magnusson

unread,
Jun 12, 2012, 6:08:52 PM6/12/12
to silverst...@googlegroups.com
Dan, that's a good suggestion.

Sig

Sigurd Magnusson

unread,
Jun 12, 2012, 6:22:44 PM6/12/12
to silverst...@googlegroups.com
It also seems possible to http://www.w3.org/TR/system-info-api/#network will one day (when browsers support it) allow javascript to query the type of internet connection and its theoretical connection rate. (e.g. "802.11g, 54mbit"). Not sure its on the table for this GSoC project, I think, but would one day enable content to be personalised based on bandwidth.

Cheers,
Sigurd.

xeraa

unread,
Jun 12, 2012, 10:36:24 PM6/12/12
to silverst...@googlegroups.com
Hi,

thanks for the feedback! We will definitely add more features later on, but IMHO the next important step is the integration of custom extensions.
We'll never be able to cover all use cases and requirements, so other developers should be able to easily extend the module.
Once we've established a solid foundation, we'll take another look at generally desired features.

That's at least what I would do - what do others think?

Cheers,
Philipp

PS: "we" means mostly Yuki, I'm just watching ;-)


Am Mittwoch, 13. Juni 2012 00:22:44 UTC+2 schrieb Sigurd Magnusson:
It also seems possible to http://www.w3.org/TR/system-info-api/#network will one day (when browsers support it) allow javascript to query the type of internet connection and its theoretical connection rate. (e.g. "802.11g, 54mbit"). Not sure its on the table for this GSoC project, I think, but would one day enable content to be personalised based on bandwidth.

Cheers,
Sigurd.

Yuki Awano

unread,
Jun 13, 2012, 2:03:02 PM6/13/12
to silverst...@googlegroups.com
Hi,

Thanks a lot for your great inputs!


Have you considered (or are you already) using html5 geolocation api?

Yes, I have. There are three points, I didn't choose html5 geolocation api at this time.

  1. Supported browser is limited - Some browsers does not support this API.
  2. User is asked to share geo location information - Of course, this may be good from privacy view point. But IMHO it's a bother.
  3. It is Javascript API - The biggest reason is this. Html 5 geolocation api is Javascript API. So if we want to use this API for getting location, we should callback to the server and update personalized area asynchronously.

What do you think about this?

Do you have documentation of the list of items you can use within AudienceTypes?

Thanks for pointing out. I added the list of available conditions.

It also seems possible to http://www.w3.org/TR/system-info-api/#network will one day...

This is interesting. I want to add this as condition.

As we consider the Html 5 geolocation api and system information api, we may need to think about rendering personalized area asynchronously.
 
Thanks again,
Yuki

Dan Rye

unread,
Jun 13, 2012, 2:20:39 PM6/13/12
to silverst...@googlegroups.com
All good points.  
  1. Supported browser is limited - Some browsers does not support this API.
  1.  - It's actually pretty decent, and especially on mobile browsers.
  1. User is asked to share geo location information - Of course, this may be good from privacy view point. But IMHO it's a bother.
  1. - Yes, I think this is a good thing.  And you can still fall back to the service when they decline
  1. It is Javascript API - The biggest reason is this. Html 5 geolocation api is Javascript API. So if we want to use this API for getting location, we should callback to the server and update personalized area asynchronously.
  1. - I do not see this as much of an issue, I'd think you'd want asynchronously controlled conditions available. 
Thanks!
-Dan

--
You received this message because you are subscribed to the Google Groups "SilverStripe Core Development" group.
To view this discussion on the web visit https://groups.google.com/d/msg/silverstripe-dev/-/_OisSGboTkwJ.

Sam Minnée

unread,
Jun 13, 2012, 4:34:22 PM6/13/12
to silverst...@googlegroups.com, silverst...@googlegroups.com
Most content personalisation would involve manipulating that server-generated content. Otherwise you're going to have to radically change the way a site is built in order to get personalisation. So, it's pretty important.

You could potentially resolve this by setting a session cookie containing location data.

xeraa

unread,
Jun 13, 2012, 5:13:59 PM6/13/12
to silverst...@googlegroups.com
You could potentially resolve this by setting a session cookie containing location data.

The current approach is based on cookies anyway, so this should be a easy to do. And there's already https://github.com/silverstripe/sapphire/blob/master/thirdparty/jquery-cookie/jquery.cookie.js :-) 

Yuki Awano

unread,
Jun 14, 2012, 12:45:44 PM6/14/12
to silverst...@googlegroups.com
Thanks.

I get to know that there are a lot of good points in Html 5 geolocation api.

As philipp mentioned, we are currently using Cookie for storing visitor's information, thus we  can change the value from html 5 geolocation api.
But before running the javascript we need to return a page for the user, so I thought that we need asynchronous personalization. I mean update the personalized area in the lazy way.

However, today I thought the problem of lack of personalization for new comers. And I became to think that it is not so big problem.
Because I think personalization is mainly for return users.

We are going to actively add the javascript API based conditions in the future.
What do you think about this?

Thanks again,
Yuki

Yuki Awano

unread,
Jul 13, 2012, 11:56:19 PM7/13/12
to silverst...@googlegroups.com
Hi!

I'll post the current update of our module.

We extended the location condition that uses html5 geo location API.
I also added nearest option to Location condition.

You can get a demo of our module at http://sandbox.yaunix.com/ .

Our location matches with address by default. We think this behavior is intuitive.
However, sometimes you want to match the location to nearest location.

I'll show you a example. If you give the conditions below and the visitor has accessed from San Diego,

Location: San Francisco
Location: Los Angeles

both conditions are false and they won't get any content.

On the other hand, if you add nearest option to conditions and the visitor has also accessed from San Diego,

Location: nearest(San Francisco)
Location: nearest(Los Angeles)

the Los Angeles becomes true.

By using nearest option, you can show the nearest store for the visitor, even when there is no store in the city where the visitor lives in.

Is the nearest option enough for the personalization that you want? Or we need to add another option for Location condition?

We are happy to hear your feedback.

Best regards,
Yuki

Dan Rye

unread,
Jul 14, 2012, 10:39:12 AM7/14/12
to silverst...@googlegroups.com
Nearest is a great concept. Nice work.  The only other condition that comes to mind is a radius, I think you'd want the radius relevant to the viewers location not the location conditions.  Just an idea, but what you have is intuitive and useful, good job.

-Dan

Yuki

--
You received this message because you are subscribed to the Google Groups "SilverStripe Core Development" group.
To view this discussion on the web visit https://groups.google.com/d/msg/silverstripe-dev/-/RBCVK654u_oJ.

Yuki Awano

unread,
Jul 16, 2012, 12:37:18 PM7/16/12
to silverst...@googlegroups.com
Hi Dan,

Thank you for your feedback!
I'll add in-option, by using which you can specify the location with the center point and radius.

Thanks,
Yuki

Dan Rye

unread,
Jul 16, 2012, 3:22:28 PM7/16/12
to silverst...@googlegroups.com
I think this is a great project.  And it's something like the User Forms module in it can be extended by the community to include all sorts of other content personalization.

Again your solution is likely valuable in certain circumstances, but what I'm meaning is more like this:
  1. User has a location (lat long, address, whichever)
  2. Condition has been set withinRadius(SOMEDISTANCE) //Somehow units need determined (km, m)?
  3. Content has been created with a location (lat long, address, whichever)
Result:
Content will be delivered if the content's location is within the radius SOMEDISTANCE of the user's location

Does this make sense?  I think it's a more common way of thinking of location based content.

Yuki

--
You received this message because you are subscribed to the Google Groups "SilverStripe Core Development" group.
To view this discussion on the web visit https://groups.google.com/d/msg/silverstripe-dev/-/8r0xONi8o-YJ.

Nicolaas Thiemen Francken - Sunny Side Up

unread,
Jul 16, 2012, 9:53:27 PM7/16/12
to silverst...@googlegroups.com
This might be of use (some sql code useful in working out distance between two points):

Yuki Awano

unread,
Jul 16, 2012, 10:06:07 PM7/16/12
to silverst...@googlegroups.com
Hi Dan,

Sorry.
My description was not good.
I meant same as you did.

In-option can be used like in((lat,lon), 10km)

While it's just a parser for this, I've started to code this feature. 


Thanks,
Yuki

Yuki Awano

unread,
Jul 16, 2012, 10:09:09 PM7/16/12
to silverst...@googlegroups.com, n...@sunnysideup.co.nz
Hi Nicolaas,

Thank you!

- Yuki

2012年7月17日火曜日 10時53分27秒 UTC+9 Nicolaas Thiemen Francken - Sunny Side Up:

Yuki Awano

unread,
Aug 3, 2012, 12:16:02 PM8/3/12
to silverst...@googlegroups.com
Hi!

We made some changes for our module in the past weeks.

1. Debug Toolbar

We added debug toolbar.
You can change your current location by using it. 
And you can also check your current status about personalization.

You can check the demo of debug toolbar at http://sandbox.yaunix.com/ .

Currently, we show the debug toolbar for everyone as a demo.
In the future, it will be shown only for people who are logged-in.

2. Performance Improvement

We made some performance improvements.
We think the performance is really important in practical use.
Some statistics show that response time of a website affects conversion rate.

The biggest improvement of the performance is default location.

Now, our module uses default location as the location of new comer.
Location of a visitor is gotten in background by using javascript.


I have an entrance exam of graduate school on August 6 and 7.
For the next few days, I'll focus on studying for the exam.
After that, I'll change the debug toolbar is shown only when you are logged-in, and makes improvements for the real use.

Thanks,
Yuki

Yuki Awano

unread,
Aug 3, 2012, 12:21:12 PM8/3/12
to silverst...@googlegroups.com
P.S.

I've forgot to write the url of the repository where our code is hosted.
You can get the code of our module at https://github.com/yukiawano/sscpmodule .

Thanks again,
Yuki
Reply all
Reply to author
Forward
0 new messages