The Department of Computer Science at UIUC will be having its graduate recruitment weekend at the end of February and each research group is supposed to create a simple poster to showcase their ongoing research projects. In case anyone is interested in the projects that we do, I present to you, the Software Engineering & Testing research projects at UIUC.... The full PDF is available from here .…
I gave a talk on "How to Present" a couple of weeks ago as part of the Grad Academic Council at the University of Illinois. Here's the abstract: Making The World A Better Place, One Presentation At A Time You've been to your fair share of presentations; some of them were wonderful, some were pedestrian and some were just awful. Sooner or later you will have to give your own presentation, hopefully…
Before you dismiss this as yet another boring matrix multiplication example, consider that this , this , this and a lot of other tutorials on the web all use a naive version of matrix multiplication and then attempt to parallelize that version of it to demonstrate how to speed things up using some technology. What do I mean by a naive version (since there are many naive ways of doing things…
Onward! this year was a bigger conference compared to previous years; it spanned the entire 5 days of OOPSLA. I had a hard time deciding whether to attend the research tracks at OOPSLA or the presentations at Onward! The research tracks at OOPSLA are dedicated to concrete ideas which have been implemented and evaluated; whereas the Onward! tracks are dedicated to newer, interesting and sometimes…
There were two major themes at the WRT this year: concurrency and polyglot refactoring. Concurrency I actually prefer the term transforming instead of refactoring for converting sequential code to parallel code but I will use the term refactoring here since other people in the community have embraced it. Two papers were presented that dealt with refactoring to concurrency in the X10 language:…
There were three interesting talks that I attended at the DLS this year: Of Scripts and Programs: Tall Tales, Urban Legends, and Future Prospects (Unfortunately, I missed the first 10 minutes of the talk where Jan was talking about his experiences with the Pluto language). Jan presented the investigation that he and his team did to measure how much dynamism programmers used in Javascript – the…
Alan Kay , of Smalltalk fame, and a few of his colleagues from Viewpoints Research Institute gave two wonderful talks at the Computer Science department at UIUC today. It's been a while since I have heard such interesting and inspiring talks so I'd summarize them for you :-) How Complex is "Personal Computing"? The video is now available from here . This was a joint talk by four people: Alan Kay…
I have written a pattern language for screencasting based on my experiences producing and observing various screencasts on the internet. Through my experiences I have noticed various patterns that myself and other screencasters have used. Applying those patterns would certainly help the presentation of your screencast but, more importantly, I believe that the patterns enhance the teaching-learning…
I'll be attending ParaPLoP 2009 over the next few days. It's a patterns workshop along the traditions of PLoP but focusing exclusively on patterns for parallel programming. I am the author and co-author of the following three patterns paper that you can find on the program page : Barrier Synchronization Patterns for Collective Communication Patterns for Topology Aware Mapping Most of the patterns…
Room 101: Newspeak Prototype Escapes into the Wild : "The Newspeak prototype is now available at http://newspeaklanguage.org/downloads/ . " Yes, the long awaited Newspeak is finally released! It's far from being complete but at least something that runs is out. I was in a class about Actor Programming Languages and Systems last semester and we were supposed to talk about Newspeak (and possibly do…
This article is a summary of these three papers about Statistical Debugging: Holmes: Effective Statistical Debugging via Efficient Path Profiling (technical report from Microsoft to appear in ICSE 2009), Scalable Statisical Bug Isolation and Bug Isolation via Remote Program Sampling . Statistics is often used (and misused) as an effective way to finagle people into believing something that isn't…
Niels Bohr : Prediction is very difficult, especially about the future. During New Year's week I was watching tv and happened to switch over to the History Channel. It was showing something about the Bible code. More specifically, the title of the show was The Bible Code: Predicting Armageddon . Don't ask me why the History Channel decided to show something apocalyptic during New Year's week. I…
In Outliers , Gladwell presents an interesting chapter about how Asians are better in Math; he tries to bring his point across by illustrating how the traditional Asian habit of planting rice in the paddy field can be seen as an influence on the way Asians approach life (and its problems) and how that approach helps them to be better at math. Like most of Gladwell's books so far, that particular…
In Classic Testing Mistakes , Brian Marick presents several problems with the way testing is done nowadays. One of the mistakes that I have found most interesting is the over-reliance on beta testers (or just anyone who uses the software). Classic Testing Mistakes : "Beware of an over-reliance on beta testing. Beta testing seems to give you test cases representative of customer use - because the…
The panelists: (from left to right) Marjan Mernik, Juha-Pekka Tolvanen, Gabor Karsai, Charles Consel and Kathleen Fisher. DSLs seem to be a rather popular topic at OOPSLA this year. There was a workshop on it and several tutorials as well. And there was also the DSL panel which I attended this morning. Most of the talks and tutorials on DSLs assume that the audience is using specialized modeling…
Seaside BOF I didn't get to take any pictures in this session because I came in late and was sitting at an awkward spot. James Robertson from Cincom was there and has posted some pictures on his blog . I am actually in one of those pictures :) Michael Lucas-Smith did a demo of WebVelocity – Cincom's new in-your-web-browser development environment for Seaside. I missed the first 10 minutes of it…
The Evolution of Lisp This year marks the 50th anniversary of Lisp. While I am not a Lisp hacker, I have dabbled with it (and lambda calculus) enough that I do take interest in things that happen in the Lisp world. There was the Lisp50@OOPSLA workshop today but I only had time to attend the first talk of the day by Guy Steele and Dick Gabriel. Guy Steel and Dick Gabriel presented their combo-talk…
"Brooks was fooled." – Dick Gabriel In OOPSLA 2007, Fred P. Brooks gave a keynote entitled Collaboration and Telecollaboration in Design . I actually wrote a blog entry about it. Overall, I thought that it was a fantastic keynote. Software Engineering Matters : OOPSLA '07: Collaboration and Telecollaboration in Design : "There could be multiple architects but there is one chief architect who has…
It seems like John (in the green shirt) is about to use some of his superpowers and fly off into the screen.... Smalltalk Superpowers has to be one of the better workshops at OOPSLA that I have attended - well, I have only attended two so far so that doesn't say too much. What I liked about the workshop was the abundance of actual code (mostly short snippets) that were actually used in real…
We spent the majority of the day at the Workshop on Refactoring Tools (WRT) here at OOPSLA. The papers are all available from the WRT '08 wiki and will soon be in the ACM digital library as well. From left to right: Michael Klenk , Bill Opdyke and Bob Fuhrer. Photo taken by Munawar Hafiz : ) Here are some of the highlights of the workshop: Writing refactorings for IntelliJ AFAIK, IntelliJ IDEA has…
So, we are headed off to OOPSLA again this year in the famous "Ralph Johnson Van" . There was some mix up at the car rental company so we ended up with one car (the white one in the back of the photo below) and Ralph's own mini van. Our drive will take about 6 hours. We had to use the "Ralph Johnson Mini-van" instead. This time around, I have submitted a short paper and poster for WRT: Workshop on…
Dave Thomas , of Ruby and Pragmatic Programmers fame, was invited as one of the speakers for the Reflection | Projections conference this year. Ralph had already set up plans for lunch with him a few days ago and a few of us tagged along. It was great to actually meet Dave in person. He was very friendly and it was obvious that he is definitely a very pragmatic programmer . Over lunch, we talked…
The ACM chapter at UIUC is hosting the annual Reflections | Projections conference again this year. And like every year before, we have a impressive selection of speakers for the event. Larry Wall , the creator of Perl, was speaking on the opening night . I have heard (or maybe read) about him and how he is a funny and interesting person. His talk tonight definitely confirmed that. He even did a…
About two months ago, I wrote my review for Eclipse 3.4 Ganymede and participated in the Ganymede Around the World Contest . As one of the first few reviewers, I am going to receive a Eclipse shirt. I have not seen the shirt yet but I have already provided my mailing address to them. Also, I was fortuitous enough to be randomly selected as one of the 5 participants to receive an Eclipse jacket. So…
In Fall 2008, the Software Engineering I class at UIUC would make extensive use of the Eclipse 3.4 Ganymede as part of their class projects. In the beginning of the semester, students will start out by familiarizing themselves with Eclipse as one of the best tools for Java development. After familiarizing themselves with Eclipse as a Java IDE, they will then be using Eclipse as a development…
Ruby Is Smalltalk Minus Minus : "--- Challenge to Smalltalk advocates: go ahead and reimplement DwemthysArray? then! The Array is a rather short program so it shouldn't take you too long. It's also rather well known, even celebrated, by now so a ST version will reach many people who wouldn't normally even notice ST advocacy. And an elegant implementation will frankly be a lot more convincing than…
About a month ago, I volunteered as a shepherd for EuroPLoP '08. I shepherded an interesting paper which I hope will be accepted at the conference. I don't think I can talk about the paper here because of confidentiality issues but I can at least describe my experiences with the shepherding process. I did the shepherding process pretty much based on my own experiences both as a teaching assistant…
I am planning a series of articles to help people get accustomed to new and better tools in Squeak. This is mostly written just for fun and hopefully it would be useful to students taking Ralph's object-oriented course with Squeak over summmer. Squeak is a very different way of programming when compared to other programming languages and IDE. So, while I am not hoping for some miraculous…
The podcast of this special event in OOPSLA is actually available from the OOPSLA website. As my friend Munawar puts it, you really have to be there to experience it -- it's almost like a religious experience to hear Fred Brooks speak. Fred Brooks, the author of the seminal book The Mythical Man-Month and the famous essay No Silver Bullet was invited to give a talk at OOPSLA 07. His Collaboration…
The next few posts will be about OOPSLA 2007 and the title of the articles will be appended with "OOPSLA 07". Those articles will be written in a more colloquial manner since they will be mostly based on my personal experiences there. I was fortunate enough to have the opportunity to go to OOPSLA this year. I say fortunate because I had to apply for a Canadian visa; and based on past experiences…
SeemleCode by Semmle is a tool for for Java and XML code querying. It features its own query language, unsurprisingly called, QL for Q uery L anguage and a set of UI options for displaying the results of the queries. Currently, the results could be displayed in a table or in graph form (pie chart, bar chart, etc). from Class c where c.getPackage().getName().matches("org.jhotdraw%") select…
There were a ton of demos going on at OOPSLA this year but I was only able to attend three of them. The three that I chose were all focused on Java or Eclipse development since I was really interested in finding out what we could use to make Eclipse a better environment for tool development. Jazz I did not go for the original demo of Jazz but rather stopped by the booth the next day to talk to…
I spent the morning in the Educators' Symposium at OOPSLA. It was an interesting session but unfortunately I could only stay for 3.5 activities since I wanted to go for the Dynamic Language Symposium in the afternoon. We started off with a short session on how to teach recursion to incoming freshmen by Michael Goldwasser from St. Louis University. He had an interesting way for teaching recursion…
The Dynamic Languages Symposium had plenty of mind-stimulating papers and some not-so-stimulating ones. There were a total of nine papers but I missed the three that were presented in the morning since I was at the Educators' Symposium. One of the presentations that I liked was RPython: Reconciling Dynamically and Statically Typed OO Languages . It was an easy to understand paper and it showed the…
BOFs or Birds of a Feather Sessions allow people with common interests to gather and just talk about anything and/or everything about their common interest! This time I went for three BOFs, all of them focused around Squeak and Smalltalk. The first one was on Tuesday evening and it featured several short talks by various people. I have to say that the highlight of that BOF was about the…
This post is based on the paper Problem Frames and Software Engineering by Michael Jackson. This is my first exposure to the notion of problem frames so I apologize for any short-sightedness. In this paper, Jackson addresses the issue of why software engineering (SE) does not generally fit into the notion that one would have of other engineering disciplines such as aeronautical engineering (AE)--…
Squeak by Example : "This book presents the various aspects of Squeak, starting with the basics, and proceeding to more advanced topics. This book will not teach you how to program. The reader should have some familiarity with programming languages. Some background with object-oriented programming would be helpful." An updated book for Squeak is long overdue and Squeak By Example will fill that…
A History of Erlang: This I did first in Smalltalk and then in Prolog. This was fairly sensible at the time, since I literally interpreted Bjarne's directive to "solve all of Ericson's software problems" as "program POTS in Smalltalk". This post is based on the paper A History of Erlang by Joe Armstrong which was recently presented at HOPL-III . About a year ago, I stumbled upon the article Erlang…
This post is inspired by the contents of this entry at the Squeak Wiki FAQ. I just added some pictures to make it more clear. Squeak is an interesting system. All the source code for the system is embedded in the system itself. This means that you can actually go ahead find the code where a certain feature has been implemented rather easily. And if you desire, you can even change that behavior to…
In my previous post I mentioned some useful packages that do not come installed by default in normal distribution of Squeak. There are two ways that you can get hold of those packages in your image. The first way is to download a specially packaged image that contains most of the developer tools. You can get that image from here . The advantage is that you get all the tools that Squeak developers…
There are lots of excellent introductions and tutorials on Squeak on there so this is not an attempt at another tutorial. Instead, this will hopefully be a condensed version of the information I would have liked to know the first time I use something like Squeak. When you first start Squeak, your initial reaction might be something along the lines of: What is this thing!? You are probably in a…
One way to reduce the clutter in Squeak is to create projects. Contrary to its name, a project is more of a organized view of the image. Every project shares the same code in the image; changes made in one project affect code in another project that reside in the same image. So why would anyone want to do this? Like I mentioned, projects are a nice way to organize the things that you are working…
Apparently, the same problem that hit my other blog a few months ago has haunted this blog. This morning, all I did was add a new category (the squeak category; new posts on that coming soon). After saving the changes, my entire layout was messed up. The CSS will not work properly and the theme will not even load. Since I have already seen this kind of problem before, I just decided to upgrade to…
In my previous post I mentioned how there aren't any reliable refactoring tools for AOP yet. Seems like this problem is slightly more involved than the refactoring that most of us are used to. I have been reading a bunch of papers on this subject (mostly the top hits from the search for Aspect-Oriented Refactoring in Google Scholar. ). The paper that best summarizes the problems and challenges is…
This post is based on the paper Design Pattern Implementation in Java and AspectJ by Jan Hannemann and Gregor Kiczales. There is also a video related to AOP and it might be beneficial to watch. I have been reading quite a few papers on Aspect-Oriented Programming recently. Mostly I believe that there is a potential use for aspects. For instance, in the previous post I mentioned how it could be…
Aspect-Oriented Programming (AOP) is now a popular buzz word. Well since it has survived for nearly 10 years, I figured that it was worth taking a look at it. So far I have read two papers on AOP: A Disciplined Approach to Aspect Composition and a draft of a paper to be submitted. I will refrain from detailing the draft in this post. Suffice to say it introduces 4 broad patterns that give a better…
InfoQ: Domain Driven Design Quickly : "The most complicated aspect of large software projects is not the implementation, it is the real world domain that the software serves. Domain Driven Design is a vision and approach for dealing with highly complex domains that is based on making the domain itself the main focus of the project, and maintaining a software model that reflects a deep…
[Python-3000] Refactoring tool available (work in progress) : "In the sandbox I've been working on a refactoring tool, which could form the basis for a Python 2.x -> 3.0 conversion tool. I'd like to invite folks here to give it a try and give me a hand. It certainly needs more work, but I think that the basic infrastructure is sound. Check out sandbox/2to3/:…
This post is based on the paper ArchJava: Connecting Software Architecture to Implementation by Jonathan Aldrich, Craig Chambers, and David Notkin [ACN]. We heard of ArchJava in my previous post on Software Architectural Primitives. This paper stresses the importance of tying the software architecture to its implementation. Consistency between the architecture and implementation is important for…
For the class project in CS527, I am documenting the Typo content management system. Typo is the back-end that powers this weblog. We are supposed to follow the documentation style from the Documenting Software Architecture Views and Beyond book. There is some good advice there but following it blindly will make the documentation too cryptic for even the most enthusiastic readers. I have tried to…