Archive for the ‘Teaching’ Category

A Python issue

Sunday, April 27th, 2008

I have a few issues with Python. One of which is the unit-testing mantra. I’m a big fan of unit testing, however I don’t see how it can take the place of static type checking. It can supplement static type checking, but not replace it. For example:

File “/home/balor/tmp/revisor/revisor/base.py”, line 1410, in buildInstallationMedia
self.mode.BuildMedia.extend_task_list()
AttributeError: RevisorBase instance has no attribute ‘mode’

The above would never occur in a statically typed languages such as Java. The Java compiler would simply tell the developer at compile time that RevisorBase has no mode attribute. Unfortunately, this application takes about 20 minutes before it hits the offending line. So what would be a quick spin in a compiler in a staticly typed language is a 20 minute run in Python. It’s also a 20 minute delta between testing patches :( If I write a change it takes 20 minutes before I see if the change is effective.

I understand that one can get similar runtime bugs in statically typed language, however I’ve seen several instances of this type of issue in Python which would be solved by the simple application of a statically typed language.

Anyway, why should I, the user, see this issue.

Deploying the Computer Games development lab

Thursday, April 24th, 2008

As regular readers know I’m deploying Fedora 9 on PS3s to support our new Computer Science Games course. Students will be able to develop on a workstation running Fedora 9 and Windows Vista and then deploy on a PS3. The easiest (and best) way to access the PS3 is to install Linux on it. This has one seemingly major drawback. Sony, in their infinite wisdom, decided to disallow access for non Sony code to the RSX unit which is the PS3s graphics card. Personally, I think this is dumb. At any rate, there’s a work around.

The Cell processor in the PS3 is awesome. In fact it’s not all too dissimilar to what Intel are trying to do with Larrabee on the CPU die or what AMD are trying to do with Fusion. So some smart people have come along with a reimplementation of the Linux OpenGL subsystem called Gallium3D. This uses the SPE units on the Cell processor as, essentially, a graphics card.

Which is great, but it complicates my deployment somewhat. The current plan is to use Fedora’s kickstart support to boot from a bare minimum CD and then install a list of packages from the Fedora servers. I’m also going to create my own Fedora package server to serve out the Gallium3D reimplementation of Mesa. And then there are some integration issues.

I’ll need to authenticate off the Uni LDAP server. However, though the Uni LDAP servers include the posixAccount OID they don’t appear to fill in the uidNumber and gidNumber fields. Which sucks for a UNIX. So I need to set up an IPA server to leach auth information from the Uni LDAP server but fill in the required POSIX attributes.

That’s much more work than I initially thought it would be, but it’s the minimum required to get a development environment with user authentication. I’ll also be looking at puppet to roll out maintenance tasks.

Of Fedora 8 and Sony’s PS3

Friday, March 14th, 2008

Fedora 8 runs in 1080p on a PS3.

My desktop with laptop, PS3 and 1080p monitor.

There’s a picture (obviously not a screenshot) here

GNOME on a PS3.

It makes a dreadful workstation as it only has 192Mb RAM. However I’ll strip it down to bare metal with Cell development kit and a bare(ish) Xorg. It would make my job a lot easier if Sony relaxed the restrictions on Linux access to the RSX unit (the PS3′s graphics card).

My plan over summer, to get the University of Brighton games development lab up and running, is to turn the Gen1 PS3 into a server providing DHCP, LDAP authentication, NFS and Cobbler. Cobbler is particularly nice, it’s an automagic provisioning service for boxes. It should make provisioning of the 20 PS3s and associated workstations much easier. Furthermore, it’ll allow me to manage and maintain the software over time. So I may have a PS3-bare-metal config and an Intel-core-games-workstation config. It’s much more work than I want to do, but in the long run it’s easier than depending on the existing services. Essentially, to get one lab up and running I’ll have to fork most of the network services.

In the meantime I’ve to finish a paper for Diagrams 2008.

Ubuntu 7.10 “Juice” VirtualBox image

Sunday, December 2nd, 2007

I’ve created an Ubuntu 7.10 “just enough operating system” i.e. the JeOS flavour as a VirtualBox VDI image. This is to help one of my students so the login name and password are “james”. Some caveats

  • This image is a VirtualBox image. It only works with the VirtualBox virtual machine.
  • This image is a JeOS (pronounced Juice) image. As such, it boots to a command line.

To install the GNOME desktop on this image, you should “apt-get install ubuntu-desktop” i.e. install a package called ubuntu-desktop. This will pull in a _lot_ of other packages in order to support the deskop interface. Furthermore, given the fact that I’ve used Juice, not the standard Ubuntu desktop, you may have to manually configure the “/etc/X11/xorg.conf” file in order to make the graphics work.

The image is here http://foss.it.brighton.ac.uk/downloads/Ubuntu7.10.vdi.

The summer has landed

Wednesday, June 27th, 2007

As I’ve said before, one of the biggest lies about academia is that you have your summers off. You don’t. But I’ve finished all my teaching for this academic year. So I’ve got two months ahead where there should be no student interruptions except for setting repeat papers in August.

Recently I’ve had two papers accepted for publication (and there’s one in submission):

So the plan for the summer is to :

  • Turn the papers into a thesis chapter.
  • Finish another technical thesis chapter.
  • Get my registration (finally) transferred to University of Brighton.
  • Finish the integration of Eclipse and scratchbox-PPC for deployment in our labs.
  • Write the technical content for our new Computer Games degree.
  • Rewrite my Computer Graphics Algorithms course as I want to take it in a different direction.
  • Turn a thesis chapter into a possible journal paper.
  • Go to GUADEC and have a good time.

So when I said that you don’t get a summer off in academia, I’m not moaning. I could probably get away with not doing most of the above list but then I’d (a) not get my Ph.D. finished and (b) not be providing the best teaching I can to my students. Both of which are important to me.

Basically I have two months of heavily self-directed tasks ahead of me. Which is just as good as a summer off, because I work on what I want to.

We’re all learning all the time

Monday, October 23rd, 2006

I’ve been banging on about source and configuration management for years. I teach SCM to students and have even written a paper about how to use it in teaching software engineering. I sent a patch to Eric S. Raymond for the documentation to his comparator, and got back the following reply.

Applied — but necessarily by hand, because you sent an -e patch. You
should ship patches in -c or -u format.

D’oh. I’ve been told that before with respect to source code. I didn’t think it would be the same for documentation. Well, you live and learn.

Teaching Source and Configuration Management

Thursday, October 12th, 2006

I’ve just posted up an initial revision of my source and configuration management mini-book. I wrote it as a reaction to the questions I get from a lot of students. I aslo wrote it in four hours…so be kind. It’s rough, likely to contain mistakes and has no references currently. It does, however, take a different approach to most howto’s or guides. It goes into more depth on why you might want to use SCM and it give examples using two different SCM tools.

The web URL is http://foss.it.brighton.ac.uk/notes/SoftwareArchitectures/scm.html and the bazaar (bzr) repository is at http://foss.it.brighton.ac.uk/~balor/bzr/SourceAndConfigurationManagement/ patches and suggestions will be gladly accepted.

Start of a new semester

Monday, September 25th, 2006

So summer is finally over. I know this because we had our first league game of the season last Saturday (and lost :( ) and there are quite a number of confused students walking around the building today. I remember my first day at University. I took a lift in with Donie who was going in to fix the lights in the student union bar (I worked for a sound and lighting company then. There was no room in the van, so I had to lie on a ladder in the back. But now the tables have turned…

And there’s a lot planned for this year. I’m rolling out the method of teaching software engineering that I presented at PPIG 2006. Hopefully I’ll be able to collect some data to support my hypothesis and present that next year. I’ve also got a few new courses such as Real-Time Systems and Client-Server Technologies. I’m planning to roll out the Real-Time Systems course using RT-Linux on ARM (using qemu), which sould be a lot of fun. I’ll be using the hardware/software plaform to underline the theoretical issues of Real Time Systems. This should also form a basis of an Advanced Linux course that we intend to introduce 2007-2008.

Plus I’ve got a lot of research to finish this year. It’s going to be quite an eventful one, though I don’t know if it’ll top getting married. Which reminds me that I should blog more about food. On Friday (our two-month anniversary [yes I know the word means annual]) I made L. a nice meal, starting with spinach and feta cheese in filo parcels, Thai fish curry with Japanese steamed rice for main followed by Tiramasu for desert. It all worked out very well, and it didn’t take too long to do. Once the Tiramasu is in the fridge about 5 hours in advance, everything else only takes about an hour to make. I’ll try to remember to post the recipies tomorrow.

A diagram

Friday, September 15th, 2006

Havn’t been blogging much lately as there’s been too much comment spam. Hopefully it has been fixed now. Though, dear reader, I need your help. Could you please tell me what you think I’m communicating via this diagram? Update: I’ve already modified the diagram, based on some feedback. More is appreciated.


Guess what the image means

I’m giving a similar (or modified) image to my second year students. I’d like to know if I’m actually communicating what I intend to communicate. Consider this a usability test(ish).

M minus ten days and counting

Wednesday, July 12th, 2006

I’m getting married in ten days. Unsurprisingly I’ve little else on my mind. However I do still have to work.

I just submitted a camera-ready copy of my paper to PPIG2006 (change history is available at ‘svn co http://foss.it.brighton.ac.uk/svn/ppig2006/ppig2006-release’). I think it’s a good paper, but it needs to be developed over a longer term, which is something that I want to do.

I’ve also inherited next years real-time systems course. Which places me in a strange position. I’m going to blog about it but….. Some of the techniques I’ll be using to teach the course are experimental. The problem is with the “Show no fear” mantra, where lecturers are advised not to show that they are non-expert in an area or that they make mistakes. I may use a technique that turns out to be a mistake. If I don’t blog I can always “show no fear” and point-blank refuse to accept that I made a mistake, if I do blog I may be land in some interesting situations. I’m willing to trust that students want the best from me that I can provide, and I’m willing to trust that they understand that in order to do this I have to push the limits of my knowledge, technical skills and teaching skills. Basically, I want to turn this away from me teaching the students and more towards having a conversation with the students. In this way they can tell me how they learn best and I can accommodate them.

So at the moment the set-up for real-time systems reflects my wish that students actually get down and dirty with a real time system. In order to do this we’ll be using RTLinux on ARM emulated by Qemu. I’m getting two ARM development boards (thanks JD) and I have two robotic armatures. I want to “simulate” the control rods in a nuclear power plant using the armatures and a childrens’ toy (you know the one where kids get to put cylinders into cylindrical holes). So we’ll see how this all goes :)