Hurricane Alex

Hurricane Alex, the first hurricane of the 2010 season, is predicted to make landfall south of the US-Mexico border. Still, it’s a reminder to stock up and start paying attention again. And to realize that, nearly two years after Ike, Houston still hasn’t recovered completely.

Hurricane Alex, June 29, 2010 Prediction

Hurricane Alex, June 29, 2010 Prediction

Here are some resources and pieces of information:

  • From the Office of International Students and Scholars (OISS) blog:

    Only those graduate students with housing agreements at the Rice Graduate Apartments or the Rice Village Apartments will be offered on-campus shelter.

    This policy is identical to that of 2009 and the 2008 season that brought us Ike. I still think it’s wrong and a real shame, but at least the policy is being communicated well in advance, unlike in 2008, when the hurricane was so close that Rice’s late announcement prevented graduate students from making other arrangements.

  • Evacuation ZIP codes from the City of Houston. Please do not evacuate the city unless your zip code has been called up for evacuation. In 2005, during hurricane Rita, only three people in Texas died because of the hurricane, but there were 113 indirect casualties caused mainly by the evacuation.
  • Again, from the OISS blog:

    Things you should have available:

    • Three-day supply of nonperishable food and non-electric can opener.
    • Three-day supply of water (one gallon of water per person, per day).
    • Portable, battery-powered radio or television, and extra batteries.
    • Flashlight and extra batteries.
    • First aid kit and manual.
    • Sanitation and hygiene items (hand sanitizer, moist towelettes, and toilet paper).
    • Matches in waterproof container.
    • Extra clothing and blankets.
    • Kitchen accessories and cooking utensils.
    • Photocopies and originals of identification and credit cards (keep ALL immigration documents in Ziplock bags to keep them from water damage.)
    • Cash and coins.
    • Special needs items such as prescription medications, eye glasses, contact lens solution, and hearing aid batteries.
    • Items for infants, such as formula, diapers, bottles, and pacifiers.
    • Tools, pet supplies, a map of the local area, and other items to meet your unique family needs.
  • Keep in mind that your refrigerator and freezer may be out for days or weeks. Frozen or fresh food won’t help you for very long. Don’t rely on frozen pizza or microwave meals, for example. Canned food is best. If the power goes out, eat your perishable and frozen food first.
  • Cordless phones need electricity to run. Cell phones need to be charged, and after a hurricane, the cell phone networks are often damaged, or the demand is higher than the networks’ capacities. Plain, old wired land line phones are the best.
  • After a while, water needs to be pumped by electricity, so there may be no water pressure. As long as you still have water, you can flush a toilet by using a bucket to quickly pour in enough water, but you don’t want to waste your waster. You don’t have to flush every time you use the toilet.
  • If you have to resort to cannibalism, eat the athletes first. Supposedly they taste the best.
Share
Posted in Uncategorized | Leave a comment

Print This Post Print This Post  

No Nifty Assignment for the Educators Symposium

I started writing too late and I discovered I still have some strange source of nondeterminism in my supposedly deterministic single-threaded application, so I won’t be submitting a Nifty Assignment to the Educators Symposium at OOPSLA/SPLASH this year.

Too bad. But maybe I’ll have enough together for the next SIGCSE. Paper submissions are due September 10, 2010.

Share
Posted in Concurrent Unit Testing | Leave a comment

Print This Post Print This Post  

New DrJava Instance Feature

In response to Dung’s problems getting multiple DrJava instances started on MacOS 10.5+, I have added a feature to the latest weekly build of DrJava.

As of revision 5301, there is a “New DrJava Instance…” menu item in the Tools/Advenced menu.

Share
Posted in DrJava | Leave a comment

Print This Post Print This Post  

Useful Google Query to Find DrJava User Sites

I just realized that I can just specify the top-level domain for the “site:” option in Google search queries. That allows me to search for DrJava on all .edu domains:

drjava site:.edu

I have already found a few more user sites that I need to add: Purdue, Princeton, University of Illinois-Chicago, Vassar College, Case Western Reserve, Austin Community College, Wellesley College, Carnegie Mellon, Denison University, Lehigh University, California State University-Northridge, University of Massachusetts-Boston, University of Northern Iowa, and so on.

There are quite frankly too many to list them all. Way to go, DrJava!

Share
Posted in DrJava | Leave a comment

Print This Post Print This Post  

DrJava at UT San Antonio

At today’s JavaPLT/Habanero group meeting, Vivek mentioned that DrJava was used at UT-San Antonio as well. I added it to DrJava’s user sites.

Share
Posted in DrJava | Leave a comment

