Tricky Computer Repair

I’m finally making some progress on a tricky computer repair I’ve been dealing with in my downtime basically this entire past week. The 10.5-year-old Pentium II computer that I have been using as web and media server in my home office started acting up. Initially, there were some kind of boot problems that made doing any disk access on the computer painfully slow. And I mean painfully. It would take days to open a folder. I haven’t figured out what it was, and repairs were impeded by the fact that the computer either rebooted straight away when booting in Safe Mode, or hanging with a blue screen when running Windows XP setup from the boot disk.

I decided to take out my SATA card, which allowed me to reinstall Windows. I was then finally able to make backups of most disks two days ago, but one of my drives had mysteriously shrunken from 250 GB to 33 GB. I found out that’s one of the magic BIOS capacity thresholds, but I couldn’t figure out how to reset the capacity. All tools I could find failed to reset the “host protected area” or change the “max LBA” values.

Today I finally found an old version of Seagate DiscWizard Starter Edition. It allowed me to remove the dynamic disk overlay that was there (unnecessarily, it seems) and change the “max LBA” to its native value. While I’m at work now, my computer is backing up those contents, and then I plan to wipe the drives and put my old drive image back on the system drive.

Computers. Helping you solve problems you wouldn’t have without them.

PS: I thought about just replacing the old computer, but it still works. After over a decade.

Share
Posted in Uncategorized | Leave a comment

Print This Post Print This Post  

Review for iConcept Press

I just finished the review of the book chapter I had agreed to do for iConcept Press. It was an interesting survey chapter, written by non-native speakers of English, about a topic I’m familiar with, but on which I am by now means an expert. I therefore recommended acceptance with medium confidence.

Most of my comments were about spelling or grammar mistakes, or suggestions on how to reword parts to make the intention clearer. I don’t know the literature well enough to determine if important references are missing (the authors definitely cited most of their own work), but I did find that it completely ignored one part that it alluded to several times: There is a different way of specifying the way these systems work, and the way it is different from the currently prevalent approach was briefly mentioned, but the consequences, advantages, and disadvantages are completely omitted. Perhaps they haven’t been studied yet, in which case that should be stated, but otherwise I would like to see such a discussion.

Unfortunately, I don’t think this exercise of mine will get us any more information on whether iConcept Press is just a vanity press. I don’t see reviews by others, and there is obviously no program committee meeting to discuss the paper. Even if I had rejected the paper, acceptance wouldn’t tell us anything. The only interesting outcome would be if the paper were rejected in spite of my recommendation to accept.

Should I contact the editor or the authors? What would I ask? I can’t exactly ask “is this a vanity press?” or “why are you putting USD 626 into this?”

Update:

At least the editor has renamed the book from “Java in Academic and Research” to the more parallel “Java in Academia and Research,” although I still wonder why we need academia and research and not academia and industry.

Share
Posted in Ramblings | Leave a comment

Print This Post Print This Post  

Gmail Account Lockdown

Oh great…

Account Lockdown: Unusual Activity Detected

This account has been locked down due to unusual account activity. It may take up to 24 hours for you to regain access.

And all I did was send 86 MB of vacation pictures spread out across 21 emails. I hope my Gmail access gets restored quickly. It feels like a part of me has been amputated.

Update:

My access was restored, just about 15 minutes later. Thank you, Gmail team!

Share
Posted in Uncategorized | Leave a comment

Print This Post Print This Post  

Passed My Defense

Passed My Defense

Passed My Defense

Share
Posted in Pictures | Leave a comment

Print This Post Print This Post  

PhD Defense: A Framework for Testing Concurrent Programs

A Framework for Testing Concurrent Programs
(Presentation, PowerPoint, PDF)

Rice University
Department of Computer Science

Presents

Mathias Ricken

Ph.D. Thesis Defense

Title: A Framework for Testing Concurrent Programs

Date: January 10, 2011
Time: 9 AM
Location: Duncan Hall 3076



Abstract:

This study proposes a new framework that can effectively apply unit
testing to concurrent programs, which are difficult to develop and
debug. Test-driven development, a practice enabling developers to
detect bugs early by incorporating unit testing into the development
process, has become wide-spread, but it has only been effective for
programs with a single thread of control. The order of operations in
different threads is essentially non-deterministic, making it more
complicated to reason about program properties in concurrent programs
than in single-threaded programs. Because hardware and operating
systems influence the order in which operations in different threads
are executed, debugging is problematic since a problem often cannot be
reproduced on other machines. Multi-core processors, which have
replaced older single-core designs, have exacerbated these problems
because they demand the use of concurrency if programs are to benefit
from new processors.

