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  

Yes I Can, Says Android

When I use Android’s speech-to-text to enter my name, I get “Matt yes I can.” I like it!

Although I’m still looking for replacements of the incredibly shoddy SplashData applications SplashMoney and SplashID, which constantly crash on Android, I am very happy with my Android phone.

Share
Posted in Uncategorized | Leave a comment

Print This Post Print This Post  

DrJava Build and Release Instructions

As part of our knowledge (back) transfer, I wrote up these instructions for creating a fresh build of all parts of DrJava and then making a new release on SourceForge.

Note: Our build process is currently broken for Windows machines (see
“instructions below for building just DrJava”, step 6, “Make the
release and put it into Subversion”.)

  1. Check out trunk (svn co https://drjava.svn.sourceforge.net/svnroot/drjava/trunk), or if you have trunk checked out, update it.
  2. cd drjava
  3. ant clean jar
  4. cd ../platform
  5. export DRJAVA_JAR=../drjava/drjava.jar
  6. ant clean compile-??? jar

    Note: Which compile-??? targets you can run depends on the platform
    you are compiling on. You need to be on a Mac to run compile-mac and
    on Windows to run compile-windows. Since the compiled classes are
    stored in Subversion, you can always do

    ant clean jar

    to just get all the class files without recompiling.

  7. cp platform.jar ../drjava/lib
  8. cd ../plt
  9. ant clean test jar
  10. Copy the generated new plt.jar file over all other plt.jar files.
    This can be done using

    find .. -name plt.jar -not -samefile plt.jar | xargs -n 1 cp -v plt.jar

  11. cd ../dynamicjava
  12. ant clean test jar-base
  13. cp dynamicjava-base.jar ../drjava/lib
  14. cd ../javalanglevels
  15. ant clean test jar-base
  16. cp javalanglevels-base.jar ../drjava/lib
  17. cd ..
  18. Continue with the instructions below for building just DrJava, but not
    plt.jar, etc. from scrach.

Building the DrJava application (not the libraries) and making a new release:

  1. cd drjava
  2. Create the release locally. It’s a good idea to do this first, without touching Subversion or SourceForge. To create a development release:
    ant clean release-local
    To create a beta release:
    ant clean release-local-beta
    To create a stable release:
    ant clean release-local-stable
  3. This cleans, compiles, runs the unit tests, builds the jar, exe and
    Mac application, and it also generates the Javadoc and a zip file with
    source code.
  4. It makes sense to test the three different variants of DrJava: Run
    the jar on some platform, run the exe on Windows, and run the Mac
    application on a Mac, because sometimes one of them may be corrupted.
    This can has happened sometimes for the exe file when building on a
    Mac, or for the Mac application when building on Windows or Linux.
  5. ant clean
    This deletes the locally built release again.
  6. Make the release and put it into Subversion. Run one of:
    ant release
    ant release-beta
    ant release-stable

    You may want to add -Dtest-repeat=0 to the command line (e.g. ant
    -Dtest-repeat=0 release
    ). That tells Ant not to run the unit tests.
    You can leave it out, but we just ran the unit tests, so it should not
    be necessary to run them again.
    Note that this step may ask you for your SourceForge password if you
    have never committed code to Subversion from the computer you are
    working on.

  7. The build script will now create a “tag” of DrJava that will
    contain exactly the source code versions and libraries used to build
    this release of DrJava. This is useful in analyzing bugs that users
    report in a specific version.
  8. Make note of that tag. It should be something like this:
    drjava-20110205-r5425
  9. To upload files to SourceForge, we will follow this guide written by SourceForge. I find that using SFTP is the easiest.
  10. Log into SFTP. In the following command, replace <username> with your SourceForge username:
    sftp <username>,drjava@frs.sourceforge.net
    Example: sftp mgricken,drjava@frs.sourceforge.net
  11. On the SFTP server: cd /home/frs/project/d/dr/drjava
  12. If you are building a stable or beta release, type:
    cd "1. DrJava Stable Releases"
    If you are building a development release, type:
    cd "2. DrJava Development Releases"
  13. Create a directory with the name of the tag from step 8 above.
    Example: mkdir drjava-20110205-r5425
  14. Change into that directory.
    Example: cd drjava-20110205-r5425
  15. Upload the files. You can do that with the command:
    put <tag>*
    Example: put drjava-20110205-r5425*
  16. Exit SFTP:
    exit
  17. Browse to DrJava’s SourceForge site at
    http://sourceforge.net/projects/drjava/develop and log in.
  18. Click on the “Files” tab (or go to
    https://sourceforge.net/projects/drjava/files/).
  19. Click on 1. DrJava Stable Releases or 2. DrJava Development Releases, find the tag, and enter that directory. You should see the
    files you uploaded.
  20. Click on the (i) (Info) button next to the exe file, check the
    Windows checkbox, and press save.
    Click on the (i) (Info) button next to the Mac application, check the
    Mac checkbox, and press save.
    Click on the (i) (Info) button next to the jar file, check all the
    other checkboxes (except Windows and Mac), and press save.
    This step changes the default download on DrJava’s SourceForge page
    (in the “Download Now!” button on https://sourceforge.net/projects/drjava/). People downloading
    directly from the SourceForge page will start getting the new release.
  21. Prepare the release notes text file called readme.txt. I start
    with a template that looks like the one below. To determine the lists
    of new features and bug fixes, you can look up the revision number of
    the last release you’re comparing to, and then you can go through the
    Subversion log and look at the descriptions of the commits, which
    should hopefully be good enough to tell you what was done. Unless the
    last version was a stable release, I usually include a comparison to
    the last stable release as well, which is easy to create just by
    copying and pasting the lists from individual release notes together.


    Available for download at http://drjava.org  .
    
    DrJava is a lightweight programming environment for Java designed to
    foster test-driven software development. It includes an intelligent
    program editor, an interactions pane for evaluating program text, a
    source level debugger, and a unit testing tool.
    
    In addition to bug fixes, this  release
    includes a number of new features introduced after the last
     release:
    
    
    
    Note: Java 1.4 compatibility has been dropped. To use DrJava, you will
    need Java 5 or newer.
    
    
    New features since the last  release:
     - list of new features since the last beta/development release
    
    
    
    Bug fixes since last  release:
     - list of bug fixes since the last beta/development release
    
    
    
    New features since the last stable release:
     - list of new features since the last stable release
    
    
    
    Bug fixes since the last stable release:
     - list of bug fixes since the last stable release
    

  22. On the DrJava SourceForge page, upload the release notes into the
    new release’s folder. You can do that either using SFTP again or using
    the web upload by clicking on “Add File”. I just find that SFTP works
    better for uploading the multiple large files earlier in step 15.
  23. On the DrJava SourceForge page, hover over “Develop” and click on
    “News” (or go to https://sourceforge.net/news/?group_id=44253, but that link has changed frequently). Click on “Submit” and paste the contents of the readme.txt file into the “Details” part. In the “Subject” line, I usually put something like “DrJava Development
    Release 20110205-r5425”. Press “Submit”.
  24. Send an email to the following addresses: drjava@rice.edu,
    drjava-hackers@lists.sf.net, drjava-users@lists.sf.net
  25. I use the same text that was used in step 23 for the SourceForge news,
    but I let the following text precede the email:


    Dear DrJava Users:
    
    We have made a new <stable/beta/development> version available: <tag>
    
    You can download it from the DrJava website at http://drjava.org/
    or from SourceForge.net by following this link:
    
    <link>
    
    You receive this email because you have subscribed to a DrJava mailing list.
    

    Replace the <link> part with the link to the SourceForge page that has
    the files for this release, i.e. the website you navigated to in step
    19. Example: https://sourceforge.net/projects/drjava/files/2.%20DrJava%20Development%20Releases/drjava-20110205-r5425/

  26. SSH into CSnet as javaplt (e.g. ssh javaplt@finland.cs.rice.edu).
  27. cd ~/public_html/drjava
  28. Run the drjava-update-news script. This pulls the SourceForge news
    onto the DrJava website. Note that for now, this only happens on our
    CSnet mirror at http://www.cs.rice.edu/~javaplt/drjava/
    drjava-update-news
  29. Edit the LATEST_DEV_VERSION.TXT, LATEST_BETA_VERSION.TXT or
    LATEST_VERSION.TXT file, depending on whether you have a development,
    beta, or stable version. Put the new tag into the file. Make sure
    there is no newline at the end of the file!
  30. If you made a stable release, you will want to remove the download
    links for the beta and development releases. Edit main.shtml and
    change the line

    <!--#include virtual="beta.shtml"-->

    to

    <!--include virtual="beta.shtml"-->

    and

    <!--#include virtual="devrelease.shtml"-->

    to

    <!--include virtual="devrelease.shtml"-->

    If you made a beta release, you want the hash mark for the #include of
    the beta.shtml file, but not for the devrelease.shtml file. If you
    made a development release, you probably want the hash mark for the
    devrelease.shtml file, but not for the beta.shtml file.

  31. Do a similar thing as in step 29 for download.shtml. The
    corresponding lines are

    <!--include virtual="beta_long.shtml" -->

    and

    <!--include virtual="devrelease_long.shtml" -->
  32. Go to http://www.cs.rice.edu/~javaplt/drjava/ and check that the
    download buttons link to the right files, the ones that you have just
    released. It’s a good idea to download them all and run them, to make
    sure there were no upload errors.
  33. Delete backup files:
    rm *~
  34. Copy the website to the SourceForge server using the
    drjava-cs-to-sf script. Note that it may also update Javadocs, test
    coverage, and other files.
    drjava-cs-to-sf
  35. That’s it! Thanks for helping make DrJava even better.
Share
Posted in DrJava | Leave a comment

Print This Post Print This Post  

Firewall and Port Forwarding on a Netgear DGND3300v2?

My apt building was struck by lightning Monday afternoon, and that fried half the building, apparently. Power was off for a day, the elevator is broken, and it killed my DSL modem and an ethernet card, even though both were behind surge protectors and UPSes. I just got a DGND3300v2 DSL modem/router to replace the dead 2Wire HomePortal 2700, and I’m setting up my firewall.

Do I have to enter the IP address of the computer in the LAN manually? I use DHCP and the IP can change. The HomePortal allowed me to assign firewall rules to a MAC. The same problem occurs with port forwarding.

Is that not possible with the DGND3300v2?

PS: The lack of gigabit ethernet on a product of this price is a sore disappointment, too.

Update

IP addresses can be reserved for MACs under router login > LAN setup> address reservation.

Update 2

Except in the latest firmware, V2.1.00.48_1.00.48NA, you can’t. Address reservation doesn’t work because of a Netgear bug *sigh*

Share
Posted in Uncategorized | Leave a comment

Print This Post Print This Post  

Even More Android

I’ve noticed that SplashID crashes as well. I think I will try to find a replacement and than ask SplashData for a refund. $60 for this collection of fail is way too much.

Jorte is pretty nice as a calendar, but I still haven’t found one that allows me to enter time zones. Do Android users not travel?

On the other hand, Astrid is a pretty good task planner, and I think I’m getting the hang of Swype. I just wish the virtual keyboard were a little bigger. Using Swype is definitely faster than typing letter by letter, but the physical keyboard on the Palm Treo was better… at least before it broke. I should just get over it.

Share
Posted in Uncategorized | Leave a comment

Print This Post Print This Post  

New DrJava Development Release: drjava-20110205-r5425

We have made a new development release available: drjava-20110205-r5425. You can download it from the DrJava website or from SourceForge.

Available for download at http://drjava.org .

DrJava is a lightweight programming environment for Java designed to foster test-driven software development. It includes an intelligent program editor, an interactions pane for evaluating program text, a source level debugger, and a unit testing tool.

In addition to bug fixes, this development release includes a number of new features introduced after the last stable release:

The language level facility has been changed to consist of two language levels, Functional Java (corresponding to the old Intermediate level) and Full Java. The old files can still be compiled, but DrJava will ask if it should rename .dj0 and .dj1 to .dj and .dj2 files to .java.

DrJava’s compiler support has been improved, and DrJava now supports compiling files with file extensions other than .java, .dj, .dj0, .dj1, and .dj2. This includes support for Habanero Java .hj files, provided the Habanero Java compiler is installed.

DrJava preferences like indent level can now be stored on a per- project basis (see “Project Properties”, “Advanced”).

Note: Java 1.4 compatibility has been dropped. To use DrJava, you will
need Java 5 or newer.

New features since the last stable release:

  • refactored language levels
  • improved compiler support, including support for Habanero Java
  • The contents of the Compiler Errors pane can now be copied the clipboard.
  • DrJava preferences like indent level can now be stored on a per-project basis (see “Project Properties”, “Advanced”).

Bug fixes since last stable release:

  • Applet viewer not started in event thread anymore to avoid exception
  • Static type checking for primitive casts in Interactions pane
Share
Posted in DrJava | Leave a comment

Print This Post Print This Post  

More Android

I have found that SplashID is buggy too. It crashes every other time I start it. I guess it’s time to say goodbye to SplashData. They don’t have their act together anymore.

I found Jorte to be a pretty good calendar replacement, although I’m not happy with the way time zones are treated. What good is a calendar if I have to convert times in my head?

I do have my calendar items and contacts on my phone again now, so I feel less amputated now anymore.

The turn-by-turn navigation is pretty cool. It uses a lot of battery though, so I need to get a car charger.

I’m writing this using the Android WordPress app, by the way. It avoids having to scroll and zoom the website in the browser.

Share
Posted in Uncategorized | Leave a comment

Print This Post Print This Post  

Muscle memory + Gmail = Embarrassing

How embarrassing. Gmail’s auto-completion changed for me today because I merged contacts on my Google and phone accounts. I frequently forward emails to “me” to have them stored on my private email as well, but “me” wasn’t me anymore. Instead, all the emails that I sent went to someone else (mexxx@xxxx.xxx) today.

I desperately need to re-train my muscle memory. I didn’t notice this until just now, 10 hours after the auto-completion changed.

Share
Posted in Uncategorized | Leave a comment

Print This Post Print This Post