Older blog entries for RyanPavlik (starting at number 34)

N800 Synchronization - Nearly Demystified!

So through the graciousness of a developer and their donated code, I have a Nokia N800. It’s an awesome device: I cannot overstate the value of using the same software on my desktop as on my portable device. I refer to it as my laptop replacement: with a new Bluetooth keyboard, it can essentially do everything my outdated laptop did and faster, except for slide presentations.

Unfortunately, I had been using a (slightly flaky) Palm Vx, and was hoping I could replace it with the N800. Yes, I knew when I got it that it wasn’t a PDA, and that there was no officially supported PIM software, and that anything for it was probably a little flaky, but that didn’t bother me - I never was a Palm addict and most of the time used it more to take notes on than actually organize my life.

However, I did install as much of the Pimlico Project stuff as possible, as well as the GPE PIM suite. The “hacker” synchronization of Evolution on my desktop to the Pimlico stuff (copying files from my .evolution directory) worked ok the first time, but the lack of 2-way interaction and the restriction of the system to relatively manual, calendar-only operation made it essentially not functional. (And, when I clicked on a date intending to look only at that day, it liked to add events instead, and Cancel didn’t always work, so I had random events scattered on my calendar.)

With some trepidation, I decided that I would use the GPE stuff - I believed it would be harder because it wasn’t the same data store as Evolution, but only GPE had all the features (calendar and todo) that I needed, and people had, at least in theory, synced with it before. Today I took some time and, for probably the fourth time, looked at all the OpenSync tutorials I could handle. It strikes me as very powerful software that is still very much under development. My version in Ubuntu Feisty was too old to have the GPE plugin, and the additional repo on the OpenSync site was i386 only (and I’m AMD64). So, I rebuilt the source packages from their repo for 0.22 (the latest stable version) and attempted to use it.

This brings me to the good news point - I got it to work! Basing my steps heavily on the instructions to sync a GPE iPaq with Evolution, and opting to use GUI tools instead of CLI whenever available, I was able to get syncing to work relatively well! There are a few issues, but I’ve documented them on my instructions and when I figure out whose fault they are, I will fix them or file bugs.

So, for the sheer sake of making these instructions available to other potentially frustrated N800 users: How To Synchronize an N800 (with GPE) and Evolution. It is my hope that the next person using an N800 who wants to try some cutting-edge PIM stuff will have this guide to get them started, so they won’t get sidetracked on a million and one different paths. There’s obviously some great development going on with these PIM apps, but I fear not many people end up actually syncing things anymore, and those who do know how already, so they don’t write up instructions. Hopefully these instructions will let more people take advantage of all the real work the devs are doing.

Till next time, keep it in sync!

Syndicated 2007-07-02 01:19:22 from code art life - Ryan Pavlik on ClearDefinition

It Builds!

Thanks to the wonderful help of my mentor Marc (uwog) and the help of Hub who was productively loitering in #abiword at the time, I am proud to announce the following:ABICOLLAB BUILDS AND LOADS ON WINDOWS! Because I’m in favor of eliminating black magic, the build instructions are on my web site, http://www.cleardefinition.com/  for the enjoyment of anyone with some free time and a Windows computer.  I’ve definitely got a ways to go still (the dialogs are just stubbed in, etc), but this is a major milestone.  Enjoy the screenshot!

AbiCollab Builds on Windows - See the Collaborate menu?

Syndicated 2007-06-12 22:08:42 from code art life - Ryan Pavlik on ClearDefinition

A Tale (Tail?) of Trailing Slashes

Well, we’re now a bit over a week into the Summer of Code program, and I figured it would be time for an update.  Over the last week, I’ve been working on getting AbiCollab to build on Windows.  Now that I have makefiles somewhat figured out (see my last post for more about that), I went ahead and created a diving make buildsystem for AbiCollab.  This may sound easy, but there was one minor complication: it looked like my include paths were being ignored!  Marc even tried hardcoding them once (instead of using $(shell pwd) ) and it still didn’t work.  Nevermind that other plugins had nearly identical makefiles with fully functioning include paths…

