marnanel: (Default)
I think I'd like a new challenge. If anyone out there could make good use of a creative C/GTK/C++/Qt/object Perl/Python hacker based in Philadelphia with the ability to work in the US and EU, they can find my resume/CV at
marnanel: (Default)
Anyone fancy beta-testing imgur upload for Maemo? Let me know how you get on.






Instructions are included.

Update: Now in extras-testing.


Jan. 29th, 2011 10:53 pm
marnanel: (Default)
I spent perhaps too much of today coding. I didn't really mean to spend quite that long on it, though it was a lot of fun. Will Thompson's help fixing DBus problems was invaluable. Version 0.50 of imgur integration will be coming to a Maemo repository near you soon:

Later, since it's my birthday tomorrow, we went out for a curry. It was pretty good, but rather mild. I was amused that the people at the next table to us were clearly English as well. Then we went to the bookshop, came home, and had some coffee. A pretty good day, all told.
marnanel: (Default)
This morning I finally got around to testing the rewritten MeeGo version of robotfindskitten on the N900. It works passably well:


You see that the text is missing.


There are a few other things wrong (we need to use Maemo banners, not dialogue boxes; the vibration at the end needs reimplementing) but I think it will be good to go in a week or so of snatched moments here and there. If you'd like to test, let me know.

