The statistics collection feature of KActivities is slowly becoming
a core part of Plasma.
This raises some privacy concerns as can be seen in the
bug filed against the KRecentDocument framework.
While KRecentDocument has nothing to do with KActivities,
the issues mentioned in this report have been
on my mind since I started working on the usage tracking mechanism of KActivities
(long before said report).
As you know, the Activity Manager (if you allow it to)
is collecting the data about which documents you work on.
The documents get automatically scored based on how often you open them,
and how recent was the last time you did
(it is a bit more intricate than that, but this is the general gist of it).
This has been used in Kicker to show the improved recent documents,
contacts and applications
(yes, contacts and applications are treated as documents)
as well as in the Tasks applet and Plasma Media Center.
Apart from these few places, it is not used much.
One of the ideas I’ve had for some time now,
but haven’t had the time to implement,
is an advanced history browser.
The idea is to have the most popular documents
(of a specific activity) shown in a timeline
to represent when the documents were used the most.
Also, it will be able to show other documents related to these.
So much for the time being,
I’ll write more details when the concepts for the UI become more crystallized.
I’ve received a surprising invitation to give a talk in Budapest this July.
The main surprise was not the invite itself -
I got it Zoltán whom I met at C++ Russia.
It was in the fact that this it was not for a C++ event,
but for a functional programming one -
the Central European Functional Programming summer school.
I have to say I got intrigued, and started thinking about the topic for my lecture.
At first, it felt strange to send anything mentioning C++,
but then I saw that Zoltán’s lecture will be about immutable programming in C++,
and that a few other familiar C++ guys have been invited as well.
In the end, I decided to talk about functional reactive proramming in C++
which will be a thrilling and enticing tale
of event-based systems and the power of reactive streams.
I’ll also cover some fun new things we are to expect from C++17
that are bringing even more functional programming concepts than we have
in the current standard
If you look at the current schedule,
you’ll see that Zoltán’s and mine are not the only planned C++ talks.
Rainer Grimm (another really swell guy I met in Moscow)
will talk about the functional capabilities of modern C++,
and how they fare against Haskell.
Curently, three out of ten talks are dedicated to C++,
one to Erlang (yay!),
one to SaC (a single assignment variant of C),
and one to F#.
Other lectures seem to be lanuage agnostic, based on the currently available abstracts.
From the above,
we can deduce that C++ is currently the most popular
and most promissing functional programming language. Right? :)
Implementing Qt data models is anything but fun.
For that reason,
I don’t blame anyone for writing a
beginResetModel / endResetModel
combo any time a more complex change has happened.
That is something that we all do,
that is something that even Qt people do in their classes
(see QSqlTableModel::select for example).
Resetting a model is an expensive process
that can induce overly many transition animations in QML views.
And it is often not really necessary.
Updates are rarely that complex to warrant
invalidation of all data in the model.
Usually, they only consist of a few additions or removals.
As I’ve already mentioned,
KActivities are now on KDE’s Phabricator.
One of the things I really did not like about our todo.kde.org service is that
in order to use the API to get your tasks and projects, you need to have
administrator privileges. Therefore, no sane tool actually supports it.
Phabricator is much nicer in that regard.
It has a nice API, and it even has a Python module which can be used to
retrieve anything that you’d want it to.
The first thing I wanted is to pull the issues and review requests from Phabricator
into the TaskWarrior
(if you still do not know what TW is, you ought to investigate it right this instant).
There is an external tool called BugWarrior
that is able to get the tasks from a range of different services
like github, jira, bugzilla (does not work with bugs.kde.org) and others.
Fortunately, it also supports Phabricator.