Print This Post Print This Post  

Multiple DrJava Instances on Mac OS X

Dung Nguyen and I just noticed that double-clicking on the application (or on the jar file) doesn’t bring up a new instance on his Mac (OS X 10.6). It does so on mine (OS X 10.4).

In the end, we started DrJava from the command line, and that worked. I would still like to find out what the difference is. Does OS X 10.5 already behave like this? Is there some setting that governs this behavior?

If you use a Mac, could you please try to start more than one instance of DrJava from the Finder and report back?

Share
Posted in DrJava | 3 Comments

Print This Post Print This Post  

Dull Boy

Two-hour code tests on a Saturday make Mathias a dull boy.
Two-hour code tests on a Saturday make Mathias a dull boy.
Two-hour code tests on a Saturday make Mathias a dull boy.

Especially when they start half an hour late.

Share
Posted in Ramblings | Leave a comment

Print This Post Print This Post  

Upgrade to WordPress 3.0

I just did an upgrade to WordPress 3.0, and I also gave the site a small face lift. The new default theme, Twenty Ten, actually looks quite nice.

Everything seems to be working, but if you notice any problems, please let me know.

Share
Posted in Uncategorized | Leave a comment

Print This Post Print This Post  

Home after Lots of Traveling

I’m finally home again for a bit, after a lot of traveling: During the last month and a half, I’d slept in my own bed for only eight nights.

Share
Posted in Pictures, Uncategorized | Leave a comment

Print This Post Print This Post  

PLDI 2010 Was Great Fun

PLDI 2010 in Toronto is over, and I have to say it was great fun. I met some old friends again, like Gregory and Luke, chatted with old acquaintances, and made many new connections.

There was concurrency and parallelism everywhere, just like at SIGCSE earlier this year, but perhaps without as much panic (“We have no idea how to teach this!”).

I wish I had been up for more even more socializing, but for my kind of personality, talking to people is work. I still enjoyed the conference tremendously.

Share
Posted in Mint, Pictures, Ramblings | Leave a comment

Print This Post Print This Post  

PLDI Talk Went Well

Eddy did a great job with the Mint talk at PLDI 2010 here in Toronto. Congratulations (in more than one way), Eddy! And thank you very much for the repeated shout-out to me in the audience.

The slides for the talk have become much cleaner over the last few days. We will make them available on the Java Mint website soon.

Eddy Presenting Mint at PLDI 2010

Eddy Presenting Mint at PLDI 2010

Share
Posted in Mint, Pictures | Leave a comment

Print This Post Print This Post  

At PLDI 2010

I’m at PLDI right now. Toronto is nice, the tutorials on Sunday were great, and so were most of the paper sessions. The downsides are the lack of outlets in the conference rooms, and the virtually complete lack of WLAN in the entire hotel (there is wired LAN in the hotel rooms).

In the evenings, I’ve been profiling DrJava to find out why our DrJava tests on Hudson was thrashing so much. I noticed that [cc lang=”java” inline=”true”]MainFrameTest[/cc] was currently using about 650 MB or heap space. No wonder our 512 MB server had trouble. I couldn’t really tell what was going on. YourKit really only showed me that there were lots of [cc lang=”java” inline=”true”]HashMap.Entry[/cc] instances being created. They seemed to have something to do with tables and the Preferences window.

I checked out several old revisions, going as far back as 4694 from the end of 2008. Its [cc lang=”java” inline=”true”]MainFrameTest[/cc] needed only about 300 MB. Through divide and conquer, I realized that the switch from [cc lang=”java” inline=”true”]JList[/cc] to [cc lang=”java” inline=”true”]JTable[/cc] for [cc lang=”java” inline=”true”]Vector*OptionComponents[/cc] added a lot of bloat, at least in the tests. This was most dramatic for the [cc lang=”java” inline=”true”]VectorKeyStrokeOptionComponents[/cc]

I started working on rolling the changes for keystrokes back. I was able to reduce memory consumption to about 400 MB. but the list-based GUI is just so ugly compared to the newer tables.

Fortunately, just before I had left for PLDI I had asked IT to add more swap space to our Hudson server, and that made the whole problem a non-issue: What took about two hours when Hudson was thrashing now takes less than 15 minutes.

I don’t think I’ll commit these changes. I’ll just file it under “can be done if necessary.”

Share
Posted in DrJava, Ramblings | 2 Comments

Print This Post Print This Post  

Hudson Server Swapping Itself to Death