Ahh, but they weren’t quite identical.  I tried to shuffle around the build order for directories, and this gave me an important clue: I could get one source file to build to an object file, but only that one file.  With my spirit renewed (when your mentor is confused/stumped and everybody else says makefiles are black magic, it can be a bit difficult to push ahead), I compared the makefile from the functioning folder with the one from a problematic folder.  The only difference I could see was that in the “broken” makefile, some of the include paths (all except $(shell pwd) itself, I think) had trailing slashes, and there were no trailing slashes in the functioning one.  It seemed like too simple, but yet, perfectly logical, since the makefiles were otherwise identical and identical with functioning ones in other plugins.

After removing them and attempting a make (which was mostly successful: definitely proceeding past where it had before), I was ecstatic and shouted for joy (IN ALL CAPS) in #abiword - the weird problem that had held back my progress was now resolved!

Mind you, there are still a few more problems, but if this was easy, Google wouldn’t be sponsoring me :)  I’m definitely having a blast so far, and I’m totally pumped with how awesome AbiCollab will be.  An advantage of being stuck for a few days on a problem is that I skimmed a bunch of the files trying to figure out the problem, so I have familiarity that will definitely be handy.  So that’s where I am right now - working on more compilation fixes, currently wrestling with getting the TCP backend (with asio and boost) to build.

Till next time, keep hacking, ants!

Syndicated 2007-06-07 23:46:15 from code art life - Ryan Pavlik on ClearDefinition

Summer of Code begins… with Psion import?

So today was the official start of the Google Summer of Code, which I am thrilled to be a part of. My first task is to get the AbiCollab collaboration plugin running on Windows, and getting a GUI on it. There has been no work on AbiCollab on any platform except Unix (and Sugar/OLPC), so with regard to building, I had to create Makefiles from scratch. As our Windows build uses a “diving Make” system instead of Autoconf/Automake like the other platforms, I have to figure out how exactly those makefiles work and how to create new ones to build AbiCollab properly.

This is a little bit of a challenge, since the problem is actually dual: we both have a new/untested build system, and code that might not actually even build at all on Windows in its state. As I was working on cleaning up my build instructions, I realized that some time ago, I had disabled the Psiconv (Psion Word) plugin since it was causing some problems, not working very well, and used the old “peer libs” mechanism for compiling. I figured I may as well get that going again (providing a binary distribution for ease of use), and I unknowingly got myself into a bigger project than I anticipated. (I hadn’t remembered it ran as a peer lib, and so I installed it as a system library in MinGW) That was alright, though, because it provided an exercise in Makefile-fu necessary to proceed in the AbiCollab project. I had to change bits of the makefile from the old peer lib setup to a new system installed setup using pkg-config (and I made the pkg-config file for psiconv). The cool part is, I was successful! If I comment out a debug message (since there’s something telling it to be a debug library even though I want just a regular version), the plugin builds and runs, and even imports the sample file that came with Psiconv!

An unusual start, perhaps, resurrecting an old plugin, but useful to some end users and definitely useful to me as an exercise. Thanks, Google!

Psion Plugin Demo

Syndicated 2007-05-28 21:49:03 from code art life - Ryan Pavlik on ClearDefinition

Windows Build Instructions - now from SVN!

For anyone who wants to get their feet wet with building an AbiWord binary or even installer packages on Win32, I’ve updated my build instructions to include how to check out the latest version from Subversion!  I’ll be updating my own nightly builder (on Uwog’s VM) soon so that those who don’t feel like following the instructions can nevertheless have a clean, bleeding-edge build to test with.  Get the instructions at http://cleardefinition.com/page/Windows_Build_Instructions/

Syndicated 2007-05-26 19:00:23 from code art life - Ryan Pavlik on ClearDefinition

And so it begins…

This summer, I’ll be working on AbiWord for the Google Summer of Code, in the AbiCollab project (”Systematically breaking and fixing AbiCollab”). Though the Summer of Code doesn’t officially start for another week, I thought I’d ease into it with a brief evaluation of the current state of AbiCollab. I had worked with the plugin a while ago (before the big rewrite), but hadn’t gotten it built recently.

