Java 7 for DrJava and Concutest

I worked on Java 7 support this weekend, and I’m almost done. I just discovered that Concutest is currently incompatible with Java 7, though, so I will need to disable the ConcJUnit option in DrJava when using Java 7. I also need to test on Mac and Linux.

I’ll try to finish this tonight so we can get a beta out. Or should we release a stable version without this code?

Fixing Concutest will take a bit longer, of course.

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

Print This Post Print This Post  

Yes, DrJava Works under Mac OS X 10.7 Lion

I just upgraded to Mac OS X 10.7, and DrJava works flawlessly. The one vague report that someone had filed therefore proved to be wrong.

When I started DrJava the first time, Mac OS X asked me if I wanted to
download a Java runtime environment. I said yes. The JRE was
downloaded and installed, and after that, DrJava opened.

I’m still not sure about Mac OS X Lion, but I continue to be excited about DrJava:

DrJava on Mac OS X Lion

DrJava on Mac OS X Lion

Share
Posted in DrJava | 2 Comments

Print This Post Print This Post  

Summer in Seattle

A radio station here in Seattle (I believe it KOMO News) had checked how many minutes of summer Seattle had so far in 2011. They defined summer as 80 degrees Fahrenheit (27 C) and no rain. Guess how many?

70 minutes.

When someone complained that 80 degrees is kind of warm, and that summer already begins earlier, they checked for 75 degrees F (24 C). How much time?

18 hours. Not even a full day.

But today definitely is summer. All of Seattle was at Alki Beach, it seemed. It looked like the Playa della Something in Mexico or Spain. I ran 3.5 miles slalom around people, but I must have done something to my left foot, because my ankle hurt pretty badly. And I mean that, because running 3.5 miles a day is a piece of cake by now.

Alki Beach in July 2011. Same amount of Space Needle, many more women in bikinis.

Alki Beach in July 2011. Same amount of Space Needle, many more women in bikinis.

Share
Posted in Pictures, Ramblings | Leave a comment

Print This Post Print This Post  

Does DrJava Work on Mac OS X Lion?

We were just informed of an entry on RoaringApps indicating that DrJava does not work on Mac OS X Lion.

Is that the case? We don’t know at this time. DrJava has always worked on previous versions of Mac OS X, but we haven’t had the opportunity to test it on Mac OS X Lion. If you have Mac OS X Lion, could you please download and run DrJava and corroborate the information?

Thanks!

Update

Yes, it does work! DrJava works flawlessly in Mac OS X 10.7 Lion.

Share
Posted in DrJava | 1 Comment

Print This Post Print This Post  

Demonstration: DrHJ – the cure to your Multicore Programming Woes

DrHJ – the cure to your Multicore Programming Woes

SPLASH 2011

DrHJ extends DrJava with support for the pedagogic Habanero-Java language derived from X10, and used to teach parallel programming at the sophomore level. The demonstration will show how a rich and powerful set of parallel programming capabilities can be easily introduced to anyone familiar with the basics of sequential programming in Java.

Share
Posted in Publications | Leave a comment

Print This Post Print This Post  

Paper: DrHJ – a lightweight pedagogic IDE for Habanero Java

DrHJ – a lightweight pedagogic IDE for Habanero Java

9th International Conference on the Principles and Practice of Programming in Java (PPPJ 2011)

The Java language and runtime environment has had a profound worldwide impact on computer software since its introduction nearly two decades ago. It has enabled the creation of a rich ecosystem of libraries, frameworks, and tools that promises to deliver significant value for many years to come. Consequently, a wide range of Interactive Development Environments (IDEs) have emerged to increase the productivity of Java programmers. They vary in functionality based on the expertise level assumed for their target user base. The Eclipse Java Development Tools (JDT) project offers a rich set of power tools for experienced programmers, but can be harder for novice programmers to set up and use. In contrast, IDEs such as DrJava and BlueJ have been developed primarily for use in introductory programming courses.

