Archive for the ‘Uncategorized’ Category

Virtual Execution Environments 2010

Thursday, March 18th, 2010

The past few days, I’ve attended VEE 2010. I registered prior to receiving the definite decision on the paper we submitted — it was rejected (with weak reviews IMHO, but still rejected is rejected and nothing you can do about it). So I did not really have an idea on what the program would be about. Turns out, it’s petty OK, even though most of it is besides my general area of interest/work.

Nonetheless, the opening keynote talk was pretty interesting, if only for the take Peter Chen has on education and teaching systems. The bottom line is: challenge students with something difficult and give them the tools and help to get there. His first year students are allowed to pick anything to implement as a system, provided it is fun and not completely impossible. However, it seems to me that the requirements in teaching assistants is pretty high. Peter said that undergrad students are assisting, and that is one path we cannot take in Belgium. Students must study, not assist. I do like the bottom up approach, but I wonder how feasible it would be, given that our students have trouble grokking pushl 4(%eax). But still, given a small Altera board, a simple instruction set ABI, and simple rules, they managed to do nifty stuff. On example was a Guitar Hero clone, but using a real instrument, where the system recognised the note that was played. Another example included a game, driven by voice (tone, pitch, length) to fly a chopper through a 2D cave. The conclusion: an enlightening talk, showing that maybe we underestimate our students too often.

The first session was on debugging, and the most interesting talk was on a nifty VMM based replay system. The major improvement over what I recall from the work Frank Cornelis did at ELIS, was that these guys reduce the amount of data to retain, while still following all of the execution. Furthermore, they show that a replay system is but a state machine, and such a state machine can be built at user level, taking the (transformed) VMM recorded data and shoving it to the replayed process. Basically they allow replaying on any machine, and they are completely OS/app agnostic. Hence sending bug reports should be transparent enough to allow users to have the recording on at all times.

The keynote of the second day revolved around Singularity. Yes, the stuff from Microsoft. Now, everybody who knows me, knows that I’m no fan of that particular company, but I do dig their research department. This was followed by a talk on XIR trying to decouple the JIT compiler from the runtime system, or at least to define the interface in a better way. The second paper presented this morning was VMKit, which was pretty cool. Using standard software components (LLVM, MMtk, and libpthread), the authors define an interface between these components and to the higher level language. They showed you can easily implement a Java and a .NET VM on top to VMKit, with reasonable performance. J3 is around 2x slower than Jikes RVM, whereas N3 is comparable to Mono. I think this can be a very handy toolkit to move our COLE research to.

Google also had an invited talk on their new gadget to run native code inline in the browser. There are some restrictions, such as not all assembly instructions are allowed, which makes sense, but it also limits what applications you can run natively. One of the examples was Quake, which made me think the tool was pretty cool. Yet, we already have a native Quake Arena type of plugin. Second, at this point it is unclear what other application types you would want to run, but I can see that with ChromeOS being released onto the (unsuspecting?) world, having something that allows classical apps to be transported to the browser OS, is a nifty thing indeed.

In the afternoon, there were some more talk on VMMs, the first of which presented NEON , which uses the VMM and QEMU to see where tainted data is going. It was pretty cool that they can follow copies of the data, even as they are copied using copy ’n paste like actions by the user, to prohibit sensitive material to be send outside of the trusted zone. One remark was that typically, people see that everything gets a taint after a while, but Qing Zhang claimed this was not the case in their experiments, which, admittedly has not been running for months on end. I thought it was a pretty cool thing to do, and it shows that perhaps the notion I have of measuring QoS VMM side is not such a bad idea. Or at least not completely unfeasible.

