Older blog entries for RyanPavlik (starting at number 47)

And they’re off!

Google Summer of Code 2008 officially starts this week in the “main section” - coding!  In my case, I’ll be working on revamping the Styles support and interface, and to avoid having to code it three times, I’m starting first with a design phase.  As such, I’ve been working on an interview script, which should be ready to use now.  The purpose of the interviews will be to confirm or fail to confirm the characterization of use cases I made in my proposal.  I will also do bug triage here tomorrow, looking through the open Styles bugs and seeing if I can also filter out the Styles bugs in the Front End components in Bugzilla - see what actual software flaws there are to resolve, what insight/ideas I can glean from enhancement requests, etc.  With this I’ll be able to create a more comprehensive plan and schedule, as well as give me something to chew on when I don’t have test subjects available to provide interview results or prototyping feedback.

Though I’ve done the Summer of Code once before, this will be a totally different experience - new mentor, different codebase region (by a lot!), and entirely different focus - I’ll be replacing working but not human-friendly with friendly, efficient, and hopefully still working! :-D

Oh, and how did I prepare for the summer of code?  Well… I built a new desk!  (I already took care of community bonding a couple of years ago.)  An ergonomic, efficient desk area will inspire an efficient, ergonomic design - at least that’s the idea!

PS.  The hackergotchi on Planet AbiSource right now is not very flattering, not to mention fairly old - if one of the cool AbiFolk could change it to my new one, that would rock.  Bonus points if you put in a good word with the p.g.o folks too - get some AbiWord representation on the planet!  (It seems the “put your stuff in this table on the wiki” page disappeared from l.g.o without my request being fulfilled…)

Syndicated 2008-05-28 05:13:15 from code art life - Ryan Pavlik on ClearDefinition

The secret of Microsoft’s success

Clearly, it is AbiWord’s lack of videos like this that keep it from being the dominant word processor “in the industry.”  We don’t have an equivalent, but I can fix that pretty easily.

Vista Sales Video

Syndicated 2008-05-01 09:49:23 from code art life - Ryan Pavlik on ClearDefinition

Abi on Ubuntu, and Guademy

Howdy folks!  Thought I’d give an update on the AbiWord on Ubuntu work.  I’ve put up packages on my PPA, and as of version 2.6.2-0ubuntu0~ppa17 is in “final shape” - that is, I’m reasonably pleased that I have all packaging issues resolved.  We managed to get an MIR approved to bring in the headers for AbiCollab into Hardy if AbiWord itself gets in, so those builds have both TCP and Jabber/XMPP (Loudmouth) collaboration support, where the TCP one is a more polished and also compatible with Windows!  Now, the remaining steps to get Abi 2.6 into Hardy is to get libwv-1.2 promoted to main - this used to be included in the Abi tarball, so I’m hoping this step is pretty straightforward - and the actual sponsorship of my AbiWord packages into Hardy.  Here’s hoping it goes well!  If you’re running Hardy and want to check out Abi 2.6 before it hits the regular repositories, just check out my PPA: https://launchpad.net/~abiryan/+archive I’m also gonna see what I can do to put up a backport to Gutsy and perhaps Feisty, but no guarantees there, just check it out :)

Owing to my current location in Valencia, Spain, the host city of the second Guademy conference, I’ve been able to register and go!  If I know you and you’re going, send me a ping, and hopefully we can meet up there and say hey!

Oh yeah, and I’ll give in…

Manzanita:~ ryan$ history|awk ‘{a[$2]++ } END{for(i in a){print a[i] ” ” i}}’|sort -rn|head
82 cd
73 ls
63 ssh
30 sudo
23 (censored web site update script)
18 svn
14 killall
12 python
10 ps
9 mkdir


ryan@hardy-vm:~$ history|awk ‘{a[$2]++ } END{for(i in a){print a[i] ” ” i}}’|sort -rn|head
42 cd
38 dpkg-buildpackage
32 sudo
28 apt-cache
24 dch
20 ls
17 dput
10 svn
8 dpatch-edit-patch
8 ca

Interesting - I’ll let you guess which terminal I worked on the AbiWord package in…

Syndicated 2008-04-10 21:04:18 from code art life - Ryan Pavlik on ClearDefinition

AbiWord 2.6.0 on Ubuntu?

Why not?  After it seemed like only the lack of a package(r) was keeping Abi 2.6.0 out of Hardy, it became clear that wasn’t a good enough reason.  Thus, I set about to get together a nice package of AbiWord 2.6.0, based somewhat on the original Ubuntu packages, but fixing as many packaging bugs as possible and simplifying as I went.

The result: My source package creates only an abiword, abiword-plugins, and abiword-plugins-gnome package (gone are the days of abiword-gtk, abiword-gnome, abiword-common)  Furthermore, unless there’s a good reason for a plugin to not be included by default (good reason being defined as needing more dependencies), it’s been included in the regular abiword package.  (This means that abiword-plugins only has the grammar and math plugins. Nothing is in abiword-plugins-gnome right now, since I haven’t poked around long enough to get the gnome-office stuff going yet.)  Yes, this means ODT is in the main package, as is Microsoft Office OpenXML import and AbiCollab.

