Recent blog entries for RyanPavlik

Almost done! And, a few inbox zero…

Wow, how the summer flies!  This upcoming Monday marks the official “Pencils Down” for the 2008 Google Summer of Code!

It’s been a pretty low-screenshot summer, which is interesting since I’m doing interface things.  The truth of it is, though, that it’s what’s hooked up to the interface that is taking the real time :)  Nevertheless, I have recently made some really nice (and brand new, hence screenshot-worthy) progress.

Style Tool

Here’s what used to be the Stylist, now the Style Tool.  It will be the hub of all style interactions.  At least, that is, if I can get it to be taller and narrower by default, and stop hiding from me.  (It’s almost like an inspector - always on top, possibly not focused.  What’s the best combo of settings to get that in GTK?)

Style Tool

You’ll notice that it’s just showing a nice subset of styles (common ones and the ones you are using).  If you’re into folding tree-views and seeing all the styles used by, say, the Table of Contents feature, or perhaps are really just looking for a “Heart List”, just check that Show all styles box temporarily.

I might be moving the “Redefine”, “Edit” and “Apply” buttons off of that common row, since they refer to the selected style in the list, while “New” (create a new style based on the formatting at your caret - redefine works the same way) and “Close” don’t.  Ideas on how best to do this within the Glade tool are eagerly accepted.

Edit Style

Since we have the ability to grab the formatting at the caret (insertion pointer, erroneously called the “cursor” - the things you learn hanging with word processing hackers :D ) to create or modify a style, we can specialize the manual edit style dialog to those who are looking for fine tuning of a style.  Behold, the new dialog, in a slightly buggy, read-only manner, but lacking only a few little hookups…
Edit Style

Spiffy, huh?  Now, how do I get rid of that Help button, visually associate the Add and Remove buttons better with the list of properties (perhaps with a label “Properties”), and sort a GtkListStore? We’ll see if this lazyweb thing works for me as well as for others :-P

Inbox Zero

In the never-ending pursuit of less clutter and more productivity, I recently did the inbox zero thing, which is less complicated than it would seem.  I think I’ve gotten everything handled, but if your email to me has gone without reply and it deserves one, send again please!  Thanks!  (Furthermore, if anyone knows how to hide folders in Thunderbird, please send that too :D  My archived emails are stuck down in Local Folders scrolled off by subfolders I never use… )

Syndicated 2008-08-15 05:00:19 from code art life - Ryan Pavlik on ClearDefinition

setAllAttributes (newProps);

or, How to Know When You Still Have Learning to Do

Yes, that is a line I recently patched out of my own code.  I was wondering why my simplifyProperties wasn’t working right, so I tried it then saved it to disk - and lo and behold, all the style properties had become XML attributes.  In learning the AbiWord piecetable, I’ve had to struggle a bit with the concept of attrprops - attributes and properties.  Specifically, I tend to mix them up - attributes are things like “name”, “label,” and “props”, while properties are things like “font-size: 12″ which can also be stored as the value of the aforementioned attribute.  So now that you know that attributes and properties are different, I’m sure you can spot the bug in my post title :)

My GSoC project is moving along now!  Just have to remember the difference between attributes and properties…

Syndicated 2008-07-17 16:20:37 from code art life - Ryan Pavlik on ClearDefinition

Wow, the piecetable is crazy!

Just a quick update on my progress in the Summer of Code.  One general observation: the piecetable is a highly-engineered, fairly complex chunk of code!  I need a bit more “mentoring” than I anticipated when working with the piecetable, so I’ve decided to work on a few fronts: when I get stuck on one, I switch to another until someone shows up in IRC and can help (or, alternatively, until time helps me figure it out on my own).

First of all, I have the Stylist enhancements.  I’ve added the “Add” button, which is succeeding in adding a hard-coded style.  Right now, I’m working to make it add from the current selection.  It looks like right now we can’t “rename” a style, which means I either prompt the user for a name (not what I’d prefer), generate a useful one automatically (possibly tough and/or insufficient) or implement some sort of rename, possibly just with the style label.  (See next :D )  I will also revamp the display here, borrowing liberally from the GTK toolbar style list which shows only a nice subset of styles.

The addition of Labels to styles (splitting internal identifier from user-visible identifier) was the first task I tackled, and in retrospect, possibly a bad idea since it required direct PT work.  I have all built-in styles adding a label by default, and I’ve gotten it to save.  I still have to add some helper functions to pd_Style to handle labels, localize them, etc, as well as figure out how to change the UI’s.  (It looks like I’ll probably need to have a map of Labels to Names added to some document-wide structure, presumably right next to the map of Names to pd_Style objects.)

Finally, we have the handling of the manual style editing system.  I’ve started work on this by implementing “simplifyProperties,” which removes properties from a style if they are identical in the based-on style (that is, if they can be inherited).  This will allow my edit dialog to show a useful list of applied properties, rather than a CSS-like string of every possible property.  This is what I’m working on at this precise moment - trying to figure out how I somehow end up with “this” being 0×0 when I have a function member call another function member.

Till next time, keep on marching, ants!

Syndicated 2008-07-01 16:23:53 from code art life - Ryan Pavlik on ClearDefinition

Summer of Code: Interview yourself!

As a part of my Summer of Code project, I’m working on doing a user interface redesign!  To confirm the concepts I developed in my proposal, I’m conducting interviews, and decided to use the Internet as a tool to help me here!  Though I will be also doing in-person interviews, you’re welcome to download and complete the interview and email it in to me!  All word-processing and text-processing (so as to not exclude more layout-oriented apps like Pages and perhaps KWord) users are welcome to participate: the interview questions are in rtf format.

Please download the form here: General Interview Questions - instructions are included.  Just type your answers right into the document!  I’d like your answers by June 6 (Friday) so that I can keep moving on the project.  If you have a blog that’s more syndicated than mine, please feel free to pass on the invitation - the more data I have, the better I’ll be able to create an interface that’s efficient for a variety of users.

Syndicated 2008-06-02 18:18:54 from code art life - Ryan Pavlik on ClearDefinition

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: 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

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