… the alternative to Seif Lotfy

As stupid as it sounds I do get frustrated when people get my name wrong.
It is Seif Lotfy (here is a wikipedia link for the meaning and pronunciation of Seif).

I hear and read some mispronunciations and misspellings of SEIF like:

  • Sief
  • Siev
  • Safe
  • Save
  • Seiv
  • Sif

Also my last name LOTFY keeps being misread, thus resulting to:

  • Lofty
  • Lofti
  • Lotfi
  • Loufty

Now I can not  blame people for misreading and mispronouncing it. It is an Arabic name but sounds like taken from a Star Trek character. I had some funny encounters when trying to introduce myself. Here are some reactions I get:

  • Ah is this your real name?
  • OK this is your IRC name what is your real name?
  • Oh seif as in SAFE… (stupid examples varying from safebox to safe sex)
  • Bless you! (I swear that happened at UDS)
  • WTF?
  • HAHAHAHA you cant even pronounce your last name (stupid drunk barkeeper)

So to end these occurrences i decided to adopt a new alternative “hacker name”…

STEVE LOFTY


So for anyone who has issues with my name please refer to the the alternative. I will work on reacting to it. You can now even contact me under:

Thanks for your tolerance…

Steve Lofty (Seif Lotfy)

Zeitgeist gets a memory profiling tool (VERY GEEKY)

Thanks to his royal awesomeness “Markus Korn”, Zeitgeist is to get a new memory profilers. This will help us detect where memory is used and allow us to free it when possible and decrease the memory usage… Not that we use much but still we can really get it down with this tiny voodoo utility… Please watch the video and thank Markus Korn.

Zeitgeist API for everyone

Currently part of the Zeitgeist team is working hard on deployment of Zeitgeist within applications.

If you want to help out with deploying Zeitgeist into your favorite application please feel free to look at our:

We would like to start working on a Mono wrapper API so if you are interested please contact us at #zeitgeist on irc.freenode.net, the team will be glad to mentor you.

Also you are welcome to visit our website… We are moving to a new server though over the weekend so no updates on it until we are done.

GNOME Activity Journal 0.5.0 (Development Release) & New Data Providers

The Activity Journal (powered by Zeitgeist) has been finally rolled out from what was in trunk. We reduced some of the functionality Randy developed in our development branch since we wanted a smaller scope of things to fix for now.

You can read more about the release on Thorsten’s blog.

Major UI changes is adding a toolbar (Hylke will kill us) but its just experimental until we find a more intuitive way of changing views as well as searching and redesigning the Pinned items.

We will work on more speed enhancements and optimizations.

This is a development release. Start filing bugs guys! Download from here.

Also we have support for several new data providers in Zeitgeist. They are still not released but will be soon. They don’t reside in Zeitgeist process but within the applications as plugins, because who knows more about what an application is doing than the application itself?

So for now you can install them manually for your apps on downloading them from

bzr branch lp:zeitgeist-dataproviders for the following loggers:

  • bzr
  • chrome/chromium
  • emacs
  • eog
  • firefox
  • geany
  • gedit
  • rhythmbox
  • tomboy
  • vim

You can get the telepathy logger from

bzr branch lp:~mortenmjelva/zeitgeist-dataproviders/telepathy

The installation instructions are written inside…

Cheers

Seif


Zeitgeist (hearts) Tomboy

toToday is a great day!

Not only will I stop bugging the people on the #tomboy #docky #mono to help me with my (novice) mono hacking. The thing is actually done. First watch the video :)

FINDING STUFF USED WITH NOTES

(Watch Video directly)

What I am doing is I am trying to figure out which things were used together with a Note. I know the UI is crap but its a start, it just shows that it works. For now the algorithms work (sliding window + a priori)

To do this you will need to:

  • Get the Add-in for Tomboy to insert Open/Close/Modify events into Zeitgeist. (to get the code for that bzr branch lp:zeitgeist-dataproviders and go into the tomboy folder to install)
  • Get the Add-in for Tomboy to fetch stuff used with any note. (to get the code for that bzr branch lp:~seif/zeitgeist/tomboy and install)

So Hope you like it and thanks to:

  • Chris Szikszoy
  • Alex Launi
  • Manish Sinha
  • Hylke Bons
  • All the people at #mono

I will be working on this thing again on the weekend so I can push it into the community plugins for Tomboy if Sandy doesn’t mind. But meanwhile back to OMG!