The existing tools for unit testing programs are either flawed or too
costly. JUnit, for instance, assumes that programs are single-threaded
and therefore does not work for concurrent programs; ConTest and
rstest predate the revised Java memory model and make incorrect
assumptions about the operations that affect synchronization.
Approaches such as model checking or comprehensive schedule-based
execution are too costly to be used frequently. All of these problems
prevent software developers from adopting the current tools on a large
scale.

The proposed framework (i) improves JUnit to recognize errors in all
threads, a necessary development without which all other improvements
are futile, (ii) places some restrictions on the programs to
facilitate automatic testing, (iii) provides tools that reduce
programmer mistakes, and (iv) re-runs the unit tests with randomized
schedules to simulate the execution under different conditions and on
different machines, increasing the probability that errors are
detected.

The improvements and restrictions, shown not to seriously impede
programmers, reliably detect problems that the original JUnit missed.
The execution with randomized schedules reveals problems that rarely
occur under normal conditions.

With an effective testing tool for concurrent programs, developers can
test programs more reliably and decrease the number of errors in spite
of the proliferation of concurrency demanded by modern processors.

Share
Posted in Publications | Leave a comment

Print This Post Print This Post  

Scrum for COMP 402?

I went to a talk on Scrum yesterday, and it was very interesting. Scrum is an agile software engineering methodology, similar to Extreme Programming.

It features a list of externally visible features that need to be implemented, the product backlog. At the beginning of a sprint, which often lasts a month, the developers estimate which features they can implement during this sprint. Then they break the features down into tasks that need to be done.

Each task has a cost associated with it (basically the time it takes to implement, but it’s not really any real time span, rather something abstract, like jelly beans). The tasks are written on sticky notes.

During the daily Scrum stand-up meeting, all developers say what they did yesterday, what problems they had, and what they are going to do today. If they are out of tasks, they pick new sticky notes. If they are still working on the previous tasks, they re-estimate how much time is left for those tasks.

I really think that I should have taught COMP 402 using some kind of Scrum. A month-long sprint would have been too long, probably, and the class only met three times a week, but we probably could have done three week sprints?

Has anyone taught a software engineering/production programming class that used Scrum?

Share
Posted in COMP402, Ramblings | Leave a comment

Print This Post Print This Post  

Is iConcept Press Legitimate? A Review

I received a review invitation for an article to be published in one of iConcept Press‘s journals today. I already wrote about iConcept Press earlier, when I wondered whether it was a vanity press. Considering the cost of publishing there, I still think it is a vanity press, but I’m willing to put up the effort of submitting a review to learn more.

I won’t submit a bad review if the paper turns out to be good, or even acceptably mediocre. I will perform an accurate review. Of course, that means we still may not find out whether iConcept Press is a vanity press or not.

I also won’t publicly disclose the authors or parts of the paper I am reviewing. I can tell you already, though, that the review is not double-blind. I know who the authors are. I wonder if or when they will find out that I reviewed the paper.

Happy new year!

Share
Posted in Ramblings | 1 Comment

Print This Post Print This Post  

COMP 410 Final Presentation

The guys of COMP 410 had their final presentation last Wednesday. They got some pretty tough questions, and the state of the final product was not as polished as I would have liked it to be, but I think they pulled of something interesting. This is even more true since the cloud framework they were using was brand-new, not well documented, and not at all intended for this kind of processing.

Into the Blue COMP 410 Project

The comments were mainly about the lack of an interesting, impressive demo that actually requires the cloud and that cannot just be run on one machine. That is a very valid point, but one has to keep in mind that the class was very small, and there was quite a bit of learning and programming involved for a group of four students.

All four of them say that they learned a lot, and that even their interviewing skills improved because of their experience in COMP 410. I think that alone probably makes the class already worthwhile. I’m definitely glad I was able to be a part of it.

Some (blurry) pictures of the students’ presentation. I noticed it was recorded on video. I’ll try to find out where that video can be accessed.

Share
Posted in Pictures, Teaching | Leave a comment

Print This Post Print This Post  

PhD Proposal: A Framework for Testing Concurrent Programs

A Framework for Testing Concurrent Programs
(Presentation, PowerPoint,PDF)

