Zeitgeist Project

News

Zeitgeist 0.9.14 "Diamond" released!

Hey everyone, on behalf of the Zeitgeist team I am happy to announce the release of
Zeitgeist 0.9.14, which is the Sixth Beta Release of Zeitgeist 1.0

What is Zeitgeist?
---------------------------------------

Zeitgeist is a service which logs the users's activities and events,
anywhere from files opened to websites
visited and conversations, and makes this information readily
available for other applications to use. It is also
able to establish relationships between items based on similarity and
usage patterns.

Where can you get it?
-------------------------------

https://launchpad.net/zeitgeist/0.9/0.9.14

What has changed?
--------------------------

Libzeitgeist:
   - Fix managing and tracking registered Monitors

This release is the sixth beta which will lead to zeitgeist 1.0

GNOME Music: Phase Two and more…

Before I start blogging about the progress of GNOME Music, I would like to announce my happiness (as well as the whole gnome music team) that we now have 3 students sponsored to hack on GNOME Music. Eslam Mostafa (SoC), Shivani Podar (OWP) and Sai Suman Prayaga (SoC) all three of them deserved they internships, showing dedication and patching like crazy before SoC, keeping Vadim, Guillaume and me very busy.

Also I would like to welcome Arnel Borja and Fabiano Fidêncio to the team with their immense contributions, and ofcourse the allmighty Giovanni Campagna (who hacks everything in GNOME by now)

The last couple of weeks have been very hectic here, nevertheless we triumphed over phase of one of developing GNOME Music:

  • Set basic infrastructure
  • Implement Grilo Querying
  • Implement Albums View
  • Implement Songs View
  • Implement Artist View
  • Implement Playback support
  • Clean up and port to Glade

Now phase 2 is shaping up nicely:

  • Implement Playlist View
  • Implement Selection functionality on all views
  • Implement Repeat/Shuffle
  • Implement Actions
  • Clean up

So if you are interested in joining us with the development please feel free to hang out with us on #gnome-music on irc.gnome.org

Currently its only usable via JHbuild. Anyhow for more info like code and bugzilla check out https://live.gnome.org/Music

Here are some screenshots for tempting :D

Screenshot from 2013-06-17 21:16:14

Screenshot from 2013-06-17 21:16:33

Screenshot from 2013-06-17 21:16:46

Screenshot from 2013-06-17 21:18:54

Screenshot from 2013-06-17 21:19:58

 

Screenshot from 2013-06-17 21:19:26

flattr this!

OpenCL on Ubuntu 13.04

Unfortunately two years after my post about getting Intel's OpenCL to work on Ubuntu, the out-of-box situation for using OpenCL isn't much better - you can install the OpenCL library/headers/package config files with a nice and quick `apt-get install ocl-icd-opencl-dev`, but doing that will probably just get you to CL_PLATFORM_NOT_FOUND_KHR (-1001) error from clGetPlatformIDs. That's because you do have the dispatcher, but no actual OpenCL drivers. Therefore I decided to play with the three major OpenCL implementations (Intel, AMD, NVidia).

The reason why one can do the simple apt-get install is a free software project called ocl-icd - this provides libOpenCL.so and implements the dispatcher so that every icd-compatible OpenCL implementation can use it and therefore provides nice basis for using OpenCL, but to get to building and running CL kernels you need to have at least one driver, so let's look at them.

Intel's OpenCL


Intel recently released Intel SDK for OpenCL Applications XE 2013 - but Ubuntu/Debain users are out of luck, you won't find an official .deb on Intel's web. Fortunately that is not a deal breaker and with a few commands you can turn the rpm into a deb package (and it is what I recommended in my old post). But since we have ocl-icd these days, I'd go for a different approach this time - install just the bare minimum to have ocl-icd pick up the Intel driver (and add proper dependencies on ocl-icd-libopencl1 and libnuma1), so I created the debs manually this time.

