marnanel: (Default)

They have a poster on the wall at Cambridge railway station which says: "Please be courteous to our staff".

The flight left at three-fifteen, which meant I could get a decent amount of sleep and still have a chance to go to LSM.  At LSM the bishop of Port Moresby told us about life in his diocese.  Afterwards I told the priest that I had been made very welcome at his church, and he gave a little happy jump and the thumbs-up gesture.  I also went to the market to try to find an England shirt for Alex, but I think the stall must have gone away, or perhaps doesn't open on Sundays.

We took a train to Stansted and a plane to Schiphol; I sat next to a very polite Dutch child who kept offering me chewing gum.  The flight takes only forty minutes.  The security guard at Stansted demanded to know what the white powder was all over my luggage.  We went out to eat at a cafe in the marketplace, but I left early and slept deeply.

I have had Stuart Davis's beautiful song Windmills and Wheatfields stuck in my head all the while. (I would quote it here, but people would probably complain.)
marnanel: (Default)

This was a game of scratch cricket on Parker's Piece I watched from my hotel room window. The building in the foreground is Hobb's Pavilion.

Rupert Brooke wrote:

For Cambridge people rarely smile,
Being urban, squat, and packed with guile.

Gentle reader, am I urban, squat, and packed with guile?  I suppose I must be.  One thing I have learned anew during the past week is that I am indeed Cambridge people, and will probably always be so.  I feel more at home here than anywhere on earth, even the town in which I grew up.  I am the starfish and this is the sea, and I need to come back more regularly for fear of drying up.

On Friday night I went home by train to my parents' house, where we ate pie and drank beer.  On Saturday morning we went again to see my grandfather.  He seemed somehow older, far more than four days older: his eyes were tired and his speech lacked hope.  He talked to me about family history, and poetry, and the war.  When the others had left he asked me whether I was, in fact, happily married.  There was none of the solemn joking and laughter which usually fills his thoughts; he seems to be preparing to leave.  I told him I would try to be back in the autumn.  "If I'm spared," he said.

Later we went with my grandmother to the Crown in Shillington, where she bought us a very good lunch, and we ate it sitting in the sunshine while we talked.  The ringers in the belltower next to the pub were ringing call changes for a wedding throughout the meal: if you had decided to arrange a perfect meal for me as a treat, you would not have gone far wrong with this one.  I do worry about my grandmother, and how she will cope when her husband is gone.  I'm not sure how I can help.

My mother had kindly washed my clothes when I came back to their house.  I packed them up and returned to Cambridge, and slept for a while, then walked to Churchill where Collabora were throwing a party, with much food and good beer.  I left early and came back to the hotel to get ready to fly to Amsterdam tomorrow.  It seems so strange to be leaving.
marnanel: (Default)

This is a bridge at Sidney, my college. The blue porcupine is one of the supporters on the college's coat of arms; there is or was a drinking society called the Porcupines, but they were apparently banned when the members climbed up on the Master's roof while he was entertaining guests, and vomited down the windows. So the story goes, anyway.

Thursday was spent working on xzibit, and building unit tests. They were very much needed, but didn't directly contribute to getting the system into a demonstrable state. I need to put in some hours on that over the weekend, as well as on the book.

On Thursday night I went to church. It was the feast of St Mary Magdalene, and the sermon was about how Mary didn't recognise Jesus out of context until he said her name. As I was on my way out of the building, someone said, "Marnanel". It was Carys, from my LJ and Facebook friends lists, and I hadn't recognised her out of context.  The coincidence amused me greatly.

Afterwards, I walked to the Carlton to see some chiarkers, drink a good pint of mild, and eat fish and chips. It was a good evening.

Friday was spent on team-building exercises at the Møller Centre, at Churchill.  Afterwards I went home to see my parents and get ready for seeing my grandfather one more time on Saturday morning, which I shall write about in Saturday's post.

It's been a wonderful, productive, and memorable week.  I have many people to thank, including my parents, and Fin and Alex, but I particularly want to say thank you to Collabora for making it possible.
marnanel: (Default)
Corpus Christi playroom
This building is rather near where I work. In the real world, which Cambridge occasionally approximates, I assume it means a theatre.  However, I sometimes imagine that behind that door is a ballpit and bouncy castle kept ready for the relaxation of the students of Corpus after a hard day at their books.

Yesterday, as we were walking back from lunch on Christ's Pieces, the bells at St Edward's started ringing.  It turned out to be a quarter peal of St Clements College Bob Major, which I enjoyed for the next three-quarters of an hour sitting at my desk.  (It was a successful attempt; the striking was a bit off.)  I'm a little regretful that this visit is not going to involve ringing; after work, I heard bells and went to investigate, but they stopped before I found the tower, and did not continue.

Interesting fact about St Edward's: it is, as far as I know, the only Anglican church in Cambridge not part of the diocese of Ely; it reports only to the Crown.  This is known as a "royal peculiar".  [Update: Apart from the college chapels; thanks for reminding me to clarify this, emperor]

Last night was the only night this week I hadn't planned to do anything in particular, and though it's been very good to see people, the break was welcome.  I had dinner at Wagamama's with the Collaborans, though, which included a pint of ginger beer and three scoops of ice-cream.

But I spent most of the evening hacking on work stuff, which might explain why I dreamed about X.  I realised that part of my system isn't working because I'd made the elementary mistake of confusing keycodes with keysyms, so I worked on rectifying that.  I also have some surprisingly dull work to do on the forthcoming book, which involves laboriously applying paragraph styles to several chapters.  Many pages of this still remain to be done sometime today, unfortunately.

I am hoping to give a lightning talk on my work on xzibit at GUADEC.  Today is the last full day I can work on the system (at least, on work time) before the conference, so I'd better use it well.  Tomorrow is a training day.