(I'm thinking of making the title page dark grey, and losing the text across the top, to look more Maemo-like than MeeGo-like.)
marnanel: (Default)
Every contact database program I know has a "nickname" field. Today I was thinking that I use the same values in that field for EXIF tags, and what I'd like to see is a plugin (or better, to see it coming out of the box) with a button on each person's contact record. The button would query Tracker, and then launch gthumb or the local equivalent to show images of that person. The button would not display if there were no such images.

Something like this (on Maemo, though the principle is the same for GNOME):


(It's interesting to consider whether the plugin should assemble the list and then pass it to gthumb, or whether gthumb should be extended so that it can be passed a switch to display all pictures known to Tracker with a given tag.)

Of course, Tracker also tracks things other than images, so you could also have buttons for wordprocessor documents, emails, and so on. I could do this (in a while, when I have some time); would any of you want it?
marnanel: (Default)
I have had this sitting half-written in my projects directory for far too long, so I present: Imgur Integration version 0.20. is a website which allows you to host arbitrary images without creating an account. This program includes a DBus service which allows posting of images to, a command-line interface to the DBus service, and an Eye of Gnome plugin to do the same. It is not an official client, but I have talked to the imgur admins and they are happy about its existence.

So when you open a picture, you have a menu option that uploads it and opens a browser at the right page, with no configuration, thus:


You have to turn on the plugin in eog after installation (Edit > Preferences > Plugins > Post to If I package this, I may make it turn on automatically, since it's a little hard to find this.

As originally conceived, it would have also allowed you to use libsocialweb to tweet/dent the resulting URL. I took this out for now because libsocialweb also has API to post pictures, and I wasn't sure how best to do it. There is still a rather useless dependency on libsocialweb. Sorry about that.

eog seems not to look in /usr/local/share/eog/plugins, only /usr/share/eog/plugins. You may therefore have to set --prefix appropriately, or simply copy the files from /usr/local to /usr by hand after installation. Sorry about that, too.

There was a partially-written libsharing plugin for Maemo which used the imgur DBus service, but it's not finished. It could be finished, if people would like it.

Other thoughts on how the program could develop are in the README. You can download the program or look at the source control. This is quite a rough draft. Patches and suggestions are, as always, welcome.
marnanel: (Default)
I've been looking at QML today. Here's a little Christmas present for you all: an adventure game in QML.

This is probably really ugly QML because I'm still learning it. It uses the Gnusto just-in-time compiler as the back end.

You can download this and play with it here (please! play with it and extend it as you see fit): qml-gnusto-0.01.tar.bz2

(And if you like adventure games, you might also like today's poem.)
marnanel: (Default)
Earlier this year, arising out of a conversation at GUADEC, I wrote a nautilus plugin to upload images to (This is useful because imgur doesn't require an account: you can just install, hit "upload", and off you go.)

Here is a copy of the same thing as a MeeGo RPM, suitable for use on the Lenovo machines distributed at the MeeGo conference. Once this is installed, you can select a .jpg image in the file browser, press the menu button, and choose "Post to imgur" from the resulting menu. Equivalently, you can choose the same option from the Edit menu. The image will be uploaded, and the web browser will pop up at the new URL.  Then you can send it to your friends, embed it in a blog post, or whatever you like.

The source is here.

Things I would like to do with this:
  • Add a similar menu option to the image viewer (which is currently Eye of GNOME).   I haven't looked into how easy it is to extend eog.
  • Add an icon to the launcher which brought up a file chooser.
  • Separate out the uploading part to a DBus service.
  • Do this as a libsharing plugin for Maemo.  I would do this, but I have broken my scratchbox and have no tuits to fix it.
  • Have some app which remembered the images you'd uploaded and helped you find them again.  Especially, if you try to upload the same image twice, it should just take you to the previous copy.
Let me know if you use this, what feedback you have, and whether any of the above would be useful to you.
marnanel: (Default)
Further to my previous post:

Here's a live AJAX-based version you can play with. It's not very fast unless the word is cached, and it only takes at most a word of context (unlike the real thing, where the context is everything you've ever typed), but it should serve to demonstrate the principle.

Now to release the code, and to look into patching existing VKB systems.
marnanel: (Default)
Funnily enough, someone was asking about virtual keyboards on gtk-list this morning.

Last week at the MeeGo Conference several people were talking about virtual keyboards, and the idea came up of doing predictive text, either by making more likely letters physically larger, or merely by increasing their sensitivity.

When I came home, I wrote a JavaScript mock-up based on a third-order Markov chain. It's quite fun to play with, especially on a touchscreen.

When I showed this to a few people at Collabora and elsewhere, Rob McQueen suggested avoiding reinventing the wheel by using the rather wonderful Dasher system as a back end. So, after a longish hacking session, here it is:

State of the keyboard after typing "FLO".

Click here to see a video of the keyboard in action

The front end shown here is just a custom GTK widget I threw together; in real life it would use an existing input method. I've exaggerated the differences between letter sizes for demonstration. (As I mentioned above, the physical letter sizes might not change at all.)

There is a wiki page about all this. Let me know if you'd be interested in helping work on this; I'll be releasing the code shortly, and adding a link on the wiki to it. (Odd thought: I wonder how useful another demonstration piece of JavaScript would be, pulling data from Dasher running as a CGI. Let me know.)

There is also an existing roughly similar system for Android, and, I hear, for the iPhone.

Update: An AJAX version you can play with.
marnanel: (Default)
I'm hereby releasing a public beta of robotfindskitten version 2.0 for MeeGo. I've been sitting on it for far too long. This is a complete rewrite in Qt. It's only designed for the netbook; I haven't tested on the handset. It should work fine on the Lenovo machines distributed at the MeeGo conference.

Links:If you lot like this, it will go into the Garage.  There are some issues I still need to consider; let me know what you think:
  • Is it a good reimplementation of Maemo rfk?  Is it a good implementation of rfk in its own right?
  • Is it playable?
  • Are dialogue boxes a reasonable implementation of the popup messages?  On Maemo I used banners (thus), which were perhaps less intrusive.
  • For those of you who know Qt and C++, I would appreciate some code review.
  • On the handset it's still going to vibrate when robotfindskitten.  Do you think it should bleep or something (or miaow) on the netbook?
I think Planet GNOME will be getting this as well because my feed setup doesn't have tags specific enough; I apologise in advance.
marnanel: (Default)
The other day, over porter somewhere in Dublin, we were discussing people who run curses-based applications in the X terminal under Maemo, rather than using the GUI. (For example, some people run mutt rather than modest, irssi rather than xchat, and so on.) Sometimes people do this because they want or need to run the client on a remote machine, and they don't want to bother with X forwarding. Sometimes they just prefer the character interface.

The idea was then floated of having an escape sequence which caused the client to pop up a notification, so that even a curses-based application running on a remote server could alert you that you had new mail, or that someone had just said your name in channel.

So on the plane home, I hacked up an example implementation:

You can find the patches here:Further thoughts:
  • it still needs osso-xterm integration, but that should be easy
  • patches to mutt, irssi, and so on to produce these sequences would be useful
  • we need to work out something to do with terminfo to report that this sequence may be generated
  • it uses OSC code 55, which is otherwise unused in gnome-terminal, but I don't know whether anyone else uses it for anything.  (The relevant spec, ECMA-48, says that OSC codes are user-defined, but I'd still rather not tread on anyone's toes.)
  • it only allows the sequence to be terminated by BEL; this is traditional, but ECMA-48 actually requires ST instead.  This will be trivial to allow as well.
  • I'm not at all sure about min/max versions of libnotify
(Of course, there are also other ways to get the same effect.  But I think this is a good general solution.)

(Edit: naltrexone suggests appropriate Flann O'Brien parody.)

Your thoughts (and patches) are welcome, as always.
marnanel: (Default)
  1. An app to look up zipcodes.
  2. A sort of Python incubator: it would listen on a given port and there would be a program on the desktop that would upload Python scripts to it, and it would run them straight away. This is for use during development if you don't want to use scratchbox. (I may actually do this.)
  3. An app which knew all the feed lines and audience responses in Rocky Horror, so you could take it into showings with you and know what to call out, if you hadn't memorised them all.
marnanel: (Default)
I have been porting Maemo robotfindskitten to Qt.  It's been quite impressively easy.  You can find the repo here and the annotated docs here.

In Maemo robotfindskitten, you can control robot either by using the hardware keys, or by tapping on the screen.  However, there are three things you can do with the hardware keys you can't do with the screen:
  • move in a random direction (R)
  • move towards something interesting (demo mode, D)
  • run (Shift)
In addition, there are three elements of the user interface other than hardware keys that are currently unused:
  • the centre of the screen
  • the two positions of the rocker switch
I think the centre of the screen should continue to do nothing, but I am considering pressing the rocker switch one way to mean "move towards something interesting", and tapping the screen while the rocker switch is pressed the other way to mean "run".  What do you think?

Also, in demo mode, dialogue boxes currently self-cancel after a few seconds.  Maybe this should be the rule in ordinary mode as well.  What do you think?


marnanel: (Default)

October 2017

15 161718192021


RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Oct. 19th, 2017 09:33 pm
Powered by Dreamwidth Studios