25 Apr 2011 lloydwood   » (Journeyer)

Why I'm learning to hate Matlab

Reason 1 The license manager. Having Matlab licensed for use at your university is fine until you move your laptop with its licensed copy somewhere else outside the firewall, and it stops working.

Reason 2 The license manager. Using a function in a particular toolbox is fine until all the licenses for that toolbox are checked out, at which point your code will fail when the function is called. That's an interpreted language that calls the license server before every command.

Reason 3 It's written in Java, and that's not very well hidden. Observe:


[ConditionalEventPump] Exception occurred during event 
dispatching:
java.lang.OutOfMemoryError: Java heap space
	at java.awt.image.DataBufferInt.<init>(Unknown 
Source)
	at java.awt.image.Raster.createPackedRaster
(Unknown Source)
	at 
java.awt.image.DirectColorModel.createCompatibleWritableRas
ter(Unknown Source)
	at sun.awt.image.SunVolatileImage.getBackupImage
(Unknown Source)
	at 
sun.awt.image.VolatileSurfaceManager.getBackupSurface
(Unknown Source)
	at sun.awt.image.VolatileSurfaceManager.initialize
(Unknown Source)
	at sun.awt.image.SunVolatileImage.<init>(Unknown 
Source)
	at sun.awt.image.SunVolatileImage.<init>(Unknown 
Source)
	at 
java.awt.GraphicsConfiguration.createCompatibleVolatileImag
e(Unknown Source)
	at 
java.awt.GraphicsConfiguration.createCompatibleVolatileImag
e(Unknown Source)
	at 
javax.swing.RepaintManager.getVolatileOffscreenBuffer
(Unknown Source)
	at javax.swing.RepaintManager$PaintManager.paint
(Unknown Source)
	at javax.swing.RepaintManager.paint(Unknown 
Source)
	at javax.swing.JComponent.paint(Unknown Source)
	at java.awt.GraphicsCallback$PaintCallback.run
(Unknown Source)
	at sun.awt.SunGraphicsCallback.runOneComponent
(Unknown Source)
	at sun.awt.SunGraphicsCallback.runComponents
(Unknown Source)
	at java.awt.Container.paint(Unknown Source)
	at javax.swing.RepaintManager.paintDirtyRegions
(Unknown Source)
	at javax.swing.RepaintManager.paintDirtyRegions
(Unknown Source)
	at javax.swing.RepaintManager.seqPaintDirtyRegions
(Unknown Source)
	at 
javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.
run(Unknown Source)
	at java.awt.event.InvocationEvent.dispatch
(Unknown 
Source)
	at java.awt.EventQueue.dispatchEvent(Unknown 
Source)
	at 
java.awt.EventDispatchThread.pumpOneEventForFilters
(Unknown Source)
	at 
java.awt.EventDispatchThread.pumpEventsForFilter
(Unknown Source)
	at 
