14
I Use This!
Activity Not Available

News

Posted almost 13 years ago
Tomorrow I go to the Meego Summit FI in Tampere. I will talk there about Tracker, as usual, but this time sharing happily the stage with Adrien Bustany. The plan is to talk about what Tracker does NOW in a very pragmatical way, explain the limits we ... [More] have hit, and give a hint on the more or less experimental ideas we have for the future. Less philosophy, less history and much more pragmatic information, compared with my previous talks. Believe or not, I won’t mention “RDF” or “ontology” at all. Tracker is nowadays ready to use, and Meego (even if it is only for 1.2) will be the first environment where all its potential can be shown with real information. Combine this with QML and pyside (python bindings) and everything is in place to write very easily surprising applications. [Less]
Posted almost 13 years ago
This weekend is the first-ever Finnish MeeGo Summit, held in Tampere in the same venue where we had aKademy last summer. Despite some announcements, the conference sold out in a very short time. The program looks very interesting, too. I'll give two ... [More] talks: Location awareness in MeeGo, Hacks & Tricks track Friday 15:30 Midgard Create - Content Management System without forms, Finhack Saturday 12:00 Finhack is a Finnish free software meetup co-organized with Free Software Foundation Europe and COSS as a one-day track within MeeGo Summit. If you're not able to attend the Summit, there are also regular MeeGo meetup groups in Helsinki and Tampere. [Less]
Posted almost 13 years ago
Hello planet GNOME, glad to be in this planet after so many years reading it. Probably you were able to skip my Tracker presentations in different conferences… so now I try via blog. And my first post brings good news. From now on (it has just landed ... [More] in master), Tracker libraries are accessible via gobject-introspection. You can manipulate the information via libtracker-sparql or write new miners using libtracker-miner in any language with gobject-introspection support (E.G. python). A snipped of code is worth a thousand words: #!/usr/bin/env python import gi from gi.repository import Tracker conn = Tracker.SparqlConnection.get (None) cursor = conn.query ("SELECT ?u WHERE { ?u a nie:InformationElement. }", None) while (cursor.next (None)): print cursor.get_string (0) This is a synchronous query to the store. Note that you have a cursor to access the results: they will be retrieved from the DB only when needed. Using this while building a model for the UI should show quite a performance improvement compared with the old DBus API. And if you fancy more the asynchronous way of coding, the code looks like this. You can open the connection, run the query and retrieve the results all asynchronously. When it comes to miners (processes retrieving information), here is a skeleton of an implementation: a subclass of Miner overriding few methods. Install with the usual dbus files and you have a miner that can be started/stoped/monitored with the Tracker tools. libtracker-sparql is our recommended way to use tracker, the DBus API can be considered internal, and now with gobject-introspection it is available from different languages than C or vala. Combine this with libpeas (also using GI) and then we can easily write plugins showing information from Tracker into applications like EOG or totem… Interesting! [Less]
Posted almost 13 years ago
Better later than never. Today i promoted Mussorgsky to extras-testing. Now it needs some thumbs up from the power users to get into the famous extras repo, reaching a wider audience. If you have used it, and think it passes the Q&A checklist, please give mussorgky some karma!
Posted about 13 years ago
A few weeks ago we were asked to improve data entry performance of Tracker’s RDF store. From earlier investigations we knew that a large amount of the RDF store’s update time was going to the application having to first delete triples and internally ... [More] to the insert having to look up preexisting values. For this reason we came up with the idea of providing a replace feature on top of standard SPARQL 1.1 Update. When working with triples is a feature like replace of course a bit ambiguous. I’ll first briefly explain working with triples to describe things. When I want to describe a person Mark who has two dogs, we could do it like this: Max is a Dog Max is 10 years old Mimi is a Dog Mimi is 11 years old Mark is a Person Mark is 30 years old Mark owns Max Mark owns Mimi If you look at those descriptions, you can simplify each by writing exactly three things: the subject, the property and the value. In RDF we call these three subject, predicate and object. All subjects and predicates will be resources, the objects can either be a resource or a literal. You wrap resources in inequality signs. You can continue talking about a resource using semicolon, and you continue talking about a predicate using comma. When you want to finish talking about a resource, you write a dot. Now you know how the Turtle format works. In SPARQL Update you insert data with INSERT { Turtle formatted data }. Let’s translate that to Mark’s story: INSERT { <Max> a <Dog> ; <hasName> ‘Max’ ; <hasAge> 10 . <Mimi> a <Dog> ; <hasName> ‘Mimi’ ; <hasAge> 11 . <Mark> a <Person> ; <hasName> ‘Mark’ ; <hasAge> 30 ; <owns> <Max>, <Mimi> } In the example we are using both single value property and multiple value properties. You can have only one name and one age, so <hasName> and <hasAge> are single value properties. But you can own more than one dog, so <owns> is a multiple value property. The ambiguity with a replace feature for SPARQL Update is at multiple value properties. Does it need to replace the entire list of values? Does it need to append to the list? Does it need to update just one item in the list? And which one? This probably explains why it’s not specified in SPARQL Update. For single value properties there’s no ambiguity. For multiple value properties on a resource where the particular triple already exists, there’s also no ambiguity: RDF doesn’t allow duplicate triples. This means that in RDF you can’t own <Max> twice. This is also true for separate insert executions. In the next two examples the first query is equivalent to the second query. Keep this in mind because it will matter for our replace feature: INSERT { <Mark> <owns> <Max>, <Max>, <Mimi> } Is the same as INSERT { <Mark> <owns> <Max>, <Mimi> } There is no ambiguity for single value properties so we can implement replace for single value properties: INSERT OR REPLACE { <Max> a <Dog> ; <hasName> ‘Max’ ; <hasAge> 11 . <Mimi> a <Dog> ; <hasName> ‘Mimi’ ; <hasAge> 12 . <Mark> a <Person> ; <hasName> ‘Mark’ ; <hasAge> 31 ; <owns> <Max>, <Mimi> } As mentioned earlier doesn’t RDF allow duplicate triples, so nothing will change to the ownerships of Mark. However, would we have added a new dog then just as if OR REPLACE was not there would he be added to Mark’s ownerships. The following example will actually add Morm to Mark’s dogs (and this is different than with the single value properties, they are overwritten instead). INSERT OR REPLACE { <Morm> a <Dog> ; <hasName> ‘Morm’ ; <hasAge> 2 . <Max> a <Dog> ; <hasName> ‘Max’ ; <hasAge> 12 . <Mimi> a <Dog> ; <hasName> ‘Mimi’ ; <hasAge> 13 . <Mark> a <Person> ; <hasName> ‘Mark’ ; <hasAge> 32 ; <owns> <Max>, <Mimi>, <Morm> } We know that this looks a bit strange, but in RDF it kinda makes sense too. Note again that our replace feature is not part of standard SPARQL 1.1 Update (and will probably never be). If for some reason you want to completely overwrite Mark’s ownerships then you need to precede the insert with a delete. If you also want to remove the dogs from the store (let’s say because, however unfortunate, they died), then you also have to remove their rdfs:Resource type: DELETE { <Mark> <owns> ?dog . ?dog a rdfs:Resource } WHERE { <Mark> <owns> ?dog } INSERT OR REPLACE { <Fred> a <Dog> ; <hasName> ‘Fred’ ; <hasAge> 1 . <Mark> a <Person> ; <hasName> ‘Mark’ ; <hasAge> 32 ; <owns> <Fred> . } We don’t plan to add a syntax for overwriting, adding or deleting individual items or entire lists of a multiple value property at this time (other than with the preceding delete). There are technical reasons for this, but I will spare you the details. You can find the code that implements replace in the branch sparql-update where it’s awaiting review and then merge to master. We saw performance improvements, whilst greatly depending on the use-case, of 30% and more. A use-case that was tested in particular was synchronizing contact data. The original query was varying in time between 17s and 23s for 1000 contacts. With the replace feature it takes around 13s for 1000 contacts. For more information on this performance test, read this mailing list thread and experiment yourself with this example. The team working on qtcontacts-tracker, which is a backend for the QtContacts API that uses Tracker’s RDF store, are working on integrating with our replace feature. They promised me tests and numbers by next week. [Less]
Posted about 13 years ago
A couple of weeks ago, we updated Tracker to load its configuration using GSettings instead of its own old-fashioned .cfg files. GSettings is an API to manipulate key=value pairs that abstracts the backend (keyfiles, gconf, dconf…) where they are ... [More] actually stored. This was a good change in a lot of senses, but it was breaking our functional tests. We have a suite of tests that we like to run once Tracker is installed in the system. They check if the basic functionality is working fine: the store starts, the miner starts, basic Sparql is processed fine, crawling/monitoring a directory is ok… Some of those tests rely on booting tracker with an specific configuration and with gsettings that isn’t as easy as defining a new XDG_CONFIG_DIR anymore. Well, lets fix the tests then. My first idea was to hack our GSettings object to load data from the system or from a keyfile, depending on an environment variable: very portable, but is an ugly hack and the code paths start to differ a lot. Then i discovered the DConf profiles. Only works when gsettings is using dconf and needs to install a system-wide profile, but otherwise (in code and test setup) is nice. It took me more time than expected due some stupid mistakes here and there using dconf: Profile names can only use alphanumeric and underscore characters. A profile like “tracker-test” won’t work (because is not a valid dbus name), but “trackertest” is fine. (Wiki updated now) Do NOT set XDG_CONFIG_DIR in the environment (Bug reported). I guess that the client is using the variable to look for the DB but the writing daemon is not, so the results are not the expected If at the same time you are changing the dconf schemas, make sure to remove old files from /usr/share/glib-2.0/schemas, run /usr/bin/glib-compile-schemas /usr/share/glib-2.0/schemas and remove any old dconf database (in ~/.config/dconf) including “user”. Otherwise if some code is using the old schema, it won’t complain but the values will be wrong. DConf uses the GVariant serialization, so be careful when setting lists. I hope this saves some time to the next person trying to test something that uses dconf for its settings. [Less]
Posted about 13 years ago
Opera has announced the new versions of its mobile browsers, Opera Mobile 11 and Opera Mini 6. These bring an updated user interface, improved text wrapping, and most significantly, multi-touch zoom. Overall performance is improved too, with native ... [More] handling of heavy sites appearing to load faster in Opera Mobile 11 than with Opera Mobile 10. Read on for more about the update. Opera posted the list of changes to its blog (click for full list).  Features Modernized new user interface New UI optimized for tablet devices Faster framerates when panning and zooming No checkerboard, ever Text stays sharp during zooming Improved text-wrap on zoom Smart-tap, auto-zoom and highlights links if ambiguous link click Incremental zooming for devices w/o multi-touch Buttons for jumping to the top/bottom of the page Haptic feedback (if supported in hardware) Share URL on social networks, email etc Improved Geolocation support Session restore Symbian specific Support native clipboard on Symbian 5th ed and Symbian^3 Support for half-screen keyboard on Symbian^3 phones Added Thai, Hebrew and Arabic fonts Added localization for Malay language (APAC build) Opera Mobile 11 and Opera Mini 6 have been officially released today for both Symbian and Android. Symbian users should point their phone’s browser at m.opera.com for the latest version. Maemo and MeeGo users can download a “labs” version (read - beta version) of Mobile 11 and Mini 6 from Opera too, by visiting labs.opera.com. The timing of the announcement is rather interesting given that Firefox has also released version 4 of its desktop client with release candidates currently available for Maemo and Android too. The “modernized interface” seems to be just referring to the Opera logo found on the right-end of the toolbar, which replaces the old spanner icon. Certainly an aesthetic improvement! Spot the new Opera button, replacing the tired old spanner icon! As mentioned in the features list, there is a now a ‘Send’ option in the main menu (increasing the button count to ten, up from the familiar grid of  nine). In Opera Mini 6, the Send button launches a menu for posting the current page via Twitter, Facebook or E-mail. Strangely though, in Opera Mobile 11, this same button merely launches Symbian's ‘Send’ menu. Dynamic text wrapping is another noticeable feature. If you look at the screenshot below of the older Opera Mobile 10 (running on a S60 5th Edition device), you’ll see that the paragraph width is fixed for the zoomed view, even while zoomed out. Opera Mobile 10 with fixed text wrapping However, in Opera Mobile 11, text is wrapped on the fly to take up the whole screen width, as shown below (running on Symbian^3). Paragraph width in Opera Mobile 11, before zooming Paragraph width in Opera Mobile 11, after zooming Another notable new feature is support for Symbian^3’s half-screen keyboard. This means that using the native on-screen keyboard no longer throws you into a dedicated editing screen. This means that you may use the native keyboard, without losing sight of the page you are currently viewing. This works in portrait or landscape. Using the native Symbian^3 keyboard, while still seeing the web page behind Speaking of text entry; as mentioned in the Symbian specific features, Opera now uses the native clipboard, rather than using its own. This means that text can be easily selected from a web page and pasted into other applications. Vice versa, text can be pasted in, particularly useful for pasting in passwords from another application. For those not familiar with the Opera browsers, note that all of these new features apply to both Opera Mini and Opera Mobile. The difference between the two is that Opera Mobile performs the rendering of the page locally on the phone. Whereas with Opera Mini, page rendering is done remotely on Opera’s own servers, which then sends a proprietary mark-up version of the original website, making performance much faster, thanks to the lower bandwidth requirements and less computational load on your mobile device. Opera Mobile does have a similar feature ('Turbo mode') in which Opera servers will act as a proxy for some content. David Gilson for All About Symbian, 22nd March 2011. [Less]
Posted about 13 years ago
As part of last week's MeeGo Technical Steering Group meeting several nominations to new Working Groups (WG) were approved. Notably these included nominations for LG and China Mobile to the Handset WG. Working Groups are governance structures within ... [More] MeeGo, which are currently being formed, that will be dedicated to discussion around a specific vertical. Membership of a Working Group is meritocratic, with an emphasis on overall contributions to the MeeGo project and a commitment to create a MeeGo product in the specified vertical.A number of other nominations were also approved: IVI Working Group nominations for Pelagicore and Visteon were approved.    Handset Working Group nominations for Nokia, Intel, LG Electronics and China Mobile were approved.    Smart TV Working Group nominations for Amino, Intel, JetHead Development, Linux Foundation, Locatel, MIPS Technologies, Nokia, Nokia Siemens Networks, Telecom Italia , Videon Central and Ysten were approved.    Additional nominations to the different working groups are likely to be made in the months ahead. While it is to early to read much into memberships of Working Groups the nominations do suggest that LG and China Mobile have an active interest in using MeeGo in the handset space.  The LG GW990 was a concept device shown off running Intel's Moblin software in 2010; it is likely this device or a related descendant will be updated to run a version of MeeGo. China Mobile is one of the world's biggest mobile operators and on its own could drive significant demand for MeeGo device. It is likely that the Chinese operator is interested in the open source MeeGo to counter balance the strength of some of the competing mobile platforms.    Working Groups It is early days for the MeeGo Working Groups.  However in the future they will to become an important way for new features (requirements) to be specified and scheduled for addition to the MeeGo platform. In this sense the Working Groups will play a key role in road mapping the future of the MeeGo project. The Working Groups also play a similar role to the Technical Steering Group, which provides overall leadership and sets the tone, vision and direction for the MeeGo project, but providing expertise and insight within the specific verticals (Handset, IVI, Smart TV, Tablet). Role of the Working Group: The Working Groups are devoted to discussions related to their specific vertical and are accountable to provide input and guidance about market requirements. They are responsible for collecting market requirements from organizations and companies participating in the Working Groups. They identify gaps and develop requirements that detail the need for capabilities. The Working Groups do not manage the projects, but rather support product evolution by providing market requirements. A high-level description of some of the Working Group tasks include collecting market requirements and prioritize them, provide a compliance profile and a hardware profile for the specific vertical. More information is available on the Working Group Process wiki page on MeeGo.com and on the MeeGo Governance page. [Less]
Posted about 13 years ago
Front Page Meet the new (Q1 2011) Maemo Community Council!Last week, the call for candidate declarations for the next term of the Maemo Community Council closed, resulting in five total candidates. Because of this, the idea of foregoing a formal ... [More] election and issuing a blanket acceptance of these candidates as elected was posed. This situation had been anticipated when the election process was drafted (as was the possibility of getting fewer than the requisite number of candidates); with the aim to ensure there were either three or five members on the Council.The community response agreed on allowing these candidatess to step into their elected seats without an election. Tim Samoff, announcing the conclusion, introduced the new Council and reminded us "the position of Community Council member is completely voluntary and unpaid. These fine people are serving you, the Maemo Community, in their free time, out of the goodness of their hearts and a passion for what Maemo is and means." So, please congratulate the five, newly elected Maemo Community Council: RM Bauer, alan bruce, Felipe Crochik, Attila Csipa (aka 'attila77'), and Randall Arnold.Read more (maemo.org) Call for papers for MeeGo Conference gets extended periodThe call for papers for the next MeeGo Conference in San Francisco in May 2011 has been extended to Friday March 25th, 2011 at 23:59 Pacific Time (2011-03-26 06:59 UTC): "From application developers to platform designers, hardware vendors to open source enthusiasts, anyone engaged in MeeGo is invited to contribute and participate. Much of this event will be the same as in Dublin. There will be MeeGo Warm-Up events on site the weekend before the conference and there will be lots of time to network and talk (the ever important "hall-way track")." Be sure to go to the MeeGo Conference website to submit your talk proposal.Read more (lists.meego.com)Read more (sf2011.meego.com) In this edition (Download)...Front PageMeet the new (Q1 2011) Maemo Community Council!Call for papers for MeeGo Conference gets extended periodApplicationsUse main camera live image as desktop backgroundDevelopmentPerformance comparison between EDS & Tracker for storing contact dataCaller ID daemon to use web to find callerCommunityLaunch of meego-central.org app catalogue for MeeGoRobin Burchell nominated for Maemo Community CouncilDevicesMeeGo Community device programme looking for championsCustomising N900 keyboard & X TerminalIn the WildNokia, Qt and Digia, facts and fiction [Less]
Posted about 13 years ago