Thursday, February 04, 2010

vertical labels in XUL (using XBL and SVG)

I haven't posted in a while. Sorry about that. Eventually I'll post a description of what's gone down in the meantime, what with finishing the degree in Dublin and moving back to the U.S. of A., but for right now, I'd like to post about something else: about putting vertical labels into XULRunner applications.

I searched for a while trying to find an easy way to do this, and the closest I came was a very general-purpose SVG shape solution, which I thought was far to unwieldy for my usage (you can check that out here). My solution is much simpler, using just a single binding with an svg:text attribute in it and not much else.

The source files are as follows:
  • vlabel.xml: The XBL binding for the vertical labels

  • vlabel.xul: A simple XUL file which shows the usage of the vertical labels (if you're in Firefox 3.5 or better, you should be able to view it just by clicking on this link) EDIT: Apparently, this might not work if you're running Linux? I don't know why, sorry.

  • vlabel.css: The CSS file which attaches the binding to the XUL element
And that's all! I hope it is useful to some other XUL developer out there.

Tuesday, April 28, 2009

spring awakening

I've been rather negligent about this blog lately. A lot of things have happened since Halloween.


Such as being a zombie.


The main consumer of my time since I last posted has, fairly obviously, been school; that is the reason for my presence here, in any case. So, in no particular order, here are some of the things I have accomplished during my studies here in Dublin:

  • I wrote a distributed application in Java for booking train journeys across Ireland.

  • I learned about various forms of cryptography, network authentication, and key exchange (like Kerberos and Diffie-Hellman)

  • I studied, memorized, and used concurrent programming techniques such as two-phase locking and two-phase commit.

  • I listened to lots of lectures about the data link, transport, and network layers of the OSI stack.

  • I wrote part of a Facebook application for rating events.

  • I won a bottle of cheap champagne for suggesting that Intel improve the profiles in their wireless card management software.

  • I gave a business plan presentation about putting advertisements on cheap umbrellas.

  • I led a team of eleven to complete a framework for administration of a managed motorway system.

  • I drank a lot of Guinness (this one is very important to the learning).

  • I wrote distributed applications using the Sieve of Eratosthenes and Conway's Game of Life.

  • I helped modify a discrete event-based network simulator to allow for mobile network nodes, and may even get a publication out of the resulting paper.

  • I discussed all the current forms of intellectual property protection.

  • I watched presentations on network file systems, and on the difference between thread-based and event-based concurrent programming.

  • I learned how to use thread pools and event channels.

  • I heard talks about reindeer herders in Lapland and about transmitting data to Mars orbiters.

  • I worked with all sorts of XML-based technologies, like XSLT and DTD and RDF and OWL.

  • I started using virtual machines.

  • I wrote a little bit of Perl.

  • I had to know and describe the difference between .Net Remoting and Java RMI in terms of their use of proxy objects.

  • I studied and wrote part of a paper on new network management technologies such as WS-Management, which uses composable web services to manage network elements.

  • I learned a language for use in proving the validity of concurrent algorithms.

  • I read papers about third-generation peer-to-peer technologies.

  • I gave a part of a presentation about service-oriented architecture.

  • I did, well...a bunch of other stuff that one might do during a one-year masters' course in computer science.



Of course, I had some fun during my time here as well, especially since it's so close to Europe. For instance, I went to Italy and ate an entire octopus...


The tentacles were tricky.


...and played on the beach.


No cliffs in Italy!


I also read two books, and I went to Cork in the south...


They have cliffs there, though.


...and Connemara out in the west...


Like cliffs but landlocked.


...and even to Belgium.


Ah, Belgium; where 13 years makes a beer more tasty.


So I've been out and about at least a little bit. I did some work, too; our Italian clients have been (mostly) successfully updated to a new version.

Now it's summer for me (exams finished up a few weeks ago), and it's time to start working seriously on my thesis. I picked a topic on something called knowledge-based networking, which involves using some of the semantic technologies we learned before to allow for more expressive subscriptions in the middleware we're using for content-based networking and message delivery. I'm adding support for temporal and causal reasoning, which also involves adding a database to each message broker. That's probably gibberish to most people, but the full description is far more esoteric, so I'll leave it at that.

Hopefully my next post won't be so many months in the making...

Wednesday, October 29, 2008

distributing posts

I've been very bad about keeping people informed on what I'm up to, so here's a brief update for you all before I dive back into the mountain of work I need to do for school.

Let's start with some general information about Dublin.

Also, here's a picture of the Liffey.

I'm still enjoying my place, and my real flatmate came back (so far so good on that score, too). Once you get going, it's really not that much different than my life was in the USA, just a bit more local since I don't have a car or anything. The trash goes out on Tuesdays, I applied for the Tesco Clubcard the other day, stamps cost 82c to send things to the USA, Guinness costs EU 3.90/pint at Dec Gallagher's (just down the street) but can be as much as EU 5 around Temple Bar, I still have no idea where to pick up a pencil sharpener...these are the concerns I'm dealing with here. It's a bit odd sometimes to realize that I'm many thousands of miles away from where I was living just a few months ago.

As far as school goes, it's definitely picking up in terms of coursework. Starting from this coming Friday and running through November 14, we have the following things due, in order of impending deadlines: a group research proposal for data communications (my group is going to do something with a sensor network simulator), a general security-related suggestion for Intel (to be fleshed out later), a review of a research paper, an initial stab at a Facebook application (we're doing a way to rate events), a confirmed topic and supervisor for our thesis project (I'm meeting about mine on Friday), and a prototype of a socket-based system that allows booking and cancellation of train tickets across multiple stops and multiple companies (which has to scale up to millions of users and dozens of companies). Anyway, there's a lot to be done.

Luckily, the others in the course are generally reliable, intelligent, and easy to get along with. We've already started a sort of course tradition of hitting the Pav (the Pavilion Bar, the student bar on campus) immediately after class on Thursdays (no class on Friday) to complain about our course load, discuss thesis and project topics, and throw back a collectively vast quantity of cheap, generally horrible beer. That usually turns into a more serious night out and a hangover on Friday, but that's why we wait until Thursday to do it.

The classes themselves aren't too bad, either. In software engineering, we've been talking lately about some of the problems with designing concurrent systems, specifically those that arise from attempting to access shared data and how to avoid things like deadlocks and inconsistency within the system. Network security has been focused on cryptography the last few days, with lectures about encryption algorithms and authentication schemes. Network applications has been focused on the implications of using social networks as a development platform (ala Facebook), and network management has been about various management protocols such as SNMP. Even our formal methods course is interesting (at least to me, with my logic background). I'm sure I'll be posting more about that later, especially once I get into my actual thesis project (which will probably be about inserting causal and temporal reasoning into a knowledge-based event broker network).

In other recent news, I had a very lovely visit from a very lovely visitor a couple weeks ago and went out to Galway for a few days, even down the Cliffs of Moher (which are pretty impressive, as evinced below).

See, I'm so impressed I can't even take my eyes off them!

If you, dear reader, ever do get a chance to go to Galway, I have some things to recommend:
  • First off, we stayed at the Adare Guesthouse (sorry, no website, so no link), which was conveniently close to the city center, clean and comfortable, had a good breakfast (especially the salmon stuff), but was maybe a bit pricey. Still, a fine place to stay, especially on the short notice we gave them.

  • There are a number of really cool pubs in the center of Galway city, including the likes of Taaffes Pub (which is great for traditional music), Coel Tigh Neachtain (with a rather segmented, intimate interior), and Roisin Dubh (which I'd say was the college bar).

  • Go to McDonough's and get the fish and chips. Specifically the smoked fish. That's less of a suggestion and more of a demand.

Ok, so that's all I've got time for right now. Time for some food, and some furious programming on a train ticket booking system.

Tuesday, October 07, 2008

coursing along

Well, I managed to survive the first two days of class, and I think I'll be able to manage for a few weeks at least.

The schedule this term (that means until December) is a pretty solid 10-5 with a one-hour lunch break from Monday to Thursday (we have Friday off completely). Of course, add onto that the group projects and research papers and course work and exam study time (well, exams aren't actually until March, so I've got some time for that) and it turns into a much more demanding task.

Right now, things aren't too bad. So far, it's been pretty introductory; we've had a quick review of basic concurrency concepts (e.g., processes, threads, context switching) and a brief overview of the impetus for computer security along with a discussion about why middleware exists. Also, we've received our first individual project assignment (due in 6 weeks) and were told to start picking groups for a data communications research project, which is made more interesting in that very few of us know anything at all about the topics we'll be covering in class.

Still, it seems like it'll be a rewarding course, even if it is somewhat difficult. My course-mates seem engaged (not too hard on the second day) and competent and generally come across as being almost exactly as intimidated as I feel, which is good. If they were more intimidated I'd feel as though I were missing something, and if they were less I'd feel like an idiot.

I spent some time looking through past projects and dissertations, and many of them seem to involve ad hoc wireless networks, with the more recent ones have to do with mobility (basically, trying to connect a device to an access point while one or both are moving through the coverage). That doesn't mean that's going to be something we have to do, but it seems as though that's where the faculty are steering us (not too surprising, really, given the sorts of projects the Distributed Systems Group at TCD works on)

In any case, I suppose my task now is to figure out exactly what it is I want to get out of this course and start working toward it. I already have some ideas of what I would like to know more about, but these are sort of a mess of potentially unrelated general concepts, like small-world and scale-free networks, models that utilize Bayesian inference such as the Hierarchical Temporal Memory model, self-organizing systems, and even emergence in general.

I think what I'm ultimately after (although I'm not sure how fervently I'll pursue it just yet) is some sort of answer as to what mechanism(s) give rise to complex systems from simple components. That's a pretty tough question, though, so I think I might be satisfied by figuring out some abstract patterns that apply to such systems. I do think that learning more about the structure and properties of communication networks will be very useful in that, and that learning how to produce a distributed application will give me insight into how simple nodes are treated when purposefully constructing a complex system on top of them (although that approach might be a bit to teleological to help in understanding self-organization...)

Anyway, now I'm just sort of blathering so I think this post is over. The main point is that courses have gone well so far, seem likely to go well in the future, and I'm already starting to shift toward academic mode again.

Saturday, October 04, 2008

getting classy

After all this time, my extended vacation is finally coming to a close. Classes start on Monday, so I might actually have to do stuff most of the day again. That's fine, though, given that that was pretty much the entire point of my trip over here.

We had an orientation thing for the computer science postgrads yesterday, so I got to meet everyone and hear a bit about the course itself. It sounds like it'll be pretty intense; teaching runs from 10ish to 6ish every Monday through Thursday, but we have Friday off entirely. That will be the case from now until March, and in March we have exams to qualify us to actually do the dissertation to get the degree. Apparently, students over here usually get a couple of chances to pass their qualifying exams, but in our case we have to pass them the first time or we can't get the degree. It makes sense to me that I'd have to pass all my tests, but to the Europeans in the group (which basically includes everyone else, since I'm the only American in the course this year) that came as a bit of a surprise.

Still, my classmates seem like they'll be good people to be working with, and they're generally a lot of fun. There was a little reception after the orientation sessions today, and after that a bunch of us went to the "Pav" (the Pavilion Bar, which is on Trinity's campus) and had a few beers before taking off for a pub called the Globe on Dame Street. It was pretty packed, given that it was a Friday night and Trinity was just starting classes back up. I guess my actual student experience is starting back up again.

Some other notes from Ireland:
  • It's getting cold here. Yesterday, the high was around 9º C (48º F), and today it's raining (again).

  • After we were done at the pub, we went to Dublin's answer to Lazzari's in Lincoln, a little pizza joint that serves up fresh-cooked slices late into the night. I don't remember the name, but it's just off the Temple Bar area and I imagine I could find it again if I looked.

So, anyway, that's all I've got for now. More updates later!

Tuesday, September 23, 2008

a l'Italia

I just got back from my first trip across the continent, this time to Cesena, Italy to do some training with a partner we have there for work. The flight was cheap and easy, since Ryanair (for now, at least) flies a direct flight from Dublin to the airport in Forli, which is about a 20 minute drive. Anyway, the work went very well, but that's beside the point.

The point is that I got to go to Italy for four days, and I got to see a bunch of really awesome things. First off, I stayed at a little hotel right in the center of Cesena, the Hotel Cappello.

Hotel Cappello.


Cesena is a very pretty little Italian city (around 100,000 people, according to my work host) about 25 minutes from the Adriatic coast in the Emilia-Romagna region. The sun was shining pretty much the whole trip--a welcome change after the standard Dublin weather--and the food was great, of course. We ate a fair bit of local seafood, and also they have a local dish from Romagna called "piadina", which is a type of bread somewhere between a tortilla and a pita. From what I could gather, the main attractions include a fairly imposing pentagonal fortress on the top of a big hill right in the center of town, and the Biblioteca Malatestiana, the first ever public library in Italy (opened somewhere around 1450).

The Rocca Malatestiana, Cesena's castle


The highlight of this round in Italy came on Saturday of the trip, though, when we caught the train from Cesena down to Florence, via Bologna. The train ride was fun and rather relaxing, and only took about two hours of travel through the beautiful Italian countryside.

The country surrounding Cesena, from the hill in the center of the city


Florence was packed with tourists, and for good reason. Being the seat of the Renaissance, the architecture and the art are amazing, especially the main sights such as the cathedral and the campanile...

The Basilica di Santa Maria del Fiore (Il Duomo) in Florence, with the Campanile di Giotto


...and the Piazza della Signoria, which houses (copies of) a bunch of the famous statues by the Ninja Turtles and their contemporaries, like Michelangelo's David, Donatello's Judith and Holofernes, and Ammanati's Fountain of Neptune.

The copy of David and Bandinelli's Hercules and Cacus.


We also wandered past the Galleria degli Uffizi, Florence's most famous art museum, but the line was absurd and our time limited, so we didn't go in.

All in all, I'd say the trip was a resounding success. Good food, good wine, good company (I even met the mayor of Cesena, for some reason), and a great location make for a good weekend. I also got to improve my Italian, which was immediately noticeable when I came home to Dublin and my Italian roommate had his parents visiting.

So, until the next trip, enjoy the pictures!

Sunday, September 14, 2008

if you blow chunks and she comes back

This weekend was a big weekend for me.

I had my first guests (Brian and Erica), so I had an excuse to go do some of the touristy things I hadn't hit since getting here. Some of the highlights:
  • We went down to the Temple Bar region and wandered around for a while (i.e., got a bit lost) looking for Irish music and food (we weren't entirely successful).

  • Saturday started with a tour of the Guinness Storehouse, which is fun if somewhat expensive. It's a self-guided, wandering-around-the-old-brewery sort of thing, where they tell you the basics of beer brewing and talk about the history of Guinness. The marketing floor is the coolest part of the actual tour, but the best thing is the Gravity Bar on the top, which has a killer view of the surrounding city (also that's where you get your free Guinness).

  • Dublin Castle isn't much of a castle. If castles are your thing, go to Blarney.

  • We ate lunch at a little Indian restaurant a bit off Grafton Street; I don't remember the name (Meloti, or something) but it was tasty. It wasn't the best value Indian restaurant on the street, but it was the only one open for lunch on a Saturday.

  • As far as guided tours go, the Old Jameson Distillery one is pretty good. They tell you about whiskey making, and how Irish whiskey differs from scotch and bourbon, then there's a taste comparison for a few lucky volunteers and a free Jameson for everybody.

  • The food at the Brazen Head is pretty good, and for being as big a tourist destination as it is, it is still has a pretty traditional feel.

  • At the end of the night Saturday, we finished at The Cobblestone, a real traditional Northside pub that has live music most nights. When we got there, there were three people with instruments playing away in the corner, and a host of locals crowding the bar, but still enough seating that we got a table in the back. It was great, and I'll be going back.

  • One of my Kiwi friends got the use of the corporate box at Croke Park today, so she offered us some of her free tickets for the hurling and camogie (women's hurling) finals that were going on. It's an interesting game; sort of a cross between field hockey and rugby. Anyway, I might actually try to take in a bit more of the hurling next season.

So, that's the update. I have a lot of pictures, and I'll probably post some of them later. For now, though, I'm tired and I think I'm going to sleep.