After fixing the DrJava unit tests that failed and before heading to PLDI tomorrow, I thought I’d start up our Hudson server again. Unfortunately, it pretty quickly starts swapping itself to death. I don’t know what changed. Did our memory consumption increase so much? I have a hard time believing that. Did something in Hudson change? I’m not getting an OutOfMemoryError, though, either.

I also noticed that denmark.cs, our server, only has 512 MB RAM. That is pitiful, of course, so perhaps I should add some more memory. But how sensible is it to spend $50 for 2x1GB of DDR2 memory for a Pentium 4 system?

On another note, also related to hardware, my desktop at home greeted me with a crash “due to a thermal event” this morning. Whenever I had watched the temperature readings of the CPU, they were very low, never above 50 C, but maybe I do need to reapply the thermal grease. Ugh…. and I’m so busy.

Share
Posted in DrJava, Ramblings | 1 Comment

Print This Post Print This Post  

Not a Memory Leak, But Not Finalized?

I’ve been trying to fix a memory leak in DrJava today. I found the reproducible memory leak quite quickly: When I added the right margin line feature, I added option listeners that change the color and position of the right margin line in the definitions panes when the preferences are changed. These listeners have kept references to the definitions panes they needed to update. Now I remove the listeners again when a pane is closed.

I still have a unit test failure, though, that happens about once or twice per ten runs. I don’t think it’s a memory leak, because when I dump the heap and run the Object Query Language (OQL) query

select d.creationContext.toString()
from edu.rice.cs.drjava.model.DefaultGlobalModel$ConcreteOpenDefDoc d

I get as result the following output:

java.lang.RuntimeException: new ConcreteOpenDefDoc
at edu.rice.cs.drjava.model.DefaultGlobalModel$ConcreteOpenDefDoc.(DefaultGlobalModel.java:467)
at edu.rice.cs.drjava.model.DefaultGlobalModel._createOpenDefinitionsDocument(DefaultGlobalModel.java:639)
at edu.rice.cs.drjava.model.DefaultGlobalModel._createOpenDefinitionsDocument(DefaultGlobalModel.java:102)
at edu.rice.cs.drjava.model.AbstractGlobalModel.newFile(AbstractGlobalModel.java:1151)
at edu.rice.cs.drjava.model.AbstractGlobalModel.newFile(AbstractGlobalModel.java:1141)
at edu.rice.cs.drjava.model.AbstractGlobalModel._ensureNotEmpty(AbstractGlobalModel.java:4121)
at edu.rice.cs.drjava.model.AbstractGlobalModel._init(AbstractGlobalModel.java:359)
at edu.rice.cs.drjava.model.AbstractGlobalModel.(AbstractGlobalModel.java:306)
at edu.rice.cs.drjava.model.DefaultGlobalModel.(DefaultGlobalModel.java:191)
at edu.rice.cs.drjava.ui.MainFrame$157.run(MainFrame.java:3014)
at edu.rice.cs.util.swing.Utilities.invokeAndWait(Utilities.java:70)
at edu.rice.cs.drjava.ui.MainFrame.(MainFrame.java:3006)
at edu.rice.cs.drjava.ui.DefinitionsPaneMemoryLeakTest$1.run(DefinitionsPaneMemoryLeakTest.java:81)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:199)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
----
java.lang.RuntimeException: new ConcreteOpenDefDoc
at edu.rice.cs.drjava.model.DefaultGlobalModel$ConcreteOpenDefDoc.(DefaultGlobalModel.java:467)
at edu.rice.cs.drjava.model.DefaultGlobalModel._createOpenDefinitionsDocument(DefaultGlobalModel.java:639)
at edu.rice.cs.drjava.model.DefaultGlobalModel._createOpenDefinitionsDocument(DefaultGlobalModel.java:102)
at edu.rice.cs.drjava.model.AbstractGlobalModel.newFile(AbstractGlobalModel.java:1151)
at edu.rice.cs.drjava.model.AbstractGlobalModel.newFile(AbstractGlobalModel.java:1175)
at edu.rice.cs.drjava.model.AbstractGlobalModel.newFile(AbstractGlobalModel.java:1183)
at edu.rice.cs.drjava.model.AbstractGlobalModel.closeFiles(AbstractGlobalModel.java:1979)
at edu.rice.cs.drjava.model.AbstractGlobalModel.closeAllFiles(AbstractGlobalModel.java:1944)
at edu.rice.cs.drjava.ui.DefinitionsPaneMemoryLeakTest$7.run(DefinitionsPaneMemoryLeakTest.java:197)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:199)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

This creation context stores the stack trace when the instance is created, and I can tell that one of these documents was created when DrJava was initially started, and the other after all documents have been closed. These aren’t the documents that need to be garbage-collected.

