Category Archives: coding

GSoC Update: Finished category syncing and Contacts conduit

Things are progressing very nicely although not at the speed I original intended. Yesterday I finished some small bugs in the Category sync code which were still there when doing a life sync. Now you can actually add a category to you palm and it will be added at the pc side during sync and vice versa. The cool thing of this is that this code is in the base library which means that all conduits based on it will have support for category syncing. The fixes make the KeyringConduit less or more fully functional. The only problem is that there is not really a good Keyring database editor. And no don’t try the java keyring editor as it will bork your database file. As I needed something for testing I started working on a editor but that one is far from complete and I first need to finish my GSoC work. It does, however, support adding, deleting and modifications of records as well as creating new and opening existing databases.

Another thing that I’ve finished ™ the last couple of days is the contacts conduit. This conduit is able to sync the addressbook of the palm with an Akonadi contacts resource (currently I only tested with the vcard resource, but I guess other resources that only contain contacts should work as well). Of course there will be some polishing and bullet-proofing needed before it is ready for day-to-day use but the first results are really promissing. I really have to say that working with the Akonadi libraries is a real pleasure. Good work guys!

Next steps will be abstracting some code that can be used for all conduits that are talking to Akonadi and port the other two PIM conduits Calendar and Todo.

Oh and before I forget: which is only possible thanks to generous sponsoring from the KDE e.v. Continue reading

Posted in coding | 2 Comments

GSoC: A small side step.

One of the goals of my GSoC is to let Akonadi do the storage handling for KPilot. At least for the PIM conduits. In my previous blog I already mentioned that Akonadi entered KPilot. However yesterday and today I had to dive into the code of Akonadi itself.

Akonadi stores a revision number of for each item that is stored with it. KPilot however, does not have a notion of revisions. What it does store is the last time that the handheld was synced. So to see if a record on the pc side is changed it looks if the modification time of that record is after the last time that there occurred a sync. The dirty and quick solution (read work around) would be to store the modification time in a custom attribute of Item.

Well, Akonadi had *some* code already there for modification time but not yet on the client side and also not completely on the server side. Behold! =:) That has changed. (Thanks to a lot of patient of vkrause). Patches are send to the kde-pim list for review and will probably be committed soon. Unfortunately I did not have the time to implement more sophisticated features like: give me all items modified after <date>.

That’s all for now folks. I need to get back to KPilot hacking to keep Mr. vanRijn happy =:). Continue reading

Posted in coding | Comments Off

SoC update: Akonadi enters KPilot

According to the testcode category syncing seems to work, although I did not yet test it extensively in a real sync. The test code does a sync, but between two local databases. It might be that there are still issues when using a database on the palm. But with the absence of any reasonable good working conduit (the only one which works ™ is the keyring conduit.) I’ll leave it as it is for now. The fundamentals are in and it should not need too much polishing.

The next step is to get a conduit syncing with an Akonadi collection. I started working on replacement for the abbrowserconduit (yes horrible name, the new one is called contacts). It does not much right now but the first code is promissing. I’m already able to contact Akonadi and fetch the addressbook items from it. What I’ve seen until now from Akanodi makes me already falling in love with it. A short chat of 15 minutes with vkrause, another 30 minutes of coding and compiling and the first working code is there. I hope that within a week or two KPilot is able to sync it’s contacts with Akanodi.

Oh and my brother and father came home yesterday with Czech ambulance. I was quite relieved when my dad called to tell he was home. My brother does reasonable well luckily. I hope he became a bit wiser now (although I doubt =:). Continue reading

Posted in coding | 11 Comments

I need some rest after holliday.

What should have been one of the most relaxing weeks of the year became quite stressfull. It all started quite okay. First we had a wedding of a old school friend of Agnes. It was a beautiful day, the bride looked wonderfull and the wether was quite okay. Next day we celebrated the birthday of a sister of Agnes and prepared for our trip to Prague and Rokytnice nad jizerou (where we would met the rest of my family).

Before we left, we got a phonecall from my parents that my sister and her husband had to leave early because the mother of a good friend of them died. A friend of us brought us to Dortmund where we took the plane to Prague. The trip went quite well. In Prague we had a couple of wonderfull days with just the two of us. Of course I kept my promise and kissed Agnes on the Charles Bridge (karluv most):

Prague is really a wonderfull city and really romantic =:). However you have to look to the right direction. Luckily Agnes studies art history and points my glance from the tourist shop level to the wonderfull details of buildings that are at a bit higher level. We enjoyed a wonderfull classical concert of a small chamber orchestra in the national museum (really good ambiance and acoustic) and several other bands that play music on the street. Wandered around the city enjoying buildings, people, colors, sound and sights.

On sunday my parents picked us up and we traveled with them to Rokytnice nad jizerou, a small town ~100 km above Prague. We had to get acclimatized a bit because we really enjoyed being with just the two of us, and now we where with 7 people. However the landscape there was also very great. It has some small mountains (up to 1400 metres). Agnes and I rented some mountain bikes and made a really wonderful ride in the woods and mountains.