java.awt.EventDispatchThread.pumpEventsForHierarchy
(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents
(Unknown 
Source)
	at java.awt.EventDispatchThread.pumpEvents
(Unknown 
Source)
	at java.awt.EventDispatchThread.run(Unknown 
Source)
[ConditionalEventPump] Exception occurred during event 
dispatching:
java.lang.OutOfMemoryError: Java heap space
	at java.awt.image.DataBufferInt.<init>(Unknown 
Source)
	at java.awt.image.Raster.createPackedRaster
(Unknown Source)
	at 
java.awt.image.DirectColorModel.createCompatibleWritableRas
ter(Unknown Source)
	at sun.awt.image.SunVolatileImage.getBackupImage
(Unknown Source)
	at 
sun.awt.image.VolatileSurfaceManager.getBackupSurface
(Unknown Source)
	at sun.awt.image.VolatileSurfaceManager.initialize
(Unknown Source)
	at sun.awt.image.SunVolatileImage.<init>(Unknown 
Source)
	at sun.awt.image.SunVolatileImage.<init>(Unknown 
Source)
	at 
java.awt.GraphicsConfiguration.createCompatibleVolatileImag
e(Unknown Source)
	at 
java.awt.GraphicsConfiguration.createCompatibleVolatileImag
e(Unknown Source)
	at 
javax.swing.RepaintManager.getVolatileOffscreenBuffer
(Unknown Source)
	at javax.swing.RepaintManager$PaintManager.paint
(Unknown Source)
	at javax.swing.RepaintManager.paint(Unknown 
Source)
	at javax.swing.JComponent.paint(Unknown Source)
	at java.awt.GraphicsCallback$PaintCallback.run
(Unknown Source)
	at sun.awt.SunGraphicsCallback.runOneComponent
(Unknown Source)
	at sun.awt.SunGraphicsCallback.runComponents
(Unknown Source)
	at java.awt.Container.paint(Unknown Source)
	at javax.swing.RepaintManager.paintDirtyRegions
(Unknown Source)
	at javax.swing.RepaintManager.paintDirtyRegions
(Unknown Source)
	at javax.swing.RepaintManager.seqPaintDirtyRegions
(Unknown Source)
	at 
javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.
run(Unknown Source)
	at java.awt.event.InvocationEvent.dispatch
(Unknown 
Source)
	at java.awt.EventQueue.dispatchEvent(Unknown 
Source)
	at 
java.awt.EventDispatchThread.pumpOneEventForFilters
(Unknown Source)
	at 
java.awt.EventDispatchThread.pumpEventsForFilter
(Unknown Source)
	at 
java.awt.EventDispatchThread.pumpEventsForHierarchy
(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents
(Unknown 
Source)
	at java.awt.EventDispatchThread.pumpEvents
(Unknown 
Source)
	at java.awt.EventDispatchThread.run(Unknown 
Source)
[ConditionalEventPump] Exception occurred during event 
dispatching:
java.lang.OutOfMemoryError: Java heap space
	at java.awt.image.DataBufferInt.<init>(Unknown 
Source)
	at java.awt.image.Raster.createPackedRaster
(Unknown Source)
	at 
java.awt.image.DirectColorModel.createCompatibleWritableRas
ter(Unknown Source)
	at sun.awt.image.SunVolatileImage.getBackupImage
(Unknown Source)
	at 
sun.awt.image.VolatileSurfaceManager.getBackupSurface
(Unknown Source)
	at sun.awt.image.VolatileSurfaceManager.initialize
(Unknown Source)
	at sun.awt.image.SunVolatileImage.<init>(Unknown 
Source)
	at sun.awt.image.SunVolatileImage.<init>(Unknown 
Source)
	at 
java.awt.GraphicsConfiguration.createCompatibleVolatileImag
e(Unknown Source)
	at 
java.awt.GraphicsConfiguration.createCompatibleVolatileImag
e(Unknown Source)
	at 
javax.swing.RepaintManager.getVolatileOffscreenBuffer
(Unknown Source)
	at javax.swing.RepaintManager$PaintManager.paint
(Unknown Source)
	at javax.swing.RepaintManager.paint(Unknown 
Source)
	at javax.swing.JComponent.paint(Unknown Source)
	at java.awt.GraphicsCallback$PaintCallback.run
(Unknown Source)
	at sun.awt.SunGraphicsCallback.runOneComponent
(Unknown Source)
	at sun.awt.SunGraphicsCallback.runComponents
(Unknown Source)
	at java.awt.Container.paint(Unknown Source)
	at javax.swing.RepaintManager.paintDirtyRegions
(Unknown Source)
	at javax.swing.RepaintManager.paintDirtyRegions
(Unknown Source)
	at javax.swing.RepaintManager.seqPaintDirtyRegions
(Unknown Source)
	at 
javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.
run(Unknown Source)
	at java.awt.event.InvocationEvent.dispatch
(Unknown 
Source)
	at java.awt.EventQueue.dispatchEvent(Unknown 
Source)
	at 
java.awt.EventDispatchThread.pumpOneEventForFilters
(Unknown Source)
	at 
java.awt.EventDispatchThread.pumpEventsForFilter
(Unknown Source)
	at 
java.awt.EventDispatchThread.pumpEventsForHierarchy
(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents
(Unknown 
Source)
	at java.awt.EventDispatchThread.pumpEvents
(Unknown 
Source)
	at java.awt.EventDispatchThread.run(Unknown 
Source)
[ConditionalEventPump] Exception occurred during event 
dispatching:
java.lang.OutOfMemoryError: Java heap space
	at java.awt.image.DataBufferInt.<init>(Unknown 
Source)
	at java.awt.image.Raster.createPackedRaster
(Unknown Source)
	at 
java.awt.image.DirectColorModel.createCompatibleWritableRas
ter(Unknown Source)
	at sun.awt.image.SunVolatileImage.getBackupImage
(Unknown Source)
	at 
sun.awt.image.VolatileSurfaceManager.getBackupSurface
(Unknown Source)
	at sun.awt.image.VolatileSurfaceManager.initialize
(Unknown Source)
	at sun.awt.image.SunVolatileImage.<init>(Unknown 
Source)
	at sun.awt.image.SunVolatileImage.<init>(Unknown 
Source)
	at 
java.awt.GraphicsConfiguration.createCompatibleVolatileImag
e(Unknown Source)
	at 
java.awt.GraphicsConfiguration.createCompatibleVolatileImag
e(Unknown Source)
	at 
javax.swing.RepaintManager.getVolatileOffscreenBuffer
(Unknown Source)
	at javax.swing.RepaintManager$PaintManager.paint
(Unknown Source)
	at javax.swing.RepaintManager.paint(Unknown 
Source)
	at javax.swing.JComponent.paint(Unknown Source)
	at java.awt.GraphicsCallback$PaintCallback.run
(Unknown Source)
	at sun.awt.SunGraphicsCallback.runOneComponent
(Unknown Source)
	at sun.awt.SunGraphicsCallback.runComponents
(Unknown Source)
	at java.awt.Container.paint(Unknown Source)
	at javax.swing.RepaintManager.paintDirtyRegions
(Unknown Source)
	at javax.swing.RepaintManager.paintDirtyRegions
(Unknown Source)
	at javax.swing.RepaintManager.seqPaintDirtyRegions
(Unknown Source)
	at 
javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.
run(Unknown Source)
	at java.awt.event.InvocationEvent.dispatch
(Unknown 
Source)
	at java.awt.EventQueue.dispatchEvent(Unknown 
Source)
	at 
java.awt.EventDispatchThread.pumpOneEventForFilters
(Unknown Source)
	at 
java.awt.EventDispatchThread.pumpEventsForFilter
(Unknown Source)
	at 
java.awt.EventDispatchThread.pumpEventsForHierarchy
(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents
(Unknown 
Source)
	at java.awt.EventDispatchThread.pumpEvents
(Unknown 
Source)
	at java.awt.EventDispatchThread.run(Unknown 
Source)
[ConditionalEventPump] Exception occurred during event 
dispatching:
java.lang.OutOfMemoryError: Java heap space
[ConditionalEventPump] Exception occurred during event 
dispatching:
java.lang.OutOfMemoryError: Java heap space

So, Matlab is an interpreted language, now written in Java, that calls its license manager before every command and won't run on a work laptop that is being used as a laptop. What's not to like?

Latest blog entries     Older blog entries

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!