And if you are interested and you can vote for your favorite application to be extended to use Zeitgeist here.



Hot/Not (IconViews)

Michal Hruby is working on Sezen and one thing I noticed is that the IconView compared to Nautilus are JUST PLAIN UGLY… Look Here:

You can see the highlighted items look different in terms of “highlighting”. The selection in nautilus sets a round frame around the text as well as the icon while the standard highlighting just look like a square around the item. Our question is how do we get our IconView to look like the one from Nautilus?

Help with Mono for Zeitgeist

At Zeitgeist we are finishing up some nice Tomboy and Banshee Addins.

Currently we are facing an issue with Mono DBus and we reached a new level of desperateness.

You need to have Zeitgeist running and installed as well as the latest 0.6.1 NDesk.DBus bindings.

I wrote a python script as as well as a Mono App to demo the problem we are facing.

Both app send the same request to the Zeitgeist DBus Interface and Zeitgeist acts upon it. Also using dbus-monitor  I can see that Zeitgeist is sending back the results. However the results dont make it to the Mono app although the python one gets them…

the input signature is nasty but again it doesnt matter since it gets invoked by both the mono and python app

(xx)a(asaasay)a(assaasay)uuu

the output signature is

as

Here are the two apps:

Mono


The output:

*** file:///home/seif/Desktop/test.py System.String[]

Python

The output:

*** file:///home/seif/Desktop/test.py
dbus.Array([dbus.String(u'note://tomboy/3ed87be0-2bee-4d02-9809-d1b06937d77a'), dbus.String(u'file:///home/seif/Downloads/dbus-explorer-0.5.tar.gz')], signature=dbus.Signature(‘s’))

You can see both outputs are not the same, somehow the mono app is not getting the replies back and as i said I can see in Zeitgeist that its being invoked by mono as well as the results being sent when looking in dbus-monitor.

If you want to try it yourself and help us make sure to replace the uri variables with one existing on your computer and that gets logged by Zeitgeist…
Thank you in advance for any help or tips

UPDATE PROBLEM SOLVED… I AM STUPID SOMETIMES

OMG! Current Iteration

So to show you guys feedback on what we are doing in OMG! I would first like to introduce you to the “professional” alternative GNOME Achievements that is being developed by the project hamster guys.

While the 2 projects are the same in a way they differ in other areas, especially in the trophy specifications. We are not out to compete but i tried to see that my team surrenders development on our engine but for somehow its hard to slow them down.

The 2 projects also differ in their development processes and tools. We use Mono (Vala port is there too) they use Python. They host on git we use launchpad. Our development is more agile and evolutionary (several iterations and public development and reports) they are more planned and structured.

I advise you to look at their work… that being said…

I tried to assemble a small new team to work on OMG! because the Zeitgeist team is very busy with development for Unity and GNOME integration (Michal Hruby will be releasing Sezen this weekend), and the new GAJ will follow on monday.

Current Development Iteration:

Team

Meanwhile our development will continue. Currently the team consists of:

  1. Manish Sinha (Daemon and Specs development)
  2. Chris Szikszoy (Daemon and Specs development)
  3. Adam Zimmerman (UI Design)
  4. Kilian Valkhof (UI Desing & Development)
  5. Alex Launi (Code inspection and review)
  6. David Nielsen (UI design & API design)
  7. Me (General spanking and a bit of this and that)

We are open for anyone to come join the Team.

Daemon

Manish is really rocking the daemon. He will be updating the specs here as he develops. We used to register our trophies over DBus however now Trophies are registered the same way the GNOME Achievement guys do it. (Yeah we stole that part :P )

UI

Adam Zimmerman contacted me with a very nice UI design and documentation to it. We are basing our development on that.

SUMMARY (IF YOU DON’T WANT TO READ EVERYTHING BELOW)

Trophies can be displayed like a trophy case layout or in a list view. Users can change the zoom or display style (trophy case, scout badges), and share their achievements on blogs, social networks, or as a picture. Any trophy can be “un-accomplished” or hidden if the user wishes. A hints section shows one installed application and one not-installed application where more trophies can be earned. New applications are rotated in daily, at random. The hints section has buttons to open/switch to/highlight the installed application, to install an application shown in the hint, and to learn more about it before installing.

MOCKUP DETAILS

TROPHIES (first mockup page)