Yes, this is with just a single package installed!

Oh, and by the way, that screenshot was taken while in an AbiCollab session with an AbiWord 2.6.1 prerelease build running on Windows. :D

Syndicated 2008-04-06 16:40:56 from code art life - Ryan Pavlik on ClearDefinition

Windows XP Conquered!

Important patch #4 of the day is in and tested! It is late here, so I will let the screenshots speak (almost entirely) for themselves.

Add Account dialog - Bug on Windows XP


Annoying radio button bug fixed without hackish workarounds!

(For google to find for future programmers: If you have trouble with radio buttons and CreateWindow or CreateWindowEx - in my case when mixed with using a resource file - on Windows XP, and they have a black background and are illegible, here’s how you fix it. It may have something to do with being a grandchild window, but I’m not sure. You need to add the WS_EX_TRANSPARENT extended window style to your CreateWindowEx call - if you are using CreateWindow, just look at the docs to see the change, it’s minor. If your text boxes or edit boxes are coming out with a flat, 2d border, create a 3d border by using WS_EX_CLIENTEDGE as an extended window style.)

Syndicated 2007-08-16 06:18:57 from code art life - Ryan Pavlik on ClearDefinition

ListBox to TreeView - Join Dialog v2!

I’ve had a productive morning here - implementing a major UI upgrade to my still-bright-shiny-and-new AbiCollab dialogs on Win32. Both the Accounts and Join dialogs had been created with Listboxes, because they’re pretty simple. The Linux GUI has some more sophisticated GTK control, but my first priority was getting it working.

Now that it works, I have some time to go back and make things nice. In this case, re-doing the Join dialog so that we have Buddies as “parent nodes” and their shared documents as child nodes. I’ll refrain from discussing the few minor snags in figuring out the Win32 API to get this to go, and just give you the juicy screenshots.


Join dialog - Document Selected


Join Dialog v2 - Now with Treeview Goodness!

Isn’t that much nicer?

Now back to hacking…

Syndicated 2007-08-15 18:36:20 from code art life - Ryan Pavlik on ClearDefinition

Spit and Shoepolish

Well, I’ve been working more on the Win32 port of AbiCollab. It’s certainly more rewarding now that it actually basically works, and I’ve gotten it to the point where most of the asserts have been hammered out and the interface is usable, if not ideal. Only one crasher, and one UI blocker - more info later.

However, I’d like to show off some screen shots of the dialogs in their current state. These images are all from the latest SVN build of my own running on Windows 2000.

Accounts Dialog

Accounts Dialog - When you go to Collaboration, Accounts, you’ll see this dialog. You can see I’ve already added an account, and so the appropriate items are available here. Buttons/controls that make no sense given the context are disabled in this and all other dialogs, with one exception.

Add Account dialog

Add Account Dialog - Click the Add button in the Accounts dialog, and you’ll see this. I’ve figured out how to get the fonts fixed, though the appearance of the text boxes and their sizing is still weird. Combining the backend-drawn controls (in the Account Details region) with the rest of the dialog handled in the core has proven to be some of the trickiest problems - this is the only dialog that doesn’t have context-sensitive control enabling, though not for lack of trying. I can’t get the DlgProc for the overall dialog to even receive notifications about the contained controls from the backend, though once I do figure out how to get them in the AddAccount DlgProc, I already have the passthrough and context-sensitive logic implemented in the backend.

Join dialog - No Selection Join dialog - Document Selected Join dialog - Buddy Selected

Three states of the Join dialog - Just to prove it to those who don’t run Windows, here is the Join dialog. It’s available under Collaboration, Available Documents, and lists “Buddies” (right now only the TCP servers we’re connected to) and documents being shared by those buddies (here, “The cha cha slide.abw”). Since there are additional backends that support multiple buddies per connection (like Jabber/XMPP), that’s why the buddy management gadgetry is in here. It will all work, actually, just need a backend to use it. The only “hidden feature” of this dialog is that double-clicking a document on the list will toggle your joined status. Most people will probably just select a document and click join, then close the document window to leave, but this option is available too. (Partially so that I can more easily break things and fix them.)

Now, the one interface blocker:

 Add Account dialog - Bug on Windows XP

Windows XP and its Visual Styles come to smite my Radio Buttons. I’ve tried a variety of control/window styles when creating these (they are created with CreateWindowEx, not with a resource file), tried adding a manifest to the Abi core, AbiCollab, and both, and nothing seems to be helping. This is why those weird (Join) (Serve) labels were redundantly visible in the previous screenshot of this dialog - Windows XP displays STATIC labels just fine, so I’ve added those as a temporary workaround. If anyone has any pointers or information regarding this issue or what I could do to solve it, please comment - I have spent quite a bit of time unsuccessfully trying to squash this bug, and it saddens me that my stuff has to look so ugly on what is probably the primary platform, WIndows XP. (I think it has to do with the same reason the text entries on that dialog are ugly. And, FYI, I’d prefer not to just move the label out of the Radio Button control since that breaks some important accessibility bits, though I might do it for a release if I can’t figure it out by then.)

