Here are the slides of my keynote at the 7th Int’l Conf. on Quality of Information and Communications Technology (QUATIC 2010), in which I explore some of the relationships between quality and evolution, drawing on examples from the QUATIC track I chaired, other literature, and my own work. I use the nowadays common technique of putting more images than text on the slides, which makes the slide show less easy to understand, especially when slideshare insists to ‘forget’ the image about the ISO 9126 quality model in the second slide, unless you invite the author to speak at your site
We were asked to produce slides for the video wall in the entrance of our building, in order to convey our research to visitors in a visual and succinct way. Here are the ones I produced with colleagues (click on ‘menu’ to view full screen):
Some pleasant news yesterday: two of my co-authored papers are among the 15 most downloaded papers from our institutional open access repository during March. The first is our CSMR’10 paper about an empirical study investigating whether bad identifiers somehow relate to less good code quality (more details in a previous blog entry). The paper was already among the 15 most downloaded during February. The other paper is about how to better track the impact of code clones throughout the history of a system, and will be presented at the software clone workshop at ICSE in May.
That’s the title of a short but interesting book I finished reading early this week. It was written in 1994 by Mitchel Resnick, who had previously co-created the ‘programmable bricks’ that led to LEGO Mindstorms, and would later co-develop Scratch.
The book is subtitled Explorations in massively parallel microworlds and introduces StarLogo, a parallel Logo-like language Resnick created to allow exploration of decentralized systems in which global behaviour emerges from simple individual rules. In the chapters Foundations, Reflections and Projections he discusses decentralized systems and how people still think in a very centralized way. In the chapters Constructions and Explorations he presents StarLogo and projects he did in schools with children. The book’s title comes from those projects, simulating how ants find food, how traffic jams develop, etc.
It’s fascinating to see how the collective behaviour of many agents apparently coordinated by a central ‘invisible hand’ actually stems from simple rules followed independently by every agent. Another insightful part of the book is the description of how children tackled the various projects, often coming up first with a more complicated centrally coordinated solution that involves much more communication and state variables than the decentralized approach. As Resnick argues, most adults would come up with the same approaches: centralized reasoning is ingrained in our culture and education.
I already knew that our forthcoming introductory computing course My Digital Life is going to use an extended version of Scratch for students to do exciting projects. Now, talking to a colleague, I learned that our Natural and artificial intelligence course teaches (among many other things) similar topics to Resnick’s book but using NetLogo, which was inspired by StarLogo. I should probably borrow the course text from the library over the summer holidays: it should make for an interesting read to complement and expand on Resnick’s book.
Our PhD student Simon Butler has been looking at whether there is some relation between poor identifiers (e.g. that are too short or don’t use dictionary words) and code quality. The hypothesis is that poor identifiers may reflect less than optimal understanding of the problem or of the domain and in turn may impact on the program’s understanding during maintenance. All this may thus lead to code quality problems: potential bugs, convoluted code, etc.
Simon had a short paper at the Working Conf. on Reverse Engineering (WCRE) last October, presenting his first study on open source Java applications. The paper was quite well received, from what he told us. Simon’s talk was the only non-invited talk the WCRE steering committee chair twittered about, and it was mentioned the next day by Nicolas Anquetil during his most influential paper talk.
Simon has meanwhile enlarged the depth and breadth of the study: he did the analysis at method level (before it was at class level), he compared naming quality with more code quality metrics, and he also compared it with a readability metric. He also did a statistical analysis to see if some naming problems (e.g. not using dictionary words) could be used as a light-weight test to point to methods with readability and quality problems. The paper we submitted to the European Conf. on Software Maintenance and Reengineering (CSMR) was accepted and today we uploaded to our institutional open access repository the camera-ready version that, from past experience, will take some months to show up in IEEE Xplore.
In our paper at the 2008 International Conference on Software Maintenance, my colleague Yijun Yu and I presented an analysis of the evolution of the plugin-based Eclipse SDK architecture. The aim was to see whether some systematic architectural change process was followed and if commonly prescribed design guidelines (like increasing cohesion and decreasing coupling) were followed. Towards that end we collected several metrics (number of plugins, number of dependencies, etc.) and plotted them over various releases of different types (major release, maintenance release, etc.).
We have now analysed a few more Eclipse releases, did more measurements (on extension points) and refined others (distinguishing between forced and unforced changes), and decided to make the data public, by putting the metrics on Google spreadsheets and using Google Visualization to show the evolution of the measurements. One spreadsheet (HTML, CSV, Excel, OpenOffice) contains the metrics for major and maintenance releases from 1.0 to 3.5.1, the other (HTML, CSV, Excel, OpenOffice) has the metrics for the milestones and release candidates of releases 3.2 and 3.3. You’re free to use the data for your own purposes, provided you acknowledge where you got it from, e.g. by providing the URL of this post. Our Javascript code to obtain the charts from the spreadsheets is open source: just use your browser’s ‘show page source’ feature! In that way you can reverse engineer what the headings in the spreadsheets columns mean, but an easier way is to just contact us
We next present the results, but they will only make sense if you first read the paper. Read the rest of this entry »
Many (but not all) Web 2.0 sites provide little badges or widgets to insert in your own blog and thereby link to those sites. Additionally, we are spoilt for choice with all those designer-made eye-candy badges, like a cute little blue bird asking your readers to follow you on Twitter. After coming across Ben Godfrey‘s site, I decided I wanted to take the same simple yet visual, compact, and general approach: a list of site names, together with their favicons, linking to my accounts on those sites. Ben uses some CSS magic which I couldn’t understand, but after some trials and errors, I found a way to replicate his approach.
Using WordPress’s text widget, which allows to put any plain text or HTML in the sidebar, it’s a breeze to make such a list. The HTML code
<ul><li> <a href="http://bibsonomy.org/user/michelw" title="papers"><img src="http://bibsonomy.org/favicon.ico" style="vertical-align:middle" > Bibsonomy</a> </li><li> <a href="http://www.linkedin.com/in/michelwermelinger" title="contacts"><img src="http://www.linkedin.com/favicon.ico" style="vertical-align:middle" > LinkedIn</a> </li></ul>
will generate this list:
The only problem is if the site doesn’t have a favicon file. The best is to use Google to obtain the favicon for a given domain, because it will return a default globe icon if no favicon can be found. In the HTML code above, simply use as image source src="http://www.google.com/s2/favicons?domain=bibsonomy.org" or similar.
I finally became reasonable and admitted to myself that there is no point in maintaining two separate blogs about Computing, this one and one on digital art, especially if the latter had so few updates. I hence looked for a way to transfer all the content from that blog to this one. A quick search returned a post by one of the WordPress developers, with the gist of the solution: just use the built-in export/import functionality to save all posts, pages, comments, categories and tags from the blog to be deleted and then load them into the blog to be kept.
Of course, if you have added lots of widgets to and customized the theme of your retired blog, all that will be lost, and you will have to decide whether and how to change the look and feel of the kept blog in order to accommodate the content of the retired blog. No automation can help you in that… However, I’d expect links and their categories to also be exported, but they aren’t. Hence, if you have lots of links and blogrolls on your sidebars, I have no clue how to easily copy them to another blog. Fortunately, that was not the case with my digital art blog to be retired; a simple transfer of posts (and their comments, categories and tags) was all I needed.
I was pleasently surprised when the import process offered to also get the files uploaded to the retired blog. Since it used some Java applets, this would be really useful. Unfortunately, I got error messages saying ‘unknown file extension’: apparently only certain file attachments can be imported. Oh well, no big problem. I logged into my web hosting service, where I keep all my blogs in separate sub-folders, and used the cPanel file manager to move all uploaded files from one blog’s folder to the other, and then delete the retired blog’s folder. Back to the main cPanel view, I used the Manage redirects functionality in the Domains sub-panel, in order to make all URLs of the form http://michel.wermelinger.ws/digitar-te (the retired blog) redirect to http://michel.wermelinger.ws/chezmichel (this blog). Since I use the same permalink format in both blogs, namely year/month/post-title, any links to my retired blog will correctly resolve to the corresponding posts or files in this blog.
To sum up, the export/import facilities of WordPress go a long way to help the merging of blogs, but be prepared to do quite some manual tweaking, especially if the two blogs are very dissimilar in the presentation of their content. Among the things to consider are the merging of different permalink structures, ‘About’ pages, and blogrolls.
For my new stamp blog, I looked for a highly visual layout, and came across The Unstandard, a WordPress theme that influenced others. The basic idea is that each blog post is represented by a single image in the index pages (i.e. the home, archive, category, tag and search result pages), instead of being inserted in full or as an excerpt, as most themes do. Since I aimed for the blog to somehow mimic a stamp album, having index pages display just stamp images was ideal.
The theme is very easy to use. Read the rest of this entry »
Tags: themes