The last talk on Thursday which kicked major ass was on AASH, which is an Asymmetric Aware Scheduler for Hypervisors. The premise was that the hypervisor (Xen, in particular) is not aware of the possibility that the machine potentially has a heterogeneous array of CPUs or cores. For example, a new system might feature a Corei7 and several Atoms. The former being used for CPU bound workloads, the latter being used for memory bound workloads. The authors extended the Xen credit scheduler with a second type of credits, i.e., fast credits, to be split among so-called fast VCPUs, whereas the original credits (the slow credits) are then shared among the slow VCPUs. When a fast VCPU runs out of fast credits for the current accounting time, they are moved to a slow CPU. I think it’s a pretty brilliant and simple idea. The results are indicative of the fact that this works well in practice, at least for SPEC CPU 2000 benchmarks (crafty being CPU bound, mcf and equake classified as memory bound). The only thing I found to be subpar was the use of execution time for measuring how well these benchmarks were doing under the dual credit scheduler. In a multiprogram system, per-program execution time is not the right metric. Instead, one should use STP and ANTT (Eyerman and Eeckhout, MICRO 2008) for execution time based workloads or TNT and ANRT (Georges and Eeckhout, HPCVirt 2010) for throughput based workloads.

In the Friday Java session, the allocation site tracking was the most impressive paper, in my opinion. Again, a fairly simple idea, but it does seem to help against memory leaks. Up to now, Mike Bond et al. have proposed a number of approached to deal with semantic memory leaks, but this paper seems to provide the means of locating them, without too much overhead. The key idea is that one replaces some field, or part thereof, in the object header to identify the allocation site where the object was allocated. Upon GC, as each live object is walked, statistics can be assembled and the allocation sites with the most surviving objects may indicate leaks, provided the heap usage keeps growing after each global GC. The authors define two options, using the hash code header field, or it this is not present, the class pointer in the object header. They adequately deal with all potential problems, such as the hash code field colliding (they introduce a random value and shrink the allocation site ID size for hot sites).

The last few talks on binary translation we, put bluntly, hard to follow. So that about wrapped it up for VEE. I had a number of interesting chats with people from VMware, Oracle (formerly BEA, and it seems they still prefer that), and the ubiquitous Steve Blackburn. If all goes well, I’ll be back next year.

MacJournal or Ecto?

Wednesday, March 10th, 2010

This year’s MacHeistcontains MacJournal, a journaling app that apparently also lets you post to (at least) a WordPress blog. Up to now, I had been trying Ecto, which at first sights seems to be a bit more powerful, but perhaps too powerful for my simple needs. Still, MacHeist is priced at $19.95, whereas Ecto costs $19.95 in itself. I’m not sure if I will ever use the other Heist apps, so it’s a tough call at this point. On the other hand, MacJournal can be used for other things besides blogging. Such as keeping track of stuff you did at work, for which I now use dead-tree type recording. Aargh! The choices!

After trying to post it does seem that adding keywords is not possible, so that’s definitely a minus for MacJournal.

Update: Still need to figure out how to enter raw HTML :-/

hMollom

Friday, February 26th, 2010

You may or may not be aware of the excellent anti-spam service provided by Mollom, founded by two friends and colleagues, Dries Buytaert and Benjamin Schrauwen. Mollom provides an API to program against, allowing support libraries to be written in a variety of languages and for numerous platforms. Top-notch examples are the Drupal plugin (obviously :-) and the WordPress plugin. Next to that there are a number of libraries for Java, PHP5, Ruby, Python, etc. Sadly, a Haskell library was lacking.

Given that I enjoy programming in Haskell and need to sharpen my Haskell-fu, I set out to write a library for interfacing with the Mollom API. The library is far from finished, but it is functional at this point, so if you have Mollom keys, you can call the services and fight the spam war on your Haskell driven website.

I maintain two repositories where you can get the library:

At this point the library has been given version 0.1. So it is still lacking quite a lot of features. Stuff that is on the immediate TODO list:

  • Add fault handling
  • Add server list refreshing
  • Encapsulate the state in a monad

Any feedback is appreciated.

PyMollom moved to GitHub

Monday, February 8th, 2010

Just a quick update. I have moved the repository for PyMollom over to GitHub. If you are unfamiliar with git, you can check out the library using git clone git://github.com/itkovian/PyMollom.git. At this point, the library is still the same, but I do plan on integrating the new language detection ASAP.

New door opens, old door closes

Monday, February 1st, 2010

For the past three years, I guess, Veerle has been trying to get me to agree to close up the living room door and make a new door in the dining room. Last fall, I finally caved. I saw the light, she would put it :-) We discussed our plans with the guy who will be taking charge in redoing our attic, and signed the agreement last November. Half December he gave us a call, and we agreed upon having the job done by the end of January. On the 29th, the demolition man came by and tore a new hole in our wall. Using a water to limit the amount of dust the wall was split apart at the right spot. Three hours later, everything was cleared and the big cleanup could begin. Depsite the water, dust had spread throughout the living room, partially spoiling my plans for getting some work done. With spurious amounts of water and soap, the living room was cleaned, and along with it, all the toys, books, and decoration.