So, what I did was:
  1. Grab the tgz from Intel's web.
  2. Extract it into a temporary location where you'll find license, readme file, a bunch of scripts and five rpms:
    • opencl-1.2-base-[version] - contains the libOpenCL.so, which we don't need cause we have ocl-icd-libopencl1
    • opencl-1.2-devel-[version] - contains OpenCL headers, which also aren't needed, as those are in opencl-headers package which is a dependency of ocl-icd-opencl-dev
    • opencl-1.2-intel-cpu-[version] - bingo, the ICD
    • opencl-1.2-intel-devel-[version] - a few development tools - offline compiler and Qt-based KernelBuilder application
    • opencl-1.2-intel-mic-[version] - additional libraries to support also Xeon Phi coprocessor besides Core processors - I ignored this one, cause I don't have access to such processor.
  3. Now, lets make binary debian packages from the unzipped files (note that only the intel-cpu package is required to use OpenCL apps, the devel tools are optional), this is pretty easy, following a simple debian package building HOWTO, I put the files from the intel-cpu and intel-devel rpms into the following directory structure:
     |-opencl-driver-intel-cpu
     | \-DEBIAN
     | \-etc
     |   \-OpenCL
     |     \-vendors
     | \-usr
     |   \-lib
     |     \-x86_64-linux-gnu
     |       \-OpenCL
     |         \-vendors
     |           \-intel
     |   \-share
     |     \-doc
     |       \-opencl-driver-intel-cpu
     |-opencl-driver-intel-tools
     | \-bin
     | \-DEBIAN
     | \-usr
     |   \-lib
     |     \-x86_64-linux-gnu
     |       \-intel
     |         \-opencl-1.2-3.0.67279
     |   \-share
     |     \-doc
     |       \-opencl-driver-intel-tools

    The DEBIAN directories contain the control files:
    $ opencl-driver-intel-cpu/DEBIAN/control:
    Package: opencl-driver-intel-cpu
    Version: 3.0.67279-1
    Section: libs
    Priority: optional
    Architecture: amd64
    Depends: ocl-icd-libopencl1 (>= 2.0), libnuma1
    Maintainer: Your Name <your_email>
    Description: Intel OpenCL CPU implementation
     This package provides Intel OpenCL implementation which can utilize Intel Core processors.

    $ opencl-driver-intel-tools/DEBIAN/control:

    Package: opencl-driver-intel-tools
    Version: 3.0.67279-1
    Section: libs
    Priority: optional
    Architecture: amd64
    Depends: ocl-icd-libopencl1 (>= 2.0)
    Maintainer: Your Name <your_email>
    Description: Intel SDK for OpenCL Applications development tools
     This package contains the following tools:
      - Intel SDK for OpenCL - Kernel Builder, which enables building and analyzing OpenCL kernels and provides full offline OpenCL language compilation.
      - Intel SDK for OpenCL - Offline Compiler, a command-line utility, which enables offline compilation and building of OpenCL kernels.</your_email></your_email>
    The leaf directory opencl-driver-intel-cpu/usr/lib/x86_64-linux-gnu/OpenCL/vendors/intel contains all the object files from the intel-cpu rpm, and opencl-driver-intel-tools/usr/lib/x86_64-linux-gnu/intel/opencl-1.2-3.0.67279/ contains the binaries from intel-devel rpm with tiny changes so the bash scripts point to a correct location.

    Once this is done, the only remaining file to tamper with is the actual .icd in opencl-driver-intel-cpu/etc/OpenCL/vendors/intel64.icd, which contains just one line with path to the library:
    /usr/lib/x86_64-linux-gnu/OpenCL/vendors/intel/libintelocl.so
  4. Now just run `dpkg-deb --build opencl-driver-intel-cpu` and `dpkg-deb --build opencl-driver-intel-tools` and voila your debs with Intel's OpenCL are ready.
You can also download my opencl-driver-intel-cpu.deb and opencl-driver-intel-tools.deb.

Note that these are here just for reference, you should delete them after making sure that your package looks the same - ie I'm not redistributing these.

Once installed, a simple OpenCL app that lists the available platforms should output something like this:
PLATFORM_NAME: Intel(R) OpenCL
  VERSION: OpenCL 1.2 LINUX
  VENDOR: Intel(R) Corporation
  PROFILE: FULL_PROFILE
    DEVICE:       Intel(R) Core(TM) i7-3632QM CPU @ 2.20GHz
    DEVICE VENDOR: Intel(R) Corporation
    MAX COMPUTE UNITS: 8
    DEVICE VERSION: OpenCL 1.2 (Build 67279)
    DRIVER VERSION: 1.2

NVidia's OpenCL


In Ubuntu 13.04 there are now multiple nvidia packages which contain various versions of nvidia's driver, but I couldn't find anywhere a package with the icd file and therefore even if all the nvidia-3* packages do have the driver, the ICD loader isn't able to find it. Nonetheless, the fix for that is easy:

Run `locate libnvidia-opencl.so`, this will probably find a few files, in my case these are found:
/usr/lib/nvidia-304/libnvidia-opencl.so.304.88
/usr/lib/nvidia-current/libnvidia-opencl.so.1
/usr/lib32/nvidia-304/libnvidia-opencl.so.304.88
/usr/lib32/nvidia-current/libnvidia-opencl.so.1
For some reason though, the *.so.1 are broken symlinks in my case (maybe because I have Optimus laptop), therefore I created the .icd in the following manner:

echo /usr/lib/nvidia-304/libnvidia-opencl.so.304.88 > /etc/OpenCL/vendors/nvidia64.icd

The problem with this is that if the driver gets updated, you'll have to modify the .icd again, so if your *.so.1 symlink is not broken, you should use that instead.

Note that the driver also contains the OpenCL loader library (libOpenCL.so) and depending on your LD_LIBRARY_PATH settings, it might get used instead of the one provided by ocl-icd. That is not necessarily terrible, but keep in mind that NVidia's implementation is OpenCL 1.1, so even if other ICDs support 1.2, you'll be stuck with 1.1. Solution? Just remove the extra libOpenCL.so* from /usr/lib/nvidia-*/

Once done, listing CL platforms and devices should also list NVidia:
PLATFORM_NAME: NVIDIA CUDA
  VERSION: OpenCL 1.1 CUDA 4.2.1
  VENDOR: NVIDIA Corporation
  PROFILE: FULL_PROFILE
    DEVICE: GeForce GT 635M
    DEVICE VENDOR: NVIDIA Corporation
    MAX COMPUTE UNITS: 2
    DEVICE VERSION: OpenCL 1.1 CUDA
    DRIVER VERSION: 304.88

OpenCL and Bumblebee


As previously mentioned, I have an Optimus laptop (with integrated Intel GPU as well as NVidia which is used for more demanding applications). If the NVidia GPU is shut down, you won't see the NVidia platform as available (which I find a bit strange, should be a platform with 0 available devices, no?), but once turned on with a `optirun bash`, things should be working properly, although I haven't tried for example CL-GL interop, I can imagine that might not work with Bumblebee.

One issue I noticed though is that if you have both NVidia and Intel's drivers, Intel's driver will crash any OpenCL app run inside the optirun shell, which seems to be caused by the LD_PRELOAD libraries that VirtualGL uses. So either run your apps inside the shell with `LD_PRELOAD= ./myApp`, or just don't run them inside the optirun shell, use a regular one. As long as the GPU is active it is perfectly able to perform calculations even without VirtualGL set up.

AMD's driver


AMD enables to use both CPU and GPU devices with their driver. I don't have a GPU by AMD, so I only got to try the CPU implementation (luckily Intel's and AMD's CPUs are still compatible enough). The installer that they provide installs the whole SDK into /opt/AMDAPP, changes your /etc/profile to include the directories in LD_LIBRARY_PATH, and installs the icd to /etc/OpenCL/vendors.

What I don't like about this is that their SDK also contains libOpenCL.so, so it will be used instead of ocl-icd's. In this case this is less of a problem than in NVidia's case, cause AMD's implementation isn't limited to just OpenCL 1.1, but if you want to use ocl-icd, just remove the libOpenCL.so* from /opt/AMDAPP/lib/x86_64.

It would be nice to have a similar deb package for the AMD's CL driver, but I didn't get to that, maybe someone else wants to? ;) Anyway:
PLATFORM_NAME: AMD Accelerated Parallel Processing
  VERSION: OpenCL 1.2 AMD-APP (1113.2)
  VENDOR: Advanced Micro Devices, Inc.
  PROFILE: FULL_PROFILE
    DEVICE: Intel(R) Core(TM) i7-3632QM CPU @ 2.20GHz
    DEVICE VENDOR: GenuineIntel
    MAX COMPUTE UNITS: 8
    DEVICE VERSION: OpenCL 1.2 AMD-APP (1113.2)
    DRIVER VERSION: 1113.2 (sse2,avx)

Conclusion