The Trophies tab is the main display case for all the trophies that have been earned. The trophy icons’ layout imitates the way one might arrange trophies in a display case in real-life.

The View menu would include a menu option to switch the trophy case style. The default style would be glass shelves with a reflection of the trophy icons as if they were sitting on top. There is an implementation of a similar idea in the GCstar collection manager; a screenshot can be found at  http://www.gcstar.org/images/screenshots/MoviesGlass.png . The trophies’ titles would be shown on the front face of the shelf, like a label. The View menu would also contain an option to turn these titles on or off. (Another style choice would be a fabric background, like a scout displaying merit badges.)

Also in the View menu would be an option for switching to a list view. The list view would me more like a vertical list of large (48×48?) trophy icons and their names; it would not be like the list view in Nautilus.

Users could drag the trophy icons to reorder them. Additionally, the View menu would include menu items for sorting the trophies and for grouping the trophies (both usable in either view, with slightly different implementations). Useful Sort options would be (1) trophy name and (2) date the trophy was unlocked. Useful Group By options would be (1) application, (2) date (today, this week, last week, this month, last month, this year, older), (3) unlock action (e.g., trophies for running a program a certain number of times would be grouped together, and trophies for changing an option in a program would be in another group).

The status bar always includes a count of how many trophies have been achieved (there’s likely a prettier way to display this). While the Trophies tab is active, a zoom slider is shown (this would probably require the trophy icons to be svg instead of png or some other bitmap format).

On the toolbar are two buttons, both for displaying accomplishments elsewhere. The Share button (which should be renamed “Share Online” to avoid confusion) would bring up a window to display trophies in various forms online such as a blog widget, in a profile on Facebook/Ubuntu Forums/etc., or a post or status update on Twitter/Identica/Facebook/a blog/etc. Mainly, this would share either trophy lists (graphical, text, or both) or a count of trophies. The user could choose to share only the selected trophies instead of the whole lot. Kevin VanDine just published a blog post about libgwibber (which could be useful) here.

The Take a Picture button would export a picture of the display case with the current view settings (zoom, sort, background, etc.). Click one of the trophies to see what would happen when a trophy is selected.

(This will take you to the Trophies Detail mockup page.)

TROPHIES DETAIL (second mockup page)

A box containing details of a trophy opens, showing a larger icon (128×128?), the trophy title, a description of how the trophy was unlocked, any humorous comments included by the trophy creator, the date and (perhaps) time the trophy was unlocked, trophy hiding options, and a button to reset the trophy. It might make more sense to have this box always open (and just blank when nothing is selected) instead of dynamically resizing the display case.

The trophy hiding options and the Forget I Unlocked This Trophy button would be available when multiple trophies are selected. Trophies hidden “everywhere, including from me” would be accessible by choosing “Show hidden trophies” from the View menu. The user may prefer not to show certain trophies for various reasons: they don’t want others to know they’re using a certain app (e.g., BitTorrent) or using their computer in a certain way (e.g., late at night or checking e-mail too often); or they don’t like the title or icon of the trophy (e.g., one commenter suggested a trophy called “Serial Killer” for killing a frozen application 10 times; I don’t want to have to explain that I’m really not a Jack the Ripper wannabe).

The Forget I Unlocked This Trophy button could be useful if the trophy was unlocked by someone borrowing the computer, or the user might have other reasons for “starting over” on a trophy. If the user clicks this button, a dialog would slide over the middle of the toolbar, saying, “You removed 3 trophies from your history; they will again be available for you to unlock. If you don’t want to see the trophy anymore, you may hide it instead. Undo?” (like GMail does when you delete an email). An easy-to-use undo option is preferable over annoying the user with confirmation dialogs.

Click on the tab labeled “Get More” to show the interface for hints.

GET MORE (third mockup page)

The Get More tab would list two applications at a time: one installed application that doesn’t have all its trophies achieved, and one not-currently-installed application that has a trophy to achieve. The applications are chosen at random and rotated out every day or so.