I tore down the old door, with Nathan’s help — he’s scared of loud noise, so I figured that if I could get him to help me out, he would at least stop crying. And he did. with combined forces, we yanked the door from the wall, and replaced it with a brand new wooden framework, against which I put 18mm of multiplex, covered with 9.5 mm of plaster plate (gyproc). A bucket of Knauf Goldband later and the doorway was effectively sealed shut.

I plastered the new door hole, using metal corners to work against — my plastering skillz are pretty good, but only for small areas, i.e., no wider than my tool is. So, without further ado, behold the new door and the sealed old door.

Changing doors
Changing doors

Needless to say, we had to move some furniture around :-)

Changing doors

Mind, a new glass sliding door will be installed shortly. when the money for it arrives on my bank account.

Flemish programming contest

Thursday, January 28th, 2010

On March 17th, 2010, Ghent University organises the second Flemish Programming Contest, in collaboration with the universities of Leuven, Hasselt, Brussels, and Antwerp.

For three different categories of participating teams (of at most three participants), we offer five problems that need to be solved in three hours. The goal is to have at least one fairly easy and one quite hard problem for each category, but as we all know, a problem is only hard when you do not see the solution. So YMMV. Still, we aim to have each team solve at least one problem. For this, teams can use any one of twelve programming languages: C, C++, C#, Haskell, Java, Pascal, PHP, Prolog, Python, Ruby, Scheme, and VB.NET.

Programming should be fun, but to add an extra incentive, we have up to €2500 in prizes. So, without further ado, head over to the contest website and register.

Python wrapper for Mollom

Thursday, May 8th, 2008

With the release of the Mollom API, I have cleaned up and documented my Python wrapper for the API.

You can get the code from the darcs repository at http://itkovian.net/darcs/python_mollom. Alternatively, a packed tarball is also available.

For the moment, the repository contains two files Mollom.py and HTTPTransport.py. The former contains the MollomAPI and MollomFault classes. The latter contains a derived class to deal with HTTP transport in the XML PRC library, as the default Python code does not seem to do things correctly. To get the response from the Mollom service as a Python dictionary, you need to either use the provided HTTPTransport class or provide your own implementation

To deal with caching and using session IDs a MollomBase class is present, which can be overridden to allow a user defined caching mechanism for the server list to be used. This class is still under heavy development, so it is prone to (frequent) changes.

MollomAPI offers the following methods:

  • getServerList
  • checkContent
  • sendFeedback
  • getImageCaptcha
  • getAudioCaptcha
  • checkCaptcha
  • getStatistics
  • verifyKey

I plan to see if I can get this into Django as well as a contributed app that can be included in a Django project.

Update (2008/09/18) I have incorporated the changes made to the API document on 2008/09/10. The version of the tarball has been bumped to 0.2. Additionally some bugs were fixed, so you might want to update to this version rather than sticking with the old one.

Update (2010/02/08) I have moved the code to a new repository at GitHub. Get the library using git clone git://github.com/itkovian/PyMollom.git. For now, I do plan on keeping the darcs repo hosted at my website and the github repo in sync, so you can pull from either.

Electricity symbol stencil for Omnigraffle

Tuesday, June 12th, 2007

I have made a stencil for Omnigraffle that allows one to create the layout for the electricity grid in one’s house. You can get it from its github repository, or just get a zipped version here.

Here’s a screenshot of what the stencil items look like:

Omnigraffle stencil

Faeries at the Comic-Con

Wednesday, August 9th, 2006



Faeries at the Comic-Con

Originally uploaded by calibre68.

I love fantasy literature. And this picture perfectly illustrates why :-)

Worldcup

Wednesday, July 5th, 2006

For Zidane, I hope the French go to the finals, and kick the Italians there. But Portugal remains the only team of which I didn’t want them not to get the cup.

Update: Ok, so France won. So I’ll cheer for them against Italia.