Tonight, I'm hoping to see some of you in the Carlton.
marnanel: (Default)

This is the churchyard of Little St Mary's, so called because there's another church dedicated to the Blessed Virgin, called Great St Mary's. There was a tabby cat standing beside this tombstone, but he ran away when I took my camera out. LSM is a very friendly high church which has mass every day, but I didn't drop in today because it's during work hours on Wednesdays.

Last night I went to see ghoti, Jon, Bene't and Judith (with Ian and Clare also making welcome appearances) at Relativity. It was so good to see them all again! We had some rather delicious stir-fry, and summer pudding, which isn't something I've had for a very long time. After dinner I played my first game of RoboRally, which Bene't won.

xzibit is progressing rather excitingly, and yesterday I played minesweeper (Simon's version) on an X display other than the one it was actually connected to. Next I have to learn a great deal more than I know already about MPX.

Tonight is the only night of the week when I'm not due to go and see someone. An old friend of mine has turned up living in one of the villages, and I might go out there to see them, but I might also just have a spare peaceful evening when I'm not going anywhere— especially because the second draft of one of my chapters is due tomorrow.
marnanel: (Default)
A. Here's a basic version of xzibit being used to share a window from one desktop to another.

Untitled from Thomas Thurman on Vimeo.

The reason it's slow is because I'm using a rather noddy test server written in Python.  Next is to replace that server with one that is a) fast and b) actually transmits updates to the window properly.

B. What I have on the project so far:

1. xzibit-bus-server, a simple bus based on Unix domain sockets
.  This will be replaced by Telepathy tubes when everything else is stable, but for now it lets me test the system easily using a single session.  The bus takes messages of the form <length><message>, where <length> is four little-endian bytes, and relays them to everyone listening on the bus except the sender.  The first byte of <message> is an opcode; the only defined opcode is 1, which should be followed by an IPv4 address (always in practice) and a two-byte port number.  Here is a test script for the bus.

2. A patch to Mutter/Metacity's theming code to draw the envelope buttons on the titlebar.  The Mutter plugin system doesn't currently allow for adding extra buttons, so this can't be done in the plugin.  I may work on extending it later so that it can.  The envelopes respond to a window's _XZIBIT_SHARE property:
  • 0 or absent means the window is shareable, and gets a black envelope;
  • 1 means being shared and gets a red envelope;
  • 2 means being received from a remote contact and gets a cyan envelope;
  • 3 means unshareable and gets no envelope.
3. xzibit-share, a program that gets spawned when the envelope is clicked.  This could be done in the WM, but I imagine it will become complicated enough that a separate program becomes easier to maintain.  Its job is to change the _XZIBIT_SHARE property for a window.  (This may be a problem under SELinux, which doesn't allow clients to modify one another's window properties, so we may need to replace it with a message sent to the root window.)  It also currently puts up the "choose a contact" dialogue when you turn sharing on for a window, though the names are all fake; the name chosen is set as the _XZIBIT_CONTACT property on the window.  This is currently a Perl script, but obviously would be rather faster in C.

4. state-toggle, a simple program to change its own _XZIBIT_SHARE property, used for testing the theming code before I got the previous script working.

5. xzibit-plugin, a Mutter plugin that detects changes to _XZIBIT_SHARE.  If a window goes shareable, it takes care of sharing it by spawning the server and sending out a notification on the bus.  It also monitors the bus for notifications and spawns the client as necessary.

6. xzibit-rfb-client, a thin wrapper around gtk-vnc (basically the same as vinagre without the UI).  This is spawned by xzibit-plugin on the receiving side.  Note that this can't be done directly by the WM process because WMs creating their own windows is a bad thing.

7. noddy-rfb-server, an RFB server written in Python for testing, which is currently what is spawned on the server side when a window is shared.  It only sends static content.  It will either send you a picture of Xzibit, or take a screenshot of a given window and send that.  This is how the demo above works.

C. What's next.

Next we have to replace noddy-rfb-server.  There are two considerations for its replacement:
  1. Whether we should use vino, and how much.  Vino as it stands is unsuitable because it only works on a screen as a whole, but perhaps we can use part of its code.  On the other hand, RFB servers are simple to write, so we could start entirely homebrew and add in parts of vino for simplicity and efficiency later.  On the gripping hand, we don't really want to have to maintain our own RFB server.
  2. Whether it should be in-process.  If it's in the WM, it can use the images of each window that the compositor already has.  But again, I think this is rather beyond the current power of the plugin mechanism, so it'll require another patch.  If it's separate, the WM stays more lightweight, and doesn't get slowed down by encoding RFB, but then again there's an extra process kicking around for each window.  (But again, we could have one master RFB-server process that we told to listen to each window.)
Your thoughts on these questions are welcomed.

D. Multiplexing.

We have two or three choices in the end:
  1. Have an RFB connection per window, and a custom control connection.  This is what we're doing now.
  2. Have a single RFB connection, and use an extension to multiplex all the windows across it.
  3. Have a single RFB connection sending a conventional RFB image with all the windows composited on it, and use an extension to say which part is which.
The custom control connection in the first option becomes part of the extension in the others.  We can quite easily switch between implementations and see which is the most efficient.

E. Other things we haven't considered.

Requests to display windows aren't the only thing we'll need to send over the control connection.  We also need to send information about transiency, for example, and to deal with resizing somehow.
marnanel: (Default)
Just a taste of the work I'm currently doing. I will post screencasts tomorrow or Friday.

Note the envelope button for sharing the window. When you share a window with someone, it goes (it will go) red. Only part of this is implemented, but I'm hoping for it to be demonstrable by the end of the week.


marnanel: (Default)

October 2017

15 161718192021


RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Oct. 22nd, 2017 10:44 pm
Powered by Dreamwidth Studios