However, the test is based on finalization, and for one of the documents (not one of these two that still exist), the finalizer isn’t called. At least that’s what it seems like. It is garbage-collected, because otherwise it would appear in the query result.

I am also using the NetBeans memory leak test utilities, and they do not report a leak either. I’m starting to believe again that finalization is a fundamentally flawed way of checking for garbage collection.

Share
Posted in DrJava | Leave a comment

Print This Post Print This Post  

Back in Houston for a Bit

I’m back in Houston for five days again. I was looking forward to sleeping in my own bed again, but that turned out to be less comfortable than I expected: My air conditioning unit had broken again, and it 31 C (88 F) inside. Fortunately, the maintenance people didn’t just put in more coolant like they’d already done twice this year, and several times in the years past. Instead, they installed a new air conditioning unit. Why not sooner?! Now it’s cool again, but this new unit is really loud. I’ve got to check if there is a way to calm it down a bit, but not right now. I don’t have the time.

Probably because of the heat, my main desktop PC at home also broke. The power supply had been dying for about half a year now, so this was expected. I installed the replacement power supply that I had bought a while ago, but what I didn’t realize was that I had to remove the CPU cooler to get some of the cables out. I was worried that the thermal grease wouldn’t be good enough anymore once I put the cooler back on, but after careful tests, that worry seems to have been unfounded. The core temperatures of my Core 2 Duo don’t go above 48 C under load.

I have met with the Habanero group to discuss integrating Habanero Java into DrJava. I have met with my Mint buddies to talk about the upcoming PLDI 2010 talk on multi-stage programming. I still have to investigate an apparent memory leak in DrJava, something that had occurred before too, and make a new stable release.

I also have to renew my Texas drivers license… again. I haven’t had the time yet, so I’m driving with my international license right now.

On Saturday it’s off to Toronto. A bit hectic, eh?

Share
Posted in DrJava, Mint, Ramblings | 1 Comment

Print This Post Print This Post  

Fixed DrJava “Smart Run” Problem

Yesterday, Steve Gilbert notified me of a problem with the “smart run” feature I had introduced to simplify running applets and ACM Java Task Force programs.

The problem was that I knew whether a class was an applet, an ACM Java Task Force program, or a regular Java program with a main method, but this knowledge wasn’t reflected by the types. I would have needed some kind of non-static “duck typing”.

I have a fix for this problem now that uses a bit more reflection. You can download a preliminary DrJava version from my own web server.

It seems we have some problem with the department web server and I can’t create the usual weekly build. This fix will definitely go into the upcoming release.

Share
Posted in DrJava | 1 Comment

Print This Post Print This Post  

Now I Want an Apple iPad Too: Papers for iPad

OK, now I also want an Apple iPad: Papers for iPad has been released.

Papers for iPad

I still haven’t made it to the Apple Store to play with an iPad since it was released, but the visit is firmly on my To Do list, especially after what an iPad did to this family.

Share
Posted in Uncategorized | Leave a comment

Print This Post Print This Post  

Beethoven and Brainstorming

I went on a walk today, on the prettiest day so far, for some Beethoven and brainstorming. I think I came up with some more nice ties back to my Master’s thesis.

Brainstorming outside.

Brainstorming outside.

Outside on a sunny day.

Sitting outside on a sunny day, with Beethoven in my ears.

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

Print This Post Print This Post  

Travel Arrangements for PLDI 2010

A few days ago I registered for PLDI 2010, just in time for early registration, and booked my flights from Houston to Toronto and back. I’m looking forward to being back in Canada and seeing my third Canadian city. I’ll most likely be staying at the conference hotel.

I will be there for the day of tutorials and the main PLDI conference. I plan on attending the Semantics of shared variables and synchronization (a.k.a. memory models) tutorial by Sarita Adve and Hans Boehm, followed by the Parallelizing Irregular Applications through the Exploitation of Amorphous Data-Parallelism tutorial by Keshav Pingali, Milind Kulkarni and Martin Burtscher.

Our Mint talk, Mint: Java Multi-stage Programming Using Weak Separability, is on Wednesday at 1:30 PM.

I’ve started to like air travel again. All my flights this past year have been very pleasant.

Share
Posted in Mint | Leave a comment

Print This Post Print This Post  

Right Margin Line in DrJava

Check out the right margin line that I just implemented. You can enable/disable it and change its position under Preferences/Display Options, and configure the color under Preferences/Display Options/Colors.

By default, I have it enabled as light-gray line at 120 columns right now. Should we disable it or change the number of columns?

Share
Posted in DrJava | 1 Comment

Print This Post Print This Post