My two brothers and the girlfriend of my oldest brother also rented mountain bikes. However, they where too lazy to climb up and did not joined our ride. In stead they took a ski elevator with the bikes and just drove down. On Wednesday they wanted to drive again and the oldest of my brothers decided that he didn’t need a helmet this time *sigh*. Youngish recklessness I guess. This became almost fatal because he flew out of a curve and seriously damaged his skull. He had a skull base fracture. He is operated the same day in a town 30 km away from where we resided. From that moment on we where only busy with driving between our vacation address and the hospital, trying to get information about his status (the nurses in the Czech Republic do not speak English nor German) and arranging the journey back to Netherlands for us and my brother. Luckily he’s quite well right now and even got back his sense of humor. (At least he could laugh when I suggested “brain breakers” after he asked for a puzzle magazine to kill time. The doctors had to shave his head for the surgery which made him even uglier then he was =:)

As it looks now he can come back to Holland somewhere this week.
Continue reading

Posted in coding | 2 Comments

users, contributors, SoC and holliday.

First of all, I was pretty shocked reading about the disappearing of Aaron and all the fuss around. One of the things I really liked, and still like about the KDE community was the nice atmosphere in the community. I still know how Adriaan encouraged me to write some code for some functionality I wanted into KPilot. And also Jason has been quite an inspirator the last years. They are just some of the guys that help the new comers to step over the doorstep and to join “the club”. This is actually exactly what kept me from contributing to my distro of choice. (Yes I switched back again).

Now the question arose, what we need, user or contributors. (1, 2). I think that we need both of them. Even users that do not contribute directly to the project have some use. If only that they show to their family, friends, colleagues etc. that it is possible to have cool, featurefull and most importand free software. A more important question in my opinion is: how does the contributing part of the project respond to people that drop by. Even more urgent stated, how do you and I react on people dropping by and spitting out there thoughts, wishes and complaints? I guess we should more often count to ten before giving an answer. Oh and of course we should not keep quite when one of the contributors is attacked personally, especially not when that happens publically. I hope that the dot revamp will make it a bit easier to moderate this sort of poisonous attacks, but it still leaves us with a lot of other places like b.k.o and mailling lists.

So far my thoughts on this. (Oh and Aaron, I’d love to see you blog online again =:)

Of course I’ve not only been reading blogs the past couple of weeks. I still was finishing my internship. I created an implementation of compressed XML indexes (only the creational part unfortunately, the searching part is left for the master thesis I think). As the code is not very usefull yet I don’t publish it right now. The report is not finished yet, but I’ll put online somewhere when it is. The cool thing about this is that you can get compression ratios between 20%-60% (of the original file size) while have structures that support both navigational and content search queries. Which in turn is nice when you want to have search in XML on small devices for example.

Besides that I worked on my summer of code project. And currently I finished the first part of it namely category syncing. The framework I created previous year is now able to sync the categories of pc records and handheld records. This is quite cool, because it’s implemented in such a way that conduits don’t have to add additional code for this. Next step: port some of the conduits to the akonadi framework. I’m not sure yet how to start on this one, if you have some hints, please let me know. The basic idea is this: The base conduit initializes a dataproxy object for the handheld and one for the pc data store. Both are implemented by specific conduits (let’s say addressbook). The data store is responsible for iterating over the records. In a hotsync this should be only the modified records (is there even some way in akonadi to see if a record is changed after a sync or do I have to keep track of that somehow), and in a fullsync it iterates over all records.

But first I’ll be off for a wedding, a weekend in Prague (I promissed my wife to kiss her on the Karls bridge) and a midweek to some small town 100km above Prague (forgot the name of it). Continue reading

Posted in coding | Comments Off

Time flies when you ……

have fun. Indeed it does. We’re already at the beginning of the summer of code again. Well that in itself is not a bad thing of course but the fact that I wasn’t able to do much in between this and the previous SoC is a bad thing. But besides the fact that I was not able to code much, I had quite an interesting year. I’ve had some great courses at the university and now I’m finishing an even more interesting internship. I hope to exaggerate on that a bit more soon.

However new SoC, new changes. First thing I’ll be working on is a long wanted feature in KPilot. Consistent support of category syncing. There where some conduits that did support it, I think addressbook had the best support. But every conduit did this in it’s own way. So abstracting this into the base conduit will finish the foundation for every record based conduit. You can find some more info at categorysync.txt. Comments on that are always welcome =:). I’ve also set up a project page which you can find at: SoC 2008 project page Continue reading

Posted in coding | Comments Off

Out of time, out of composite

Gah this so sucks….I really can’t find the time to do any serious coding. With vanRijn bussy coding for vmware and [ade] doing java magic this seems to mean that kpilot is bleeding to dead at this moment. Currently I’m bussy with some master courses which don’t only consume a good deal of my time but also of my energy.

However I did write some small tests for libplasma, even fixed a small bug and have another test in the running. Those are not too hard to do and even inspire some people. I hope to commit some more in the near future.