Rice University
Department of Computer Science

Presents

Mathias Ricken

Ph.D. Thesis Proposal

Title: A Framework for Testing Concurrent Programs

Date: December 2, 2010
Time: 9 AM
Location: Duncan Hall 3076



Abstract:

This study proposes a new framework that can effectively apply unit
testing to concurrent programs, which are difficult to develop and
debug. Test-driven development, a practice enabling developers to
detect bugs early by incorporating unit testing into the development
process, has become wide-spread, but it has only been effective for
programs with a single thread of control. The order of operations in
different threads is essentially non-deterministic, making it more
complicated to reason about program properties in concurrent programs
than in single-threaded programs. Because hardware and operating
systems influence the order in which operations in different threads
are executed, debugging is problematic since a problem often cannot be
reproduced on other machines. Multi-core processors, which have
replaced older single-core designs, have exacerbated these problems
because they demand the use of concurrency if programs are to benefit
from new processors.

The existing tools for unit testing programs are either flawed or too
costly. JUnit, for instance, assumes that programs are single-threaded
and therefore does not work for concurrent programs; ConTest and
rstest predate the revised Java memory model and make incorrect
assumptions about the operations that affect synchronization.
Approaches such as model checking or comprehensive schedule-based
execution are too costly to be used frequently. All of these problems
prevent software developers from adopting the current tools on a large
scale.

The proposed framework (i) improves JUnit to recognize errors in all
threads, a necessary development without which all other improvements
are futile, (ii) places some restrictions on the programs to
facilitate automatic testing, (iii) provides tools that reduce
programmer mistakes, and (iv) re-runs the unit tests with randomized
schedules to simulate the execution under different conditions and on
different machines, increasing the probability that errors are
detected.

The improvements and restrictions, shown not to seriously impede
programmers, reliably detect problems that the original JUnit missed.
The execution with randomized schedules reveals problems that rarely
occur under normal conditions.

With an effective testing tool for concurrent programs, developers can
test programs more reliably and decrease the number of errors in spite
of the proliferation of concurrency demanded by modern processors.

Share
Posted in Publications | Leave a comment

Print This Post Print This Post  

Automatic Generation of Optimized Domain-Specific Operations, by Jason Eckhardt

Jason Eckhardt, a student of Keith Cooper, had an interesting COMP 600 talk about StencilDSL and simplifying writing certain stencil-based array operations:

Automatic Generation of Optimized Domain-Specific Operations

In previous work, we introduced a compiler-based algorithm for eliminating inter-iteration redundancies in array-based loop computations. This algorithm detects and transforms loops from ordinary programs using sophisticated analysis techniques. From that work we discovered that many of the codes amenable to our technique were concentrated in a few application-specific domains such as PDE solvers and image processing. Moreover, the loops in these particular codes exhibit a regularity or simplicity which can simplify the task of analyzing and optimizing them. We also discovered that these computations are often specified in the domain literature not as elaborate loop nests, but rather with simple matrices or other compact forms. In this talk, we discuss a prototype automatic program generation tool which allows the domain expert to specify computations in a simple and familiar way, while letting the tool generate the actual source code. By utilizing domain knowledge encoded in the specification, the tool generates optimized code by suppressing as many inter-iteration redundancies as possible. The result is a highly efficient program with little effort from the domain expert, and with no need for a programming or computer architecture expert to optimize the code.

I wonder how this would fit into Mint, especially since we used one of those stencil-based operations, a simple Gaussian blur, as benchmark example. Using eta-expansion as “the trick”, the staged generator might look exactly like the unstaged program.

But I definitely don’t have time to look at this right now.

Share
Posted in Mint | Leave a comment

Print This Post Print This Post  

Integrating the Habanero Java Race Detector into DrJava

Jarred, Vincent and the guys of the Habanero Java group are planning to add a race detector to the Habanero Java compiler adapter in DrJava. I won’t have much time to help them with this, but I gave them some pointers.

Adding a race detector pane

I would probably use a panel that is shown in the “Tabbed Panes” part at the bottom of DrJava. You could look at JUnitPanel (extending ErrorPanel, which has a list of errors with file-and-line location information) or at BreakpointsPanel (extending RegionsTreePanel, which has a tree of documents, each having line numbers in them).

Specialized handler for race condition runtime exceptions

Right now, we have special treatment for [cci lang=”java”]OutOfMemoryError[/cci] exceptions. This portion is in MainFrame.java:

[cc lang=”java”]else if (lastError.startsWith(“java.lang.OutOfMemoryError”)) {
askToIncreaseSlaveMaxHeap();
}[/cc]

I don’t think this is the perfect place to put it, and we should probably refactor the code at some point so it doesn’t fill up [cci lang=”java”]MainFrame[/cci] even more, but this is the simplest place to extend DrJava. That’s where you could display the race condition pane.

There is one problem: Since the exception is thrown in another JVM (interpreter JVM) and then passed to the JVM where the main DrJava IDE is running (main JVM), the exception would have to be serializable. Right now, we just pass a string, not the exception itself. Unless you want to change the current design, you probably have to put the file and line number information into the string and then parse it again in the IDE.

Compilation options for the Habanero Java compiler adapter

You can create a panel in the Preferences pane in ConfigFrame.java and add options in OptionConstants.java. Then, in
[cci lang=”java”]HjCompiler.transformHJCommand[/cci], you can check the state of those options, e.g. using
[cci lang=”java”]DrJava.getConfig().getSetting(HJ_USE_RACE_DETECTION)[/cci] or something like that, to create the appropriate command line.

Share
Posted in DrJava | Leave a comment

Print This Post Print This Post  

DrJava Listed in Overview of Java IDEs

DrJava was included in this overview of Java IDEs:

Dr. Java- This is a lightweight IDE geared towards students in introductory level classes, including the Advanced Placement Computer Science course. Dr. Java has support for evaluating snippets of code without compiling them. In addition, Dr. Java supports the AP Computer Science GridWorld API, having features to aid developers in getting it setup as well as some basic GridWorld tutorials.

One commenter even listed DrJava as his favorite. I agree, but I’ve probably made DrJava organically grow around me.

Share
Posted in DrJava | Leave a comment

Print This Post Print This Post  

DrJava Preferences Stored in Project Files

I told myself I wouldn’t work on DrJava anymore, but here I go again. I Implemented feature request 3081586, Store Preferences within Projects, mainly because this was something I had wanted for a long time (I kept going back and forth between indent levels of 2 and 4), and because Corky had requested the language level setting to be stored in project files. This feature request was more general than what he wanted, but I think it was what DrJava needed.

There now is an “Advanced” button on the “Project Properties” dialog that takes the user to a secondary window. In that window, the user can list (by name, using predictive input)
those preferences that should be saved in the project file.

Note that for simplicity, the actual values are still configured in the “Preferences” window (Edit menu). This list only names the preferences whose values should be stored in the project file when the project is saved, and restored when the project is loaded again.

By default and for new projects, the language level and the indent level are saved in the project file and restored upon loading of the project.

For existing projects, you can cause DrJava to store the language level in the project file by going to Project Properties, clicking the new “Advanced” button in the bottom left corner, pressing the “Add” button underneath the list, and entering “Language Level”. Once you press OK to add that preference to the list, and OK to close the “Advanced” window, and then “OK” to close the Project Properties window, DrJava will store the language level in the project file.

Now I can set the indent level to 2 for DrJava and to 4 for most other projects. So can you if you grab the latest weekly build of DrJava.

Share
Posted in DrJava | Leave a comment

Print This Post Print This Post  

Turing Completeness and the Halting Problem for Sexbots

Mathias: Now, a computer is Turing complete if and only if it can compute everything that can be computed with such a Turing machine, i.e. with a device that has a read/write tape and a finite state automaton. And that’s really it.

Friend: So the sex bot would have states. So why care if a sexbot is Turing complete?

Mathias: Because you want sex with a lot of variety. Not always just “in-out-in-out-done.

Friend: I guess.

Mathias: It’s still predictable (otherwise it wouldn’t be computable), but it’s a lot more difficult. In fact, you can’t even know before you start having sex if the sexbot will ever finish. You might be having sex forever. That’s called the “Sex Halting Problem.”

Friend: What?

Mathias: The only way to find out if the sexbot’s program will ever finish is to have sex with the sexbot, but that might take an eternity.

Friend: [cci]While (1) doSexyTimes()[/cci]. I am still confused as to why this matters.

Mathias: Maybe you want to make sure that you are done by the time your girlfriend comes home. With a Turing-complete sexbot, you generally can’t find that out before you start having sex.

Share
Posted in Uncategorized | Leave a comment

Print This Post Print This Post  