As I was testing the various drivers I encountered quite a few issues - Intel's implementation crashes on ratGPU tests, AMD's pretends to work with my OpenCL face detection but doesn't detect anything (Intel's and NVidia's work fine), on top of that the crashes with Intel and Bumblebee/VirtualGL LD_PRELOAD shell. Samples from AMD's SDK crash when used with ocl-icd ICD loader because they call clReleaseContext(NULL), works with AMD's loader though. But in the end there is also a lot more that actually is working - for example a year ago my face detection didn't work at all with Intel's implementation, now it's fine, many of the SDK samples did work with all three drivers. I'd say there was some good progress.

So that's about the current OpenCL state, it's usable, just not out-of-the-box, I do hope that a year from now at least this post will be just saying "To use OpenCL just run `apt-get install opencl-driver-*`".

Zeitgeist Explorer release

When I am working on integrating zeitgeist with any other tool as a plugin, addon or writing a completely new application, a lot of times I felt the need to run a live monitor of all the events which are being inserted. Since zeitgeist uses dbus, so the obvious answer would be to use dbus-monitor, but this tool is a bit difficult to use in my opinion. When you are working on something which needs zeitgeist, last thing you need to do is to spend next few hours dealing with dbus-monitor.

I ended up writing a small GUI application which connects directly to zeitgeist daemon and receives a notification everytime an event is inserted.  I released it 2 months before, but never got enough time to further work on it even announce it’s availability. The application is very easy and just lists down all the events. Select any event and it will give you all the information about it. Just to clarify, this is a developer tool.

Here is a screenshot.

Zeitgeist Explorer UI

Zeitgeist Explorer UI

The latest release is 0.1 and is available at Launchpad. Please file bugs in case you encounter any. If you a packager, please consider making it available for the distribution of your choice.


Zeitgeist 0.9.13 "Silence is Gold" released!

Hey everyone, on behalf of the Zeitgeist team I am happy to announce the release of
Zeitgeist 0.9.13, which is the fifth Beta Release of Zeitgeist 1.0

What is Zeitgeist?
---------------------------------------

Zeitgeist is a service which logs the users's activities and events,
anywhere from files opened to websites
visited and conversations, and makes this information readily
available for other applications to use. It is also
able to establish relationships between items based on similarity and
usage patterns.

Where can you get it?
-------------------------------

https://launchpad.net/zeitgeist/0.9/0.9.13

What has changed?
--------------------------

Engine:
 - Adjust resetting of statement to proper sequence
 - Add custom memory PRAGMA to improve memory consumption

Libzeitgeist:
 - Add default memory PRAGMA to be used by clients

FTS:
 - Improve FTS memory consumption

Overall:
 - Fix compilation breaks for --enable-datahub --disable-downloads-monitor

This release is the fifth beta which will lead to zeitgeist 1.0

Globaleaks 0.2 Alpha

Globaleaks 0.2 Alpha is out.

Globaleaks is an open source project aimed at creating a worldwide, anonymous, censorship-resistant, distributed whistle-blowing platform. It enables organizations interested in running whistle-blowing initiatives to setup their own safe zone, where whistle-blowers and recipients can exchange data.

2 Years ago I helped out with the development of Globaleaks 0.1. And although I am not active anymore, I really support the initiative behind it. Now with the HERMES Center for Transparency and Digital Human Rights backing it up, it has grown a lot and shaped up to be a very organized and thought through project.

TL;DR:

  • Full rewrite
  • More flexible and extensible
  • Linux ready-made system and network hardened installation
  • Written in python using twisted
  • New Frontend

Try it out:

Try out the demo. It is pretty straight forward.

Help out:

As young project, Globaleaks can use some help fixing bugs. Just head to the wiki and read through it. It is pretty straight forward, and explains the modules, security concepts and set up instructions.

Globaleaks already has Debian and Ubuntu ready packages. An easy way to help out is to set up a  PPA for us on Launchpad. :D

Get in touch:

You can contact the Globaleaks team at info () globaleaks org or on IRC on #globaleaks at irc.oftc.net

Here are some screenshots of the new frontend :D

Congratulation you are using Tor

Congratulations you are using Tor

Receiver selection page

Receiver selection page

The submission receipt

The submission receipt

Configuring a receiver

Configuring a receiver

Configuring a context

Configuring a context

flattr this!

GNOME Music: Reaching the end of phase one.

TL;DR

We can now browse our albums, artists and songs (no playlists yet) and play them :D

Details:

GNOME Music application development is reaching the end of phase one (out of three).

