Ozten Recent Activities

Home › Items tagged with research

  • A Sketch of PO LiveEdit

    Frédéric Wenzel has a great series of L10n blog posts going and there has been a lot of discussion of L20n work at Mozilla. I ping’d Fred to check in and share an idea with him… What if you could directly edit the copy on the staging server of a website and have it transparently save your changes in the background without messing with PO files, SVN access, etc You’d eliminate lots of problems that localizers have… and provide a richer, fun editing environment. Like any idea worth building… I found out it’s already been invented A few months back when I pitched this idea to Stas Malolepszy, he mentioned that Gandalf already thought of the idea and built a prototype. I’m realizing that this has been sitting in my TODO list for too long and I’m better off doing a brain dump in this blog post. Here’s my take on the idea: Design Constraints: Keep po files as the backing store Work as much as possible with existing gettext tools Use direct object manipulation for the UI - pick strings directly from page, see live updates Requirements: Let localizer view a web page and pick a string to translate Display an editor widget that sit on top of or beside the page Display the msgid and msgstr. In practice this is the English String and the Localized version. As they type, redisplay the page with their updated translation Provide a revert button Provide a save button. Save persists this string back to the po file server which commits the change to SVN. PO LiveEdit at 10,000 feet

    PO Enhanced HTML – In PHP or other web code, instead of making calls to gettext methods, a set of wrapper methods would be used which add metadata to the HTML output. This would basically add the msgid to a span tag that surrounds the output of the msgstr. This would extra metadata wouldn’t affect the display, but would capture the semantics of a localized string. Old PHP code <p><?= _(‘Be the Difference’); ?></p> outputs <p>Fai la differenza</p> New PHP cde: <p><?= _w(‘Be the Difference’) ?></p> outputs <p><span id=‘md5_58cbc46092296cbe517d748685f52838’>Fai la differenza</span></p> PO Edit Client - This editor would use the msgid or some other token (such as the md5 hash of the msgid) from the enhanced html, to retrieve the information for an individual string and display it for editing. The comments, English translation, and Current localization string would be displayed. The editor would be aware of the current locale which is a page. It would be a live editor where changes would be reflected in the web page as you type. PO Edit Web Service – The server manages the collection of messages.po files for a web application. It’s provides read and write access to the PO Edit Client, one string at a time. It manages commits to SVN and conflict management.  Technology: So three are three components to build… PHP gettext wrapper libraries, which are pretty trivial and produce the enhanced metadata in the HTML, a Server and a Client which lives within the browser. Server Either a stand-alone python server using Stas and Zbigniew’s [https://wiki.mozilla.org/Silme Silme library], or integrated into an existing web based L10n tool like [http://en.wikipedia.org/wiki/Pootle Pootle], it would provide a REST web service for editing po files by locale and msgid. Client The client can be built as either: Pure JavaScript included from the page Addon – Firefox/Fennec Extension Pure JS has the benefit of working with any browser (Safari on iPhone, IE 6 in corporate dungeon, etc). It has the negative affect of introducing L10n only code that you wouldn’t want to push to production. It adds another integration point to every app. The Addon has the benefit of being totally isolated from the specific web application’s codebase, which makes for easier adoption. The client would have the ability to use the PO Edit WS without any same-origin policy limitations. Downsides are that it’s requires Firefox or Fennec and it is an extra step for localizers. Either way, a simple textarea will be a good start for a prototype. Localizers will be loosing any features of their current text editor (say POEdit), but they will gain rich “preview”. For a prototype, the addon route could be built out of an existing extension, such as Jetpack Slidebar or Ubiquity pageLoad command, since it’s a more rapid development env. Considerations: The devil is in the details, here are some design decisions. By default, does this introduce a new requirement for a L10n preview environment? Or is the web application in a testable state?  Adding String Metadata changes the web application and invalidates it for QA, unless you ship this metadata in the production version also. The ’right’ thing to do would be to introduce a localization step into the SDLC, but this might lower adoption. Or you could focus on making the implementation of the String Metadata really light weight, so it would have minimal overhead and not need an additional phase, since it could ship to production and other applications can invent new uses for this metadata. Exposing hard to reach state: Many strings are hidden behind a hard to reach sequence… such as error messages. A common practice in web app development is to expose every part of the app through testing hooks. Many large applications grow these features through time, such as allowing testers special query string parameters for each error condition to simulate the error. Another example is web apps with emails; provide urls so that each email is a click away w/o actually running through the registration process. These kinds of hooks would make translation easier and you’d have to list them somewhere so it’s easy to find them all. These become a requirement for a live web editor, unless you make the user jump through steps to reach all the states of the UI. Out of Scope(?) but on the Radar A real-time synchronization between the client and server would be ideal, so that multiple localizers could see who was editing a string and to reduce conflicts. Mike Morgan and Fred have suggested Bespin which is a freaking awesome idea. Wrapping up If we had a web based live editor for translating sites, this could be a huge win for localizers and the people of earth. Translating a website is one of the most painful and dangerous workflows I’ve seen. You know we have an amazing community, if they are willing to put up with the draconian toolchain we have today. Throwing everything out, is simply not an option, but if we can make a small evolutionary improvement towards a live preview edit workflow which hides revision control systems and text files… There are plenty of sticky corner cases and whiz bang features one can dream up, but I think building a prototype for this is a tractable problem. I did some brainstorming with Fred this morning and he had lots of other cool ideas and good observations on how this would work in practice.

    • Tags:
    • programming
    • mozilla
    • research
    • webdev
  • Shutting off MOBhat to Evaluate Results

    I’m turning off the service for a while because of the following:

    The new FriendFeed launch I’ve gathered enough data and feedback to evaluate the experiment I’m book with work for the next month

    Thanks to everyone who watched the video, or played with the MOBhat experiment. I’ll be sending you a survey shortly. If the email address you signed up with isn’t your preferred one, direct message me with your real email. Thanks again for all the help!

    • Tags:
    • research
    • oface
    • MOBhat
  • Introducing MOBhat « 70’s Futurisitic Technology

    I am ready to launch my Lifestreaming experiment… and I need your help. Video Introduction to the MOBhat social identity faceting service.

    • Tags:
    • software
    • research
    • lifestream
    • lifestreaming
    • socialnetworking
    • oface
    • identity
    • webservice
    • MOBhat
    • activitystream
    • experiment
    • launch
    • socialmedia
    • dataportability
  • Schizophrenics see through hollow-mask illusion - health - 07 April 2009 - New Scientist

    Telling the front from the back of a mask can be more difficult than it seems. Thanks to an effect called the hollow-mask illusion, the brain can have trouble deciding if the image is convex or concave.

    But, it seems, not everyone struggles to correctly determine the mask's orientation. New research shows that people with schizophrenia are immune to the effect – a finding that means the illusion could provide a diagnostic test for the condition.

    • Tags:
    • science
    • research
    • psychology
    • brain
    • illusion
  • A Sketch of OFace on Vimeo

    I’ve put together a screencast describing my social identity project. A Sketch of OFace from Austin King on Vimeo. Here is a transcript of the voice over: Welcome to this screencast “A Sketch. of OFace”. What I am presenting is an idea I have been working on called “Social Identity Faceting”. Okay, so what’s the problem? Lifestreaming and Social Networking sites create information overload. I might follow someone because I am interested in their ideas about programming, but they will pollute their stream with drunken rants or tirades about football. Individual sites let us be more polite to our readers by creating tags or categories. I can follow someone’s delicious bookmarks by tag and this helps the issue, but when we look at cross site publication it fails. There is no easy way to channel your content to the right audiences. An example of a Lifestream application is Friend Feed. It let’s you keep up to date with your friends. What have they been doing? Friend Feed slurps in your, Blog posts, Bookmarks, photos, etc. Maybe what we need is to make our “Social Identities” first class objects. Erving Goffman helped us understand that people have many social identities. The idea of this experiment is not about hiding things from people. The fact that a dominant facet of your life is the Furry community is something you can better capture with this service, but not something you would be able to cloak. This is about being polite and helpful by creating channels of activity across the various facets of your life and your communities. So here is a simple “social identity switcher” where you can switch your current facet. Patty here had been wearing her Family hat, while she was uploading family photos on Flicker, but is going to get back to work so she switches to Web Div. If patty looks at her own FriendFeed stream, she will now only see things she did while wearing her web div hat. If she disables OFace, all the items are shown. Too much information girlfriend. Turning OFace back on she can switch from web div to family or art. This is because between the Tweet we see and the bookmark we see, there are 5 items hidden. A family, followed by 3 art, and lastly another family item. She chooses to switch her facet to family. Now we see three new posts which were hidden. This is switching that is integrated into the page instead of the stand alone facet switcher we saw earlier. Again patty has switched facets into the artsy side of her life. If another one of Patty’s friends was using OFace and FriendFeed and they came to this page with their art hat on, this is the stream they would see. The wouldn’t be bothered by her family or web div items, unless they wanted to also see those. So OFace allows Patty to explicitly tag why she create this photo or that Twitter message. It was for her art posse or her work crew. So that’s the sketch of OFace. Some chunks are built and other’s were faked and it’s going to probably need a better name than OFace. I am slowly chipping away on this because I think it might be a viable solution and because I need to finish a Master’s Thesis. Please let me know what you think and if you’d like to be part of building this service. Give me a shout out, in email or find me on the web. shout at ozten dot com.

    • Tags:
    • research
    • oface
  • How to setup php-atompub-server

    I am slowly hacking away at my identity faceting service and wanted to play with exposing facet history with atompub. I found Jeroen Hoekx’s php-atompub-server. This post is how to setup an Atompub server using PHP5. This post assumes you are using (and are familiar with ) Apache2, PHP 5, and Linux. I will be doing this on an Ubuntu VM which I’ve hardcoded into my /etc/hosts file as ofaceatom.ubuntu. I’ll walk you through what I did to get the test app up and running, but you might want to read  php atompub server’s wiki Overview and then HTTPServer for more background. Pick a place to install. I will refer to this as $DEV_PATH cd $DEV_PATH svn checkout http://php-atompub-server.googlecode.com/svn/trunk/ php-atompub-server-read-only On your development machine, map an apache2 VirtualHost’s DocumentRoot to $DEV_PATH/php-atompub-server-read-only Edit $DEV_PATH/php-atompub-server-read-only/app/start/start.php $base_uri = new URI(”http://ofaceatom.ubuntu/app”); Create a .htaccess file in $DEV_PATH/php-atompub-server-read-only/app/ RewriteEngine On RewriteRule ^(.+) start.php DirectoryIndex start.php chmod go+w $DEV_PATH/php-atompub-server-read-only/app The server will create ’store’, ‘lists’, and ‘cache’ directories under the app directory, but mkdir will fail in appfilestore.php if apache doesn’t have permission to write here… Make a request to http://ofaceatom.ubuntu/tools/ an ensure that you get a directory list of data1.xml manager postatom.html If you point your browser to http://ofaceatom.ubuntu/app/ you will see the output <service> − <workspace> <atom:title>PHP AtomPub Server</atom:title> − <collection href=”test/”> <atom:title>AtomPub Test: Test</atom:title> <accept>/</accept> </collection> − <collection href=”news/”> <atom:title>AtomPub Test: News</atom:title> </collection> − <collection href=”media/”> <atom:title>AtomPub Test: Media</atom:title> <accept>/</accept> </collection> </workspace> </service> or it may ask you to save a file, depending on your setup. (the mime-type is application/atomsvc+xml) Test Page http://ofaceatom.ubuntu/tools/postatom.html is an HTML based Atom client which you can use to test the server. Change the URI feild to your hostname. For me that’s http://ofaceatom.ubuntu/app/ Click Submit and you will see STATUS: 200 Ok Date: Sat, 24 Jan 2009 02:46:00 GMT Server: Apache/2.2.8 (Ubuntu) PHP/5.2.4-2ubuntu5.3 with Suhosin-Patch X-Powered-By: PHP/5.2.4-2ubuntu5.3 Cache-Control: must-revalidate Etag: “21a609367f0b4ee98bba15771419be4d;gzip” Content-Encoding: gzip Vary: Content-Encoding Content-Length: 254 Content-Type: application/atomsvc+xml <?xml version=”1.0″ encoding=”utf-8″?> <service xmlns=”http://www.w3.org/2007/app” xmlns:atom=”http://www.w3.org/2005/Atom” > <workspace> <atom:title>PHP AtomPub Server</atom:title> <collection href=”test/”> <atom:title>AtomPub Test: Test</atom:title> <accept>/</accept> </collection> <collection href=”news/”> <atom:title>AtomPub Test: News</atom:title> </collection> <collection href=”media/”> <atom:title>AtomPub Test: Media</atom:title> <accept>/</accept> </collection> </workspace> </service> Clicking the Clean button will clear the output. Notice that there is a “test” collection… lets look at it. Change the URI input to http://ofaceatom.ubuntu/app/test/ And press Submit We see an empty Atom feed. We’ve been using the GET  method, let’s create an item. Change the METHOD input to POST and click submit. STATUS: 201 Created You’ll need to have a unique SLUG value for each post on the test collection. The item lives at http://ofaceatom.ubuntu/app/test/test.atomentry Using PUT on this url, you can change the contents of that item. Now you can go back to the atom feed at http://ofaceatom.ubuntu/app/test/ And your item is in the list. Once you create more than 10 items, this feed is paginated. You can now play around with news and media collections just like test. Note that news requires the http://htmlpurifier.org/ library to be installed as noted on the wiki at  SanitizingInput. If you get tired of changing the URI, you can  edit line 11 of $DEV_PATH/php-atompub-server-read-only/tools/postatom.html to change the prefilled value for the atom service document.getElementById(”uri”).value = “http://ofaceatom.ubuntu/app/”; All in all a very cool project from Jeroen. To learn more and play with exposing your data via atompub, next steps are to do some hacking, and read HowItWorks,  ExtensionModel and then phpBBStore.

    • Tags:
    • research
    • php
    • howto
    • atompub
  • Facebook and the Social Dynamics of Privacy

    This Article provides the first comprehensive analysis of the law and policy of privacy on social network sites, using Facebook as its principal example. It explains how Facebook users socialize on the site, why they misunderstand the risks involved, and how their privacy suffers as a result.

    • Tags:
    • research
    • Technology
    • social
    • socialnetworking
    • socialnetworks
    • oface
    • privacy
    • jamesgrimmelmann
    • facet
    • identity
    • social_networking
    • study
    • paper
  • Faceting Social Identity? It’s All About the Audience

    What’s all this noise about facets of social identity? Lifestreaming and Social Networking sites are moving us away from a single web application as The Network. Instead we are gluing together various networks through feeds and APIs. When authoring content, we use a combination of tools which are each optimized for the task at hand. When we are reading updates from our friends, we want to do some through as few channels as possible. This often starts with an aggregator, such as a FeedReader or Lifestreaming service which creates a single page out of all of the relevant new cool stuff people have been creating or doing. This is a step backwards for the people trying to following your flow. Traditionally when one used forum software, the audience is baked in:

    The forum allows one to assume people on that site are from your tribe The specific topic you are creating or replying to further limits the audience to only interested parties

    In this way, posting on a forum makes your current social identity implicit. When you post to “Best Big Mouth Bass Holes in Maine”, you’ve donned your Fisherman’s cap. With Lifestreaming, we lose this baked in identity/audience/channel. If I take an RSS feed for this fishing thread and pull it into my friendfeed account, the context is collapsed and I am exposing everyone in my friendfeed network to fishing tips. If we are lucky both the lifestreaming application and the forum posting software have a tagging or category system which the reader can use to filter down relevant posts, but often we are S.O.L. It seems socially responsible to acknowledge your audience and to pre-filter content for their benefit. This is what I mean by faceting ones social identity. We see these techniques put to good use in blogging software so that an author can cultivate a conversation on many topics on the same blog by using filtering (tags or categories). Would a general web service which is tool agnostic, be a useful enhancement to our digital identities?

    • Tags:
    • research
    • webdev
    • oface social facet identity audience
  • Most cited articles in Computer Science [CiteSeer.Continuity; Steve Lawrence, Kurt Bollacker, Lee Giles]

    A cool tool from 2006 which shows the most cited papers in compter science.

    • Tags:
    • thesis
    • science
    • research
    • papers
    • citation
Copyright © 2012 Me. All Rights Reserved. Running on Sweetcron v1.08e

This site is monitored by mon.itor.us