Some people seem to think that the web is lazy and that it’s time for the web to get to work. So…. let me add to the workload then. LazyWeb could you please inform me about this issue I have with the Composite extension of X? I have KDE4 compiled with Composite support but it seems that only the X instance at X :0 has composite enable. When I start a new session (let’s say at X :1) it doesn’t have dri and composite. The strange thing is that the new instance makes use of the same xorg.conf file so one should expect that it loads the same modules and stuf. I have an intel 915GM.

p.s. Aaron cheer up mate, I really appreciate all the work you do for KDE4

Continue reading

Posted in coding | 8 Comments

Some ideas about XML.

For a project I work on so now and then I work a lot with several XML standards like XSLT, XForms, XML-Schema and XHTML. I mostly use <oXygen/> XML Editor and XSLT Debugger for this. However this is a commercial tool and I don’t have a license for it so I’m not able to use it at home. It came to me that it’s really a shame that there isn’t an open source tool (at least I didn’t found it) for working with XML with the same quality. I think that this is really a shame because XML is a technology we shouldn’t ignore. In fact, we don’t ignore it because we use it in KDE in several places already, like in the KConfigXT framework and to describe user interfaces. Not only on the desktop XML is used more and more but a more important field (I think) is that of the service oriented software components, where XML makes it really possible to create loosly coupled software components which can be combined easily.

For a long time now I’ve been thinking that it would be really cool to haven a *really* good XML editor. Some features i’d like to see include:

  • autocompletion when given a schema or dtd
  • An editor which creates a skeleton of obligatory elements given a schema or dtd
  • An editor which behaves as a skeleton filler in stead of a normal text editor when given a schema. With this i mean for example that pressing arrow-right moves to next attribute or element value in stead of moving a character to the right.
  • Validating the elements of a specific namespace in a document containing more namespaces (for example validating XForms elements in a XHTML document
  • Support for XSLT transformations.
  • Fill in your favorite feature here….

Kate does offer some plugins for XML but they’re very basic in my opinion. As you see I started thinking about what I want, I even created an *very* (*very very*) rough sketch with some ideas of what might be needed at first. I really like to hear if there’s somebody out there with the same (or similar needs) and comments about the sketch. (Please keep in mind it’s really a first sketch not a serious attempt to lay down a complete design for a XML-Completion library.

Klik to enlarge:


A first very rough sketh for a XML completion and validation library.
Continue reading

Posted in coding | 8 Comments

Clean, finally clean

Finally after a lot of work the KPilot gui code is finally free from Qt3 and KDE4 support. I think that the porting did introduced some issues which needs to get solved. However the major part of the job is finished right now.

The problem I had with the QListWidget seems to be a bug in Qt. They reacted quite quickly on my bug report so lets hope that the issue is fixed soon. Now the porting is “finished” ™ I feel a bit obliged start working on more complicated things…. *sigh* more thinking. We still haven’t syncing categories solved out yet in the base conduit. We want this get done before we start porting the other conduits. I hope we can solve this out soon (yes vanRijn this is a hint =:), so that we can start working on the other conduits.

Continue reading

Posted in coding | Comments Off

Study, KPilot and weird selection behavior.

Time to make some noise again. My master courses are absorbing a good deal of my time at the moment. Not that this is in particular a bad case because they’re quite interesting. I’m doing a software architecting course for which we have to write an architecture document. This is quite fun to do, I really feel like an architect. Every iteration the architecture gets a more clear shape. From a vague vission in the beginning to an architecture which must be able to hold up for a year or twenty. I was quite surprised that there actually exists such architectures. The prof came up with some examples from the industry. This also made me wonder if and by whom software architecting is done in the freesoftware world. Drop me a message if you have some examples of it.

Another course I have is called advanced webtechnologies. This one is about the world behind search engines and searching in large amounts of linked documents in general. On the semantic web and on webservices. It was the first time to hear a bit about the inner parts of Google. One part of this course is to do a related project. I took this as a opportunity to take a look at QtJambi and eclipse integration. I was quite surprised by the ease of use of it. Also having the good things Java brings combined with the qualities of Qt is a very nice to have. One disadvantage is that eclipse became quite slow even on a 2.8 GHz machine with 1GB of ram.

I might not have had the time to blog in the meantime but I did see the change to work on KPilot a bit so now and then. We’re steadily working to get things done. There are quite some issues to solve yet. As a follow up of my summer of code project vanRijn and I are looking into a better way to do category syncing, which seems to be quite a complex problem. We’re also looking into a good way to detect at synctime if the previous sync failed or was done on another pc. And when I’m braindead I try to clean up the GUI code. This mostly means moving GUI code out of sourcefiles and create appropriate ui files for it. It’s quite a lot of work to do this, which I didn’t expect on first hand. Currently I have an issue with the {Q|K}ListWidget. I’ve set it’s viewMode to IconMode but it has some problems with selection behaviour. It doesn’t always unselect the selected icons. Maybe I do something wrong but it feels like a bug to me. To conclude this blog I’ll show you a pretty picture of this amazing selectionbehavior =:).

Oh as a sidenote, it’s extremely cool to read that the next Akademy will be in Belgium. This raises the change significantly that I’ll be able to attend.

Selection error in QListWidget

Continue reading

Posted in coding | 2 Comments