This phase consists of:

  • Set basic infrastructure (done)
  • Implement Grilo Querying (done) 
  • Implement Albums View (done)
  • Implement Songs View (done)
  • Implement Artist View (done)
  • Implement Playback support (done)
  • Clean up and port to Glade (in progress)

If you feel like hacking along please don’t mind to help out:

  • Get the code from https://git.gnome.org/browse/gnome-music
  • Report bugs https://bugzilla.gnome.org/browse.cgi?product=gnome-music
  • Join the development on IRC #gnome-music on irc.gimp.net
  • To check out our vague plan visit: https://live.gnome.org/Music

Thanks for everybody who has been helping out.

Thanks to Guillaume Quintard and the potential SoC students for posting to glade and fixing some of the UI issues. Also Vadim Rutkovsky started working on some unittests (which kicks ass).

And now to leave you with some screenshots…

Screenshot from 2013-05-05 10:09:16 Screenshot from 2013-05-05 10:09:45 Screenshot from 2013-05-05 10:10:32

 

 

flattr this!

GNOME Music development status

The last weeks a lot of volunteers showed up to develop on (GNOME) Music.

Now we can browse the albums and their content making it our most complete view. Playback to the albums view and songs view is in development (works but is buggy).

Screenshot from 2013-04-20 19:40:24

Screenshot from 2013-04-20 19:39:30

 

Also we are heavy working on the artist view trying to match the mockups, currently the code delivers the following screenie:

Screenshot from 2013-04-20 19:41:08

There is still a lot to be done, and we created a semi roadmap of our development plan. Phase 1 should be completed within the next 2 – 3 weeks. We also moved our UI development to be glade.

I am very happy with the contributor turnout (no special order):

  • Vadim Rutkovsky
  • Eslam Mostafa
  • Paolo Borelli
  • Guillaume Quintard
  • Allan Day
  • Jakub Steiner
  • Shivani Poddar
  • Sriram Ramkrishna
  • Hylke Bons

Nice to have this mix of old and new contributors working together. If interested join us on #gnome-music on gimpnet. This is where the communication happens.

Also I would like to thank Next Tuesday for sponsoring part of my time on working on GNOME Music

.Logo_nt

 

flattr this!

Zeitgeist 0.9.12 "Happy Go Lucky" released!

Hey everyone, on behalf of the Zeitgeist team I am happy to announce the release of
Zeitgeist 0.9.12, which is the fourth Beta Release of Zeitgeist 1.0

What is Zeitgeist?
---------------------------------------

Zeitgeist is a service which logs the users's activities and events,
anywhere from files opened to websites
visited and conversations, and makes this information readily
available for other applications to use. It is also
able to establish relationships between items based on similarity and
usage patterns.

Where can you get it?
-------------------------------

https://launchpad.net/zeitgeist/0.9/0.9.12

What has changed?
--------------------------

Libzeitgeist:
 - Fix find_related_uris to only print out the ranking if
   EXPLAIN_QUERIES is enabled
 - Fixed find_related_uris to take RelevantResultType as an
   argument instead of ResultType
 - Pass copy of templates to search and search_with_relevancies

Overall:
 - Fix documentation

This release is the fourth beta which will lead to zeitgeist 1.0

Zeitgeist 0.9.11 "H2O" released!

Hey everyone, on behalf of the Zeitgeist team I am happy to announce the release of
Zeitgeist 0.9.11, which is the third Beta Release of Zeitgeist 1.0

What is Zeitgeist?
---------------------------------------

Zeitgeist is a service which logs the users's activities and events,
anywhere from files opened to websites
visited and conversations, and makes this information readily
available for other applications to use. It is also
able to establish relationships between items based on similarity and
usage patterns.

Where can you get it?
-------------------------------

https://launchpad.net/zeitgeist/0.9/0.9.11

What has changed?
--------------------------

Libzeitgeist:
 - Fix the log's insert_events_no_reply and insert_event_no_reply
   API to not require an async callback
 - Pass copy of templates to threads in get_events, find_events,
   find_event_ids and find_related_uris
 - Pass copy of templates to search and search_with_relevancies
 - Expose RemoteLog's extensions and datapath properties via Log
   class

Overall:
 - Fix documentation title to Zeitgeist Reference Manual

This release is the third beta which will lead to zeitgeist 1.0

avbonus.com