The other issue is the one crasher bug - you can’t disconnect from an account or delete an account. I’ve traced through that code, and it seems to be destroying the account fine and works until I choose “continue”, but the backtrace is all weird, and Marc (my mentor) suspects stack corruption. Again, any insight is beneficial, though I think this is probably going to be my own dragon to slay, since it’s a lot more specialized of a problem.

If you’d like to try it for yourself, get a nightly build from my web site (it’s in the Tools plugins, you also need to get the latest 2.5.x core from the nightly build) and give it a shot! Please file bugs if you find any.

Keep on hacking, ants!

Syndicated 2007-08-12 19:29:52 from code art life - Ryan Pavlik on ClearDefinition

AbiCollab on Windows WORKS!

You heard me right! After some struggling with the use of a message-only window to integrate the TCP asynchronous IO into the single-threaded Abi mainloop, as well as some bughunting in the cross-platform parts of the code, it works!

 AbiCollab on Win32 - The First Document

First message sent over AbiCollab on Win32: “Mr. Watson, come here. I want to see you.” I thought it was prudent from a historical standpoint.

AbiCollab on Win32 - The First Document

With the initial document sent over, I proceeded to test: with only intermittent ASSERTs, two-way editing of a document over AbiCollab on Win32 works! I also tested it across the real Internet, with Marc (instead of with Localhost), and it also works there!

Once I got it working, I went ahead and cleaned up some portions of the code and fixed some bugs - it is much easier to test things when you know how much is working. My schedule for the rest of the Summer of Code is as follows: Fix bugs until it feels “polished”, then, with any remaining time, work on the Gremlin to allow automated testing. The cooperative collision resolving will come later, when everything else is more stable.

For the daring or crazy, I have nightly builds which now include AbiCollab. To ensure that nobody thinks this is a real release (THIS IS NOT A REAL RELEASE!), I will only tell you that they are on my web site (Ryan Pavlik - Code Art Life on ClearDefinition), and that you should wait until Friday the 10th since they build late at night. (For the rest of you crazy enough to use a dev release but not crazy enough to use a nightly build, 2.5.2 will be coming down the Intertubes soon enough.) Have fun!

Syndicated 2007-08-10 00:10:30 from code art life - Ryan Pavlik on ClearDefinition

Off to San Jose!

I’m headed to MathFest 2007, the annual summer meeting of the Mathematics Association of America. I’ll be presenting some of my (non-AbiWord) research at one of the Pi Mu Epsilon student paper sessions, as well as attending others’ presentations and enjoying a talk by the one and only Donald Knuth. (Yes, I’m excited!)

If anyone has ideas of fun things to do in the general vicinity of San Jose State University - let me know. I’ll have my N800 with me and will check this post for comments. (Student-level, aka cheap, restaurant suggestions and local quirky attractions are especially appreciated.)

The downside: I’ll be silent on the code front until Monday. I’m currently wrestling with a run-time segfault, as well as a failed assert that seemed to magically appear.

Catch y’all later! Keep hacking, ants!

Syndicated 2007-08-01 06:13:47 from code art life - Ryan Pavlik on ClearDefinition

Somebody Else’s Project!

Yes, I’m writing about somebody else’s project (not Sum1’s project - just his student). This is mostly because I don’t have a screen shot for what I’ve done since my last update. (I have brought the Account and Add Account dialogs into feature parity with their Unix counterparts, which means a little bit of poking on the backend side, a “Join” dialog, and a Windows message-based synchronizer, and Windows collaborates!)

PhilM has been working hard on the MS Office OpenXML format support, and has built an importer for it. Always the advocate for feature parity, I’ve been watching the development and poking at the Windows makefiles for the plugin as I had moments to do so, with the goal of letting Phil release simultaneously on Linux and Windows at the conclusion of SoC. I had been stumped for a little while by a weird compiler error - I was in fact segfaulting G++, and I very nearly congratulated Phil on this accomplishment. Turns out, though the Makefiles for that plugin were consistent with themselves, not looking at them along side those for other projects had permitted me to overlook a vital detail: each include path should have been (but was not) prepended with -I. After figuring that out tonight, fixing it, then upgrading the LibGSF in my build environment (which I could have sworn I did before, but clearly had neglected to do), the OpenXML plugin built without a problem! Here’s a pretty screenshot of the second result on Google for “filetype:docx“, along with the first successful compiler message.

 Thanks, PhilM, for giving me something screenshot-worthy to blog about!  OpenXML import on Windows!

(PS. Phil - The third one on google (”THE_BRONX_PUERTO_RICAN_DAY_PARADE_2007″) has what appear to be formatting commands (”centertop”) as part of the text. May be a useful test document. Congratulations on getting accented characters to import, by the way - the rest of that doc looks nice! :D )

Summer of Code is so cool!

Syndicated 2007-07-27 04:40:24 from code art life - Ryan Pavlik on ClearDefinition

38 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!