Well, I can proudly announce that that’s changed. Thanks in part to the joy of virtualization (running both a Jabber server and the second AbiWord instance), I have the latest AbiWord (from SVN Trunk) compiled and running with the XMPP (Jabber) backend of the AbiCollab plugin. As the screen shot shows, it does work! I did run across a few issues already, but I definitely feel more capable and comfortable with the code now. And, I’m sure my mentor (master?) uwog will be glad to oblige my requests for explanation :-P

it initially works

Syndicated 2007-05-22 04:10:39 from code art life - Ryan Pavlik on ClearDefinition

25 Jan 2006

AbiWord, or, I’ve given you a couple of days
By now, everyone seeing this post though P.A.C or Advogato or some mystery aggregator should have upgraded/installed AbiWord 2.4.2. It’s pretty slick, isn’t it? ;)

Programming Languages, or, Python meets C++ STL
I was chosen to work on a research project at my college involving shape approximation and other things. It’s a mathematical as well as a computational problem, and as one of the two students on the project, I’m the “computer science guy”. However, this is probably more background than strictly necessary. Yes, this is the main point of my post, I just felt obligated to plug AbiWord above :D

It’s probably no secret that I’m a fan of the Python programming language. Some slick list tricks, the incredible efficiency with which I can whip out short programs, classes, and even slightly trickier stuff means that when I’m not programming for class (then the required language is C++), I will at least seriously consider using Python. I did so for this project, because at the early stage that I started pushing code, I decided it was best to figure out the proper algorithm than get it completely maximized speed-wise. Fair enough - I cranked out a mostly-working program (just mainly one bug in the algorithm which I knew the solution to). However, because others have to deal with this code, I was asked to convert it to C++. Not an unreasonable request by any means, but it did mean that I’d have to enhance my knowledge of C++ to get away with what I was doing in Python.

I immediately decided against using a homemade list template from class, as I knew of the existence of STL and decided whoever wrote that code certainly was a better programmer than I. Cracking open the book and Google, I went ahead and looked at the STL container classes. Since I was using the features of Python’s lists extensively, I decided to go ahead and use the STL list template.

One particular feature I liked (usually ;) ) in Python was the fact that “for” was actually more of a “for each” which iterated over a list. Since I had to do some “item-by-item” (and segment (two items) by segment) processing, I used this extensively. Unfortunately, the section in the book that I read about the iterators was not rather clear. Initially I found myself using a boolean flag (to say if we’ve gone though the loop once) and a do-while loop to ensure that I processed each item. I had missed the sentence the first time through that said that list::End() returned an iterator past the end of the list (rather than the last item in the list).

Since I had to do segment processing (on a list of points in a polygon), I also realized that (hopefully) the easiest way to do so is to ++ a second iterator started at ::Begin() and incremented once before the loop. To circularize this iterator, I test at the top of the loop to see if it2==mylist.End(), and if so, reset it to .Begin(). In theory this ought to work, but because my code is still about half Python, I haven’t actually compiled and tested it yet. If someone knows of a decent way to implement a circular linked list with STL (more elegantly) aside from writing a circular list myself, an email at the account listed in Advogato would be greatly appreciated. :) However, assuming that this trick actually works, I’m not terribly dissatisfied.

I went into this Python to C++ conversion project with a bit of trepidation, but it’s pleasantly surprising me. STL lists are actually fairly understandable, despite mutterings I had heard to the contrary. We’ll see if I still am singing the same tune after I try to insert points into a segment without losing all semblence of sanity (and more importantly position in the loop). Might have to do what I did in one version of my Python program - return a new Polygon instead of modifying the current one.

Wish me luck! Until next time, may Abi the Ant be with you!

Syndicated 2006-01-25 04:17:24 from code art life - Ryan Pavlik on ClearDefinition

17 Jan 2006

AbiWord, or Pity the Foo running 2.4.1
All of you folks running AbiWord 2.4.1 or earlier, now is a great time to upgrade. 2.4.2 includes completed OpenDocument export and a lot of fixes for memory leaks. All of you running OpenOffice.org - now is a great time to upgrade from Writer to AbiWord. Give AbiWord a shot! www.abisource.com