This would help the user to preserve the reward and surprise of unexpectedly unlocking a new trophy, yet still allow them to get help if they’re stuck. Both sections would display the app’s 48×48 icon, the app’s title, and a brief, easy-to-understand description of the app.

  • The Run it now! button would run the application; it would change to “Switch to it!” if the application is already running, or “Where is it?” if the application doesn’t have a window for its main interface (e.g. a panel applet, indicator, or icon in the notification area).
  • If the user clicked “Where is it?” the effect would be to dim the rest of the screen and show a red arrow pointing to the applet, indicator, icon, etc. The not-currently-installed application has two buttons.
  • The Install it! button would run the install command(s), asking permission from the user if the install requires adding or activating a PPA or other repository.
  • The Learn more button would show the application in the Ubuntu Software Center (or open a browser with the relevant OMG! Ubuntu blog post if it’s not in the standard repositories).

After a discussion about an app-centric trophy view Adam came up with the following two mockups:

I had a few ideas for viewing trophies by app:

  1. Keep it in the Trophies tab and add a “Group By” option for “Group By App” to the View menu.
  2. Keep it in the Trophies tab and add a “Show Apps” option in the View menu.
  3. Add an Apps tab—I think I like this approach best. It would be very similar to the Trophies tab setup. You could share or export this display just like you could with the one on the Trophies tab. The details area would also show details about an app when you click on an app icon or title.

Here is a quick mockup of how this could look in either the Trophies tab or the Apps tab (it’s similar to what I visualize for the list view with the Group By setting on):

(Tomboy is collapsed so its trophies are hidden)
Trophies that aren’t specifically related to any app come under a miscellaneous section, titled “General” or something. Also, I think if a trophy is related to more than one app (e.g., a trophy for working in gedit for a half hour while playing music in Banshee), it would show up under both apps.

Here’s an alternate version with buttons for opening/switching to/highlighting an app (just like in the “Get More” tab):

However, I think those buttons are better placed in the details section shown when the user selects an app, like the next mockup shows. (The mockups above aren’t very good at telling the user they can select an app by its icon or name, so that would need some tweaking.)

So with that me and Kilian Valkhof will be implementing the UI using pygtk and Webkit (I have to get rid of my current UI).

Trophies

I started working on a set of trophies in a service that uses Zeitgeist to award based on activities. Some simple cases that work are:

  • Tomboy Amateur: Edited 5 Tomboy Notes.
  • Tomboy Experienced User: Edited 15 Tomboy Notes
  • Tomboy Addict: Use at least Tomboy Note per day for 7 days in a row.

This also works for Rhythmbox, Banshee and gedit at the moment (It is copy pasting the same code)
Currently finishing a more advanced trophy set:

  • Jonoholic: Listen to all Severed Fifth songs from the new album
  • Jono Wannabe: (surprise)

While many people disagree with the idea behind a trophy or achievement system there is at least to thinks that stand up for it:

  • Learning aid: Allow people to explore the system and use Applications. Give them the feeling of accomplishing something. Especially for kids.
  • Behavior monitor and control: The not so fun side would be awarding trophies for weird behavior:
    • Weirdo: Have the computer running for 8 hours without screensaver going on.
    • Pervert: Watch 5 pornos in 24 hours.

What now?

If you want to develop with a fun team please come on #omg! on freenode and contact us. It is a small code base for everyone to have fun with.  Also we need a new name for OMG! so feel free to comment and suggest…

Upcoming Interview with Robert McQueen (Collabora, Telepathy, …)

OMG! Trophy Case (Mockup)

While I managed to get a set of developers working on the OMG! backend, I took the initiative to mock-up the Trophy Case (OMG! Awards Viewer). It is my very first self made mock-up so please have mercy…

With the current development speed I think I can have it hacked in (Gtk) by tomorrow and will plan the Cairo version with some of the Docky developers…

So to sum it up:

  • We have the the backend reaching a good beta soon (it will get a zeitgeist soft-dependency for now to store when the awards were given to the user and how)
  • We have our first set of trophies:
    • Evaluating Tomboy usage
    • Evaluating gedit usage
    • Evaluating Totem usage
    • Evaluating listening to Severed Fifth
    • some more to come…
  • The mock-up is up and we are ready to hack…

Since we are working using an agile development process  and the new team is rocking, any modifications wanted or new requirements can still be developed, so feel free to state your opinion.

In other news… We are down to 16 bugs in Zeitgeist. Michal Hruby ported the datahub process of zeitgeist to Vala… making the overall consumption of Zeitgeist and all its processes around 10 MB maximum all in all. But under normal usage with Docky and Activity Journal its looks like this…

The Activity Journal is reaching a stable now so a release is sometime in the next 2-3 days…