Working on a Recent Plane Trip

I just received two pictures from a recent plane trip. One of them even shows me diligently working on my MacBook and studying my quad-ruled paper notebook. You can see DrJava open on the MacBook.

Working on the plane

Working on the plane

On the plane. I've been flying a lot this year.

On the plane. I've been flying a lot this year.

Share
Posted in Pictures | 1 Comment

Print This Post Print This Post  

AdBlock Plus and Gmail, And Other Issues

I’m experiencing an AdBlock Plus problem in Gmail. At least now I’m sure it’s not a more severe display problem, because I’ve just witnessed it on a second machine. Both are Macs, though.

AdBlock Plus Problem in Gmail

AdBlock Plus Problem in Gmail

The columns for some emails are messed up. The :: and the checkbox on the very left of the marked row are missing, the title goes in the column where the star normally is, and that column is too narrow, of course.

Has someone else seen this? I don’t know AdBlock Plus well enough anymore to figure this out myself, so I just reported the issue. Let’s hope this gets fixed soon.

In other news, Mac OS 10.6 Snow Leopard is nice, but they still didn’t fix the problem of Java GUI programs, particularly when run in a JUnit suite, stealing the focus. Setting up Spaces does not help, which is very lame. I had to set up a second user account again and then do the Fast User Switching.

Also annoying is the fact that MacPorts doesn’t seem to have some of the programs I got used to in Fink, but Fink doesn’t have binaries for Snow Leopard yet… And dedicated keys to control keyboard illumination brightness? Is that really necessary?

Share
Posted in Ramblings | Leave a comment

Print This Post Print This Post  

Spam on the DrJava SourceForge Trackers

We’ve been getting tons of pharmaceutical spam on the DrJava trackers (bug reports, feature requests, support requests) today. Unfortunately, when it comes to limiting the amount of spam from automated bots, the only mechanism that SourceForge provides is requiring users to register for a SourceForge account.

I don’t like doing this, but at this point, it seems like it’s the only simple action we can take. There are more advanced “hosted apps” that can be used for bug tracking, but I have not evaluated any of them.

If you feel strongly that we should allow anonymous postings again, please let me know.

Share
Posted in DrJava | Leave a comment

Print This Post Print This Post  

Paging Stuff Back Into My Brain

I gave the second lecture as Corky’s substitute in COMP 311 today. We talked about object-oriented languages in general, and Java in particular.

I didn’t talk about the historical perspective on OO (slide 5), and I only mentioned multiple inheritance and prototype-based OO languages briefly. Other than that, I finished slides 1-7, i.e. including “Java Implementation I”. I also talked a bit about static and dynamic chains, how Java doesn’t have a static chain, and why.

I’m always happy when I get the opportunity to do a lecture.

Now I’m loading stuff back into my brain that I had paged out into swap space a few months ago…

Share
Posted in Concurrent Unit Testing, Teaching | Leave a comment

Print This Post Print This Post  

New Mint Release: r15952

I made a new release of Mint and DrJava with Mint yesterday: October 19, 2010 (r15952). The latest release is, as always, available from the Mint implementation page:

There were several bug fixes regarding assignment to variables declared as CodeFree, the places where SafeCode is required, treatment of type variables with bounds in escapes, and array types, which were erroneously printed as ‘[Lfoo/bar;’ or ‘[B’.

The version of DrJava with Mint is based on the current trunk (and therefore is newer than the updated stable release of DrJava that was recently made available).

(Re-posted from The Java Mint Blog.)

Share
Posted in Mint | Leave a comment

Print This Post Print This Post  

A Nice Monday

I had a very nice Monday today. Corky asked me to take over his lecture in COMP 311 today while he is at SPLASH/OOPSLA. I handed out the exam and reviewed the sample midterm. I’m quite happy about how the class period went.

I ran out of time towards the end, so I didn’t do the hand evaluation or parameter passing in detail, but I think I communicated the gist of it. I think on Wednesday I’ll ask if anyone has already taken the exam, and if not, review a bit more.

After that, I headed over to my customer meeting with the COMP 410 students. I was a bit late, and they apparently were hoping I hadn’t made it back from Europe yet, because they needed a few more days for their prototype.

And after that I went to yoga. I needed that hour. Now I’ll see if I can get to bed before it’s Tuesday.

Share
Posted in Teaching, Uncategorized | Leave a comment

Print This Post Print This Post