Older blog entries for clarkbw (starting at number 36)

More thesis work

Did more thesis research today, I'm looking into doing a project on universal usabilty. I'm really interested in the possibilities of this research. Particularly the focus that Ben Shneiderman has taken in his work on Bridging the Digital Divide. Ben did a more recent paper on Promoting Universal Usability with Multi-Layer Interface Design [pdf].

The idea sums up to having slightly different interfaces based on the need of the user. Show an advanced (in the sense of this instance of the application) user more tools and options, while not confusing users who are new to the system with too many things at once.

This has some obvious implications that all the unix people scream at, which is the 1% scenario where you use an application and need to get to the advanced interface right away because you're a power user. This situation usually stems from users being on a system that they are not often using, and therefore the application could not know that their level of ability. Sure there are lots of other ways to get to this scenario, but those are all such a rare case that I think it will be easy enough to put in a command line argument or something that bypasses all extra functionality. (by the way, the 1% scenario means that this situation probably happens 1% or less of all users use of the application... therefore we don't worry too much about it)

Current uses of this type of system include simple things like accelerator keys for common commands. New users are not bothered by the accelerator keys, because they would really never encounter them, however advanced users can go from button clicking to all keyboard action and be much more productive.

Benefits of universal usability in terms of multi-layer interfaces are things like not having 3 toolbars for MS Word when all I want to do is write a document with formatting like bold, italic and maybe some positioning every now and then.

In short, I need to do a little more reading of a few more papers, send an abstract to my advisor and contact Ben for any other ideas and further direction.

Well I think I have significantly borked my gnome-blog install to the point where it's posting to the wrong blogs. That was a little Operatings Systems help for anyone who is working on this weeks assignment. ;-)

init_info: used to initialize any variables in the struct that you feel need to be initialized to certain values. Lets say you want to set everything to false at first, and as you scan you'll set values to true when you see them.

parse_command: this parses an individual command from the command line. Think of the parse function as parsing the entire (space delimited) command line into blocks of commands. You then need to parse those blocks to find out what they are, this is where you can send that parsing to the parse_command to register the values in your struct.

gnome-blog adv. addition

Still working out some bugs, but I've got a beta of the gnome-blog advanced addition. Here's the screenshot to check out the new goodness. I still need to get the file stream system from bonobo to work out properly and then I'll do the progress meter.

Planet Me

Played with rawdog for a while today and came up with a pretty decent aggregator. Also hacked up pybloxsom so that it's customized for Clarkson University students to use right away. I put what I thought were the most useful plugins and made the system realize the plugin directories automagically. I'm adding a quick cgi right now for adding new blog entries via the web. Package up the whole thing for distribution and I'm done.

Hopefully this will allow any one at school to untar this pybloxsom distribution and then start blogging right away!

Oh so cold...

I hope no one else can beat this temp :)

UI-Review

Doing a little more ui-review with Jody today on the control-center and Gnumeric (eek!)

Luis I'm pretty sure that David had done an OpenApplet, which had similar ideas to what you're looking for. I asked him about it a month ago and he had said that he was working with Marco on integrating epiphany the address bar, but that it was difficult and going slowly.
UI-Review Day

Today is the first ui-review session day. If you've got a 1/2 hour to spare we could use some help doing ui-reviews. Even if all you can do is take screenshots and upload them to bugzilla we'd love to have that. Join us at irc.gnome.org on the #ui-review channel.

Translation Strings

Worked on some cleanups for translatable strings in gnome-blog today. Finished the protocols directory and I'm now moving on to the rest of the files. It's going fast, I'm really just removing the markup text from any error messages, as per instruction of the L10N folks. I really appreciate their quick and easy guidelines for developers, it wasn't that hard to look through and seems well thought out.

Blog categories in gnome-blog

Finished up the categories system for gnome-blog, this has really been a bug for way too long. Honestly, I've never really needed to post to different categories before so it wasn't really a concern of mine (and no one yelled too loudly). However now that I need to blog to different categories often I can see how bad it is when you're trying to quickly post to different sections of your blog and you'd have to open the preferences each time. Sheesh. Well right now I've only upgraded the preferences section, I haven't figured out a good place to put the categories drop-down list in the UI. Here are the obligitory screenshots: first time setup of blog and subsequent opening of preferences. On first setup the button says 'Lookup Blog' and then the categories are stored in a GConf key for quick access later. Everytime you open up the preferences after that your categories stay in the drop-down list, but you have the option to refresh the list from your blog. Sounds pretty simple? Yes, but I had a hell of a time finding out how to use the gnome-python gconf set_list and get_list methods as they were no examples that I could find anywhere.

gnome-python gconf lists

And so, an example for everyone else to use in case they need:

client = gconf.client_get_default()

fav_things = ["bright copper kettles","warm woolen mittens","brown paper packages tied up with string"]

client.set_list(gconf_key, gconf.VALUE_STRING, fav_things)

fav_things = client.get_list(gconf_key,gconf.VALUE_STRING)

The 1st line is the usual setup. The 2nd line are a few of my favorite things... ha ha ha. The 3rd line will set the gconf_key value to be a list of strings. In the GConf key you'll see the comma separated list of strings. Then the 4th line will return the list of strings just like python expects (isn't pygtk great!). I'm supposing (but haven't really tried) that using the gconf.VALUE_INT will work the same way in storing a list of integers.

It looks like PAM has enrolled herself into the Song Hyun-Jung Academy. I can't wait to hear the results of whether she gets in or not.

Go PAM!

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