Normally, I like treating everyone equally, but really, this joke is rich. Greatest Blonde Joke Ever

Syndicated 2006-01-17 18:19:56 from code art life - Ryan Pavlik on ClearDefinition

6 Jan 2006

AbiWord , or Progress mixed with “Isn’t That Strange…”

So as 2.4.2 is prepared for release sometime soon, I found it necessary to reboot over into Windows and do my duty with the compiling. I don’t have a CVS-STABLE tree checked out, so I rely on only gentle changes occuring to stable (which is generally just fine), and in case of some major problem surfacing at a tagging point, we can just fix it and re-tag, since tag comes before release.

So this time, as I’m getting the binaries completed, the notorious “hang during documentation build” occurs, and the matching “cause random processes in Windows to run away with CPU” symptom surfaces. Through some careful priority management, I get the build to run again, and correctly. Alright. Log off, and log back on, time to install. The install works great, and aside from a strange plugin conflict (now resolved with a stop-gap measure), it all looks good.

Well, almost all. For some strange, strange reason, the background color of the drop down boxes on the toolbars (style, font, size, and zoom) is grey, rather than white as expected. It all works fine, but the boxes look almost disabled, even though they aren’t.

I have no idea what caused this, where it came in during development, or how to fix it. I don’t recall it occurring in 2.4.1, but neither do I recall any commits that would affect the Windows front end’s coloring of drop-down boxes. Go figure.

So there’s my mystery. Any ideas?

(Yes, I’ll file a bug next time I boot into Windows.)

PS. I <3 VMWare, and as soon as it’s financial feasible and sensible, I will get Workstation instead of installing Windows on top of an installation of Fedora Core in VMPlayer. Qemu has been officially been blown right out of the metaphorical water.

Syndicated 2006-01-06 01:38:12 from code art life - Ryan Pavlik on ClearDefinition

22 Dec 2005

AbiWord or, behaving maintainerly

I now have some deal of free time to work on AbiWord. I figure that before I start work on the Unicode things that will be done for 2.6, I should at least work on being able to build CVS HEAD, since some significant (at least win building-wise) changes have gone in. Most difficult is that we now use the “system wv” library, and depend on wv 1.2.0, which has to be compiled separately against some of its own dependencies. Starting with my detailed instructions to build 2.4, I am working on a set for CVS/2.5/2.6. The first thing I am doing is breaking down the dependencies and finding out exactly what is the minimum needed to complete any task (build wv binaries, build mathview binaries, build linkgrammar binaries, build abi, tools, or imp/exp), since for the previous version, that was all in one monolithic list of dependencies. That will also help me know when I can upgrade these in upstream versions without inducing breakage.

Right now, I am strugging to build wv, which is a strange thing. Everybody (well, uwog) has said that it’s fairly straightforward, but as I’m starting again from a clean install of MinGW/MSYS, with the aim of documenting everything, I need to know what incidental voodoo made it easy. The first trouble was that without the MSYS DTK (which was removed from the build environment instructions for 2.4 due to some mathview problem which may or may not have been caused by it), autotools won’t work, even though I install them manually and have a working install of ActiveState Perl. At the moment, I can ./autogen.sh and get partway through ./configure –prefix=/mingw, but it stops when it says it encounters an error with GLIB. I have installed GLIB 2.6.6 from TML, and this shouldn’t be a stopping point, but it is at the moment. If anyone has any clue why this is, pointers would be greatly appreciated. (Yes, I tried an older glib version, though apparently wv 1.2 needs a recent glib, so looks like we’ll be upgrading across the board for abi 2.5/6 to glib 2.6).

When I feel sufficiently motivated to reboot out of Ubuntu AMD64 back into Windows, I’ll poke some more at it. I could really use VMWare, now that I think of it. If anyone cares to give me a very expensive Christmas/Hanukkah/Kwanzaa/Winter Solstice gift, that would reduce the trouble of working on Windows :D

Till next time, enjoy using AbiWord! (Keep your eyes peeled for 2.4.2 - it will apparently rock one’s socks right off, or darn near.)

Syndicated 2005-12-22 23:09:32 from code art life - Ryan Pavlik on ClearDefinition

25 older entries...

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!