In this tool demonstration paper, we summarize the DrHJ tool which will be demonstrated at the conference. In anticipation of the need for introducing parallelism earlier in the Computer Science curriculum, DrHJ extends DrJava with support for the pedagogic Habanero Java (HJ) parallel programming language that was derived from the earlier Java-based definition of the X10 language. DrHJ builds on our past experiences at Rice with developing the DrJava IDE and the HJ language. DrJava is used by many universities world-wide, and has been downloaded over 1.1 million times since its inception in 2002.

Share
Posted in Publications | Leave a comment

Print This Post Print This Post  

Two DrJava Tutorials on YouTube

On YouTube, I found two tutorial series that describe DrJava:

  1. DrJava – Easy to use java editor (We will use this in our Java Tutorial)
  2. DrJava – The “Interaction Pane” Overview

and

  1. Introductory tour of DrJava
  2. 2nd DrJava Tutorial – Using Interactions Pane to Investigate How Java Handles Numbers
  3. 3rd Tutorial – How to write a java program finding the area of a circle

Neither of them covers very advanced topics, but I’m always happy to hear that beginners choose DrJava. It’s the primary audience for our IDE.

Share
Posted in DrJava | Leave a comment

Print This Post Print This Post  

Dell Repair Fail

The Dell technician here to repair the Ethernet port on my media computer broke the rest of the computer! The fan doesn’t spin anymore, the PC doesn’t boot up anymore, and the surround sound system makes a pulsing sound when it’s plugged into the speaker port on the computer… And the guy cut himself on two fingers and needed bandages.

Total fail. I should have done this myself, but that would void the warranty.

Update

Apparently the replacement motherboard that Dell gave the technician was broken worse than mine was. Now the technician put the one I had back in, but the hard drive isn’t working yet. But at least it’s booting again… Thanks, Dell, for the collossal waste of time.

Update

The repair guy showed up again, with another motherboard, and this time everything worked. Thanks!

Share
Posted in Ramblings | Leave a comment

Print This Post Print This Post  

PPPJ 2011 Tool Paper Accepted

A while ago I worked on a paper together with Vivek, Corky, Vincent, Jared and Raghavan at Rice. We still have to make some final revisions, but I’m happy to report that our tool paper “DrHJ — a lightweight pedagogic IDE for Habanero Java” has been accepted to PPPJ 2011 in Denmark.

Share
Posted in DrJava, Research | Leave a comment

Print This Post Print This Post  

Perforce Migration

Ever since my internship at National Instruments, I’ve been using Perforce as version control system. Thanks to their evaluation license, which is limited to two users, this has been completely free for me. I’m glad that I stuck with Perforce, because I am using it at work now too.

While at Rice, I had the Perforce server running on my office machine, a RHEL4 server. I don’t have a Linux box at home, just two Windows machines. To migrate the Perforce server from Linux to Windows, I had to run the p4migrate script to find name collisions, since Linux is case-sensitive and Windows is case-insensitive. There were a handful of different files that would have mapped to the same file on Windows. Perforce customer service has been great, even for a user of the free version like me. Thanks again!

Running the Perforce server on a Linux machine made it really easy to run scripts as part of Perforce triggers. I just ssh into the same machine and run a script:

[cc]
# See ‘p4 help triggers’ for more information about triggers.

Triggers:
run-RiceMBS.to.web change-commit //depot/DP4MBS/RiceMBS.student/*.jar “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-and-update-RiceMBS.sh %changelist% RiceMBS.to.web”
run-RiceMBS.to.202web change-commit //depot/DP4MBS/RiceMBS.student/*.jar “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-and-update-RiceMBS-20.sh %changelist% RiceMBS.to.202web”
run-MSThesis.to.web1 change-commit //depot/Concutest/MSThesis/pdf/thesis.pdf “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-branch.sh %changelist% MSThesis.to.web”
run-MSThesis.to.web2 change-commit //depot/Concutest/MSThesis.defense/MSThesis-Ricken.ppt “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-branch.sh %changelist% MSThesis.to.web”
run-COMP600MS.to.web change-commit //depot/Concutest/MSThesis.defense/COMP600/COMP600-Ricken.ppt “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-branch.sh %changelist% comp600.to.web”
run-COMP600PPPJ2009.to.web change-commit //depot/Concutest/PPPJ2009/presentation/COMP600/COMP600-Ricken-2009-08-24.ppt “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-branch.sh %changelist% comp600.to.web”
run-COMP600Mint.to.web change-commit //depot/Mint/COMP600/presentation/COMP600-Ricken-Mint-2010-02-08.* “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-branch.sh %changelist% comp600.to.web”
run-RCSC20071004.to.web change-commit //depot/Concutest/MSThesis.defense/RCSC-20071004/… “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-branch.sh %changelist% rcsc-20071004.to.web”
run-Concutest-JUnit.to.web2 change-commit //depot/Concutest/concJUnit/jars/*.jar “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-branch.sh %changelist% Concutest-JUnit.to.web2”
run-Kooprey.to.web change-commit //depot/DP4RDP/Kooprey.zip “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-branch.sh %changelist% Kooprey.to.web”
run-TempCalc.to.TempAssign change-commit //depot/OOPBook/TempCalculator/… “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-branch.sh %changelist% TempCalc.to.TempAssign”
run-TempCalc.to.SIGCSE06 change-commit //depot/OOPBook/TempCalculator/… “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-branch.sh %changelist% TempCalc.to.SIGCSE06”
run-SIGCSE06.to.web change-commit //depot/SIGCSE06/TempCalculator/webpage/… “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-branch.sh %changelist% SIGCSE06.to.web”
run-TeachJava2004.to.web1 change-commit “//depot/DP4MBS/TeachJava Presentation/*.zip” “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-branch.sh %changelist% TeachJava2004.to.web”
run-TeachJava2004.to.web2 change-commit “//depot/DP4MBS/TeachJava Presentation/*public.ppt” “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-branch.sh %changelist% TeachJava2004.to.web”
run-TeachJava2005.to.web1 change-commit “//depot/DP4MBS/TeachJava 2005 Presentation/*” “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-branch.sh %changelist% TeachJava2005.to.web”
run-TeachJava2005.to.web2 change-commit “//depot/DP4MBS/TeachJava 2005 Presentation/demos/*” “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-branch.sh %changelist% TeachJava2005.to.web”
run-TempAssign.to.web1 change-commit //depot/OOPBook/TemperatureAssignment/*.html “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-branch.sh %changelist% TempAssign.to.web”
run-TempAssign.to.web2 change-commit //depot/OOPBook/TemperatureAssignment/handout/… “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-branch.sh %changelist% TempAssign.to.web”
run-TempAssign.to.web3 change-commit //depot/OOPBook/TemperatureAssignment/solutions/… “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-branch.sh %changelist% TempAssign.to.web”
run-TempAssign.to.web4 change-commit //depot/OOPBook/TemperatureAssignment/noApplets/TempCalc.pdf “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-branch.sh %changelist% TempAssign.to.web”
run-VMInitPaper.to.web1 change-commit “//depot/Concutest/vmSyncPoints/Synchronization During Java VM Initialization and Termination.pdf” “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-branch.sh %changelist% VMInitPaper.to.web”
run-VMInitPaper.to.web2 change-commit //depot/Concutest/vmSyncPoints/*.log “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-branch.sh %changelist% VMInitPaper.to.web”
run-laptjavac.to.web change-commit //depot/Concutest/laptjavac/jars/*.jar “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-branch.sh %changelist% laptjavac.to.web”
run-tcSubtypingPaper.to.web change-commit //depot/Concutest/tcSubtyping/tcSubtyping.pdf “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-branch.sh %changelist% tcSubtypingPaper.to.web”
run-tcrt.to.web1 change-commit //depot/Concutest/ClassLoader/built/tcrt.jar “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-branch.sh %changelist% tcrt.to.web”
run-tcrt.to.web2 change-commit //depot/Concutest/ClassLoader/built/tclib.jar “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-branch.sh %changelist% tcrt.to.web”
run-tcrt.to.web3 change-commit //depot/Concutest/ClassLoader/built/tcrt.javadoc.jar “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-branch.sh %changelist% tcrt.to.web”
run-tcrt.to.web4 change-commit //depot/Concutest/ClassLoader/built/tclib.javadoc.jar “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-branch.sh %changelist% tcrt.to.web”
run-update-tc-javadoc change-commit //depot/Concutest/ClassLoader/built/tc*.javadoc.jar “/usr/bin/ssh mgricken@finland.cs.rice.edu /home/mgricken/bin/update-tc-javadoc”
run-subannot-to-xajavac change-commit //depot/Concutest/ClassLoader/built/subannot.jar “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-branch.sh %changelist% subannot.to.xajavac”
run-xajavac.to.web change-commit //depot/Concutest/xajavac/jars/*.jar “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-and-update-xajavac.sh %changelist% xajavac.to.web”
run-subannot-to-xajavac-web change-commit //depot/Concutest/ClassLoader/built/subannot.jar “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-and-update-xajavac.sh %changelist% subannot.to.xajavac.web”
run-javacredir.to.web change-commit //depot/Misc/JavaCRedirector/* “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-branch.sh %changelist% javacredir.to.web”
run-xajavac.to.ClassLoader change-commit //depot/Concutest/xajavac/jars/xajavac.jar “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-branch.sh %changelist% xajavac.to.ClassLoader”
run-ant-xajavac.to.ClassLoader change-commit //depot/Concutest/xajavac/jars/ant-xajavac.jar “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-branch.sh %changelist% ant-xajavac.to.ClassLoader”
run-ant-xajavac.to.web change-commit //depot/Concutest/xajavac/jars/ant-xajavac.jar “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-branch.sh %changelist% ant-xajavac.to.web”
run-ant-xajavac.to.web change-commit //depot/Concutest/xajavac/xajavac-apache-ant-1.7.0/src/main/org/apache/tools/ant/taskdefs/compilers/Xajavac.java “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-branch.sh %changelist% ant-xajavac.to.web”
run-617seminar.to.web change-commit //depot/Concutest/seminar/… “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-branch.sh %changelist% 617seminar.to.web”
run-617seminar.to.web2 change-commit //depot/Concutest/seminar/… “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-branch.sh %changelist% 617seminar.to.web2”
run-resume.to.superscalar change-commit //web/mgricken.cs/tmp/resume* “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-branch.sh %changelist% resume-to-superscalar”
run-resume.to.owlnet change-commit //web/mgricken.cs/tmp/resume* “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-branch.sh %changelist% resume-to-owlnet”
run-cv.to.superscalar change-commit //web/mgricken.cs/tmp/cv* “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-branch.sh %changelist% resume-to-superscalar”
run-cv.to.owlnet change-commit //web/mgricken.cs/tmp/cv* “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-branch.sh %changelist% resume-to-owlnet”
run-references.to.superscalar change-commit //web/mgricken.cs/tmp/references* “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-branch.sh %changelist% resume-to-superscalar”
run-references.to.owlnet change-commit //web/mgricken.cs/tmp/references* “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-branch.sh %changelist% resume-to-owlnet”
run-concjunitrt-ClassLoader-to-concjunit change-commit //depot/Concutest/ClassLoader/built/concjunitrt.jar “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-branch.sh %changelist% concjunitrt-ClassLoader-to-concjunit”
run-SIGCSE2010.to.web change-commit //depot/Concutest/SIGCSE2010/pdf/SIGCSE2010-Ricken-Test-First-Java-Concurrency-for-the-Classroom.pdf “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-branch.sh %changelist% SIGCSE2010.to.web”
run-SIGCSE2010.to.web2 change-commit //depot/Concutest/SIGCSE2010/assignment/sigcse2010-java-concurrency.zip “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-branch.sh %changelist% SIGCSE2010.to.web”
run-SIGCSE2010.to.web3 change-commit //depot/Concutest/SIGCSE2010/presentation/SIGCSE2010-Ricken-Test-First-Java-Concurrency-for-the-Classroom-2010-03-12.ppt “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-branch.sh %changelist% SIGCSE2010.to.web”
run-TWS.to.web change-commit //depot/ThesisWritingSeminar/talk/TWS-Ricken-Concutest-2010-02-25.ppt “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-branch.sh %changelist% TWS.to.web”
run-MintPurdue.to.web change-commit //depot/Mint/COMP600/purdue/Purdue-Ricken-Mint-2010-03-15.* “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-branch.sh %changelist% comp600.mint.purdue.to.web”
run-RiceResearchMixer2010.to.web change-commit //depot/Misc/Rice-grad-undergrad-research-mixer-2010/research-mixer-2010-ricken-poster-34-b.pdf “/usr/bin/ssh mgricken@finland.cs.rice.edu /local/mgricken/p4depot/scripts/integrate-branch.sh %changelist% RiceResearchMixer2010.to.web”
[/cc]

I haven’t migrated these scripts yet. I do run Cygwin on my Windows machines, of course, and I could set up sshd on them, but I’m wondering if that is still the right thing to do.

Furthermore, I really wanted to install the Perforce server on vector, the Pentium 3 machine I got over 10 years ago. Unfortunately, one of the hard drives crapped out again, and it’s a PATA drive. All drives are PATA drives. I think it may be time to retire vector.

I’m considering buying a new i7 desktop, which will become scalar, and then making the current scalar, my Core 2 Duo desktop, the new vector. But perhaps I should install Linux on vector then? What distribution? Ubuntu?

Many questions, and of course only a little time on weekends to do it.

Share
Posted in Graduate School, Ramblings | 1 Comment

Print This Post Print This Post  

Eclipse Has Messed with My Shortcut-fu for DrJava

Working with Eclipse for nearly half a year has definitely messed with my shortcut-fu for DrJava. I keep pressing the wrong buttons now:

FunctionEclipseDrJava
Go to class under cursorF3F6
Go to classCtrl-Shift-TCtrl-Shift-G
Run unit testsF11 / Ctrl-F11Ctrl-Shift-T
Find nextCtrl-KF3

Very confusing indeed.

I decided to pick up working on this file I/O bug in DrJava again, though, and I verified that the font dialog in Windows 7 is verifiable problematic.

Share
Posted in DrJava | Leave a comment

Print This Post Print This Post  

Another One

A little bit more self-indulgence must be allowed, right?

Rice Diploma - Doctor of Philosophy

Share
Posted in Pictures | Leave a comment

Print This Post Print This Post  

Three Old Men

Three old men, three doctors. I have therefore aged the photo accordingly.

Three Doctors

Share
Posted in Graduate School, Pictures | Leave a comment

Print This Post Print This Post  

Working on Yet Another Flight

Economy class seat + first class notebook = not enough space to put the paper down. We’ll see if this work pays off.

Working on yet another flight.

Share
Posted in Pictures | 2 Comments

Print This Post Print This Post  

Upper Bound

According to Nature, about 37,000 PhDs are awarded annually.

If there were that many degree recipients during the last 100 years (and there weren’t), and if all of them are still alive (they aren’t), then there’d be 3.7 million people with a PhD.

As an upper bound, that’s a quite small number. Or, inversely, we constitute less than about 0.05% of the world population.

Share
Posted in Graduate School, Ramblings | Leave a comment

Print This Post Print This Post  

All Done

My time in graduate school is over. A friend just turned my dissertation in for me. Dr. Mathias Ricken is done.

I had a great time. Thanks to everyone who helped.

Share
Posted in Graduate School | Leave a comment

Print This Post Print This Post  

HengeDock Broke

I really like my MacBook Pro. I bought it to make finishing my thesis more enjoyable, and I’ve got to say, it worked. A couple of weeks ago, when I finished the last couple of chapters, I realized how nice it nonetheless is to hook the MacBook Pro up to a real monitor.

After that, I looked around for docking stations, and unfortunately, there aren’t many. The HengeDock seemed nice enough, though, so I ordered one.

The HengeDock arrived today. It was nicely packaged in a style that matches that of Apple, and it came with all the cables except for the Mini DisplayPort connector and the power adapter, which is understandable, those cost $30 and $80.

I began to feed the cables through the holes on the bottom, attached them to my notebook, and then attempted to insert it into the dock. Unfortunately, this is quite difficult. It took me a very long time to get them all lined up again with the holes on the bottom of the dock.

Once that was done, I struggled with lining up the cables so all of them make a connection at the same time, Most of the time, the power adapter couldn’t connect. Finally, I got that done, and I could actually work on a real monitor.

Unfortunately, when I pulled the MacBook Pro out of the dock, the Mini DisplayPort adapter came along. So I re-aligned everything and tightened the screws some more.

This is where the HengeDock has real problems. There are competing concerns of keeping the connectors in place and not breaking the thin pieces of plastic at the bottom. In the end, neither happened. The plastic broke and the connector still moved around.

Regrettably, I can’t recommend the HengeDock. It’s going back to the manufacturer.

Share
Posted in Ramblings, Uncategorized | 1 Comment

Print This Post Print This Post  

PhD Thesis: A Framework for Testing Concurrent Programs

A Framework for Testing Concurrent Programs

Rice University

A Framework for Testing Concurrent Programs
by
Mathias Guenter Ricken

A thesis submitted
in partial fulfillment of the
requirements for the degree

Doctor of Philosophy

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, operating systems, and compiler optimizations 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  

Excel and Unix

This morning, I spent about two hours analyzing log files and entering the results into an Excel spreadsheet. Excel decided to make my file 105 MB in size and then crashed.

Tonight, I replaced myself with a very small shell script. Instead of looking at each file individually, I simply used grep, sort and uniq:

% grep -o "Iteration 10" RSTestOne_normal_*.txt | sort|uniq -c
   3188 RSTestOne_normal_Dell9200Core2Duo_20110210-224947.txt:Iteration 10
     94 RSTestOne_normal_MacBookPro_20110118-102839.txt:Iteration 10
    219 RSTestOne_normal_MacBookPro_20110119-143932.txt:Iteration 10
    232 RSTestOne_normal_MacBookPro_20110124-155633.txt:Iteration 10
    227 RSTestOne_normal_MacBookPro_20110207-155452.txt:Iteration 10
    233 RSTestOne_normal_MacBookPro_20110210-170206.txt:Iteration 10
     98 RSTestOne_normal_MacBook_20110120-230432.txt:Iteration 10
     98 RSTestOne_normal_MacBook_20110218-164521.txt:Iteration 10
    316 RSTestOne_normal_MacBook_20110220-044628.txt:Iteration 10
    314 RSTestOne_normal_MacBook_20110221-055041.txt:Iteration 10
Share
Posted in Ramblings | Leave a comment

Print This Post Print This Post  

DrJava Is Virus-Free

Today, Ian Barland informed me that someone on the AP-CS mailing list believed he found a virus in DrJava. Let me reassure you, if you download from drjava.org or SourceForge, our software is virus-free. We build on Linux or Mac systems and only test on Windows, which makes a virus infection even less likely.

Our software has also been independently certified as clean by hosting
providers such as DowloadRoute, DoDownload,
GearDownload,
and DownloadAtlas. We even got this clunky award images:

DrJava download

Safe DrJava file

DrJava is clean!
DrJava Editor's Choice
DrJava 20100913-r5387 is 100% clean

I also just commissioned an online virus scan of the latest DrJava development release, drjava-20110205-r5425, using VirusTotal, a free service that uses over 30 different anti-malware products, and our software came out clean. Here are the reports for the exe file (exe file directly downloaded from SourceForge), the jar file (jar file directly downloaded from SourceForge), and the Mac application (Mac application directly downloaded from SourceForge).

Not that I ever had a doubt, but DrJava is virus-free.

I would be interested in seeing more information about this virus
infection report, like what virus scanner was used, what virus was
reported, and where the user downloaded the file.

I’m glad Ian brought this to our attention. We need to take even a false positive seriously.

Share
Posted in DrJava | Leave a comment

Print This Post Print This Post