Recent blog entries for lloydwood

Learned that there's now a 64-bit Cygwin. And that SaVi and Geomview don't work well under it - OpenGL is disabled to prevent a crash, limiting Geomview to software rendering, and there's something odd in Cygwin's piping support that prevents the two applications communicating, unlike 32-bit Cygwin and 32- and 64-bit everything else.

I discovered this while helping out a Geomview user who had naively installed 64-bit using the installer from Cygwin's site, as there was no warning that it was very new and unproven. Still, the instructions for building Geomview under Cygwin have been updated.

Cygwin's an ever-moving target, without stable fixed-point releases that are a known quantity. Exposing users to development may help development, but it doesn't do much for users.

SaVi 1.4.6 is now released. Minor changes and bugfixes. This was necessary to support Cygwin transitioning away from Insight Tcl 8.4 to unix Tcl 8.5. Documenting how to build this on Mac OS X is a moving target, now that the Xcode app requires checking a box before command and compile tools become available. Hopefully the instructions are clear enough.
SaVi 1.4.5 is now released. Minor changes for the most part, accumulated over a few months. Supporting Mac OS X and its buggy Tcl continues to surprise, but now SaVi can build with ActiveTcl installs, it's a less buggy experience than it was.
25 Apr 2011 (updated 26 Apr 2011 at 03:33 UTC) »
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?

Memento mori

Just noticed that mirwin has a note on his wikipedia user page indicating that he has passed away. In 2008, as far as I can tell, but the Wikipedia page was only updated at the end of 2009; this may be news to other Advogato users.

I knew him only as the only certified master to rate me as master...

Timor mortis conturbat me.

24 Feb 2011 (updated 25 Feb 2011 at 09:49 UTC) »

SaVi 1.4.4 now has a Debian/Ubuntu package that is a one-click install. As is the Geomview package that SaVi uses for 3D animation, which is listed in the Synaptic package manager and under apt-get.

A couple of clicks, a geomview -run /usr/share/savi/savi, and the satellite constellation systems are yours to control, for far less than it would cost to build Galileo.

I still haven't produced that TIE fighter and Death Star texturemap, though.

SaVi

Today I released SaVi 1.4.4.

SaVi is software for simulation and visualization of satellite orbits, especially satellite constellations such as Iridium, Globalstar and O3b.

This point release builds on Tcl/Tk 8.6b1, updates script simulating O3b based on latest information, adds simulations of Japanese NeLS rosette and COMMstellation constellations, allows selection between existing J2 and classical J0 orbital models with -orbit-model flag, provides keyboard menu shortcuts (except on buggy Mac Tk), warns against deletion of help textfiles, supports building with just 'make' on x86_64 linux systems, adds notes on packaging and release processes.

All minor stuff, really. Although I'll continue to add to SaVi as and when it's needed, I can't yet see any reason for another release before 2012...

21 Jan 2011 (updated 27 Feb 2011 at 00:22 UTC) »

Satellite constellation simulation

With this week's announcement of the COMMstellation proposal from MSCI, "Big LEO" lots-of-low-orbiting-satellite communication systems are back in the news, a decade after the 90s hype of Iridium/Globalstar/Teledesic and their competitors petered out.

COMMstellation's initial announced design looks to have more active satellites than Iridium, and data delivery ambitions to rival Teledesic. (The number of satellites tends to drop over time with redesigns to cut costs; this happened with Iridium, with Teledesic, with Skybridge...) As a polar system, it's aiming at a similar market to, but a different geographic location than, the equatorial O3b.

So, I dusted off my SaVi satellite constellation visualization software and issued a SaVi development update that lets you simulate COMMstellation. And O3b.

21 Jan 2011 (updated 21 Jan 2011 at 16:19 UTC) »

Radio astronomy

We've been doing some work for radio astronomy -- not on the astronomy as such, but on the computing and networking that will needed to support the new generation of high-end astronomy arrays that are being designed and built, such as the Square Kilometre Array.

The idea is to be able to use existing Internet technologies -- fibre, Ethernet, IP -- but engineer their use to support very high speeds, using a transport protocol that we've designed, called Saratoga, that is in use to transfer imaging data from IP-enabled remote-sensing satellites.

So, here's Taking Saratoga from space-based ground sensors to ground-based space sensors.

Human interfaces

For years radios had been operated by means of pressing buttons and turning dials; then as the technology became more sophisticated the controls were made touch-sensitive -- you merely had to brush the panels with your fingers; now all you had to do was wave your hand in the general direction of the components and hope. It saved a lot of muscular expenditure, of course, but meant that you had to sit infuriatingly still if you wanted to keep listening to the same program.

-- Douglas Adams, The Hitchhiker's Guide to the Galaxy, ch. 11, 1979.

"Rather than bending down, leaning forward or picking it up you can use larger movements a little bit further away to do things like volume up or next song without changing modality.”

-- Stian Aldrin, CEO of Elliptic Labs, quoted in Kinect-like technology for iPad to wave through CES, Fabrizio Pilato, Mobile Magazine, 21 December 2010.

(I haven't touched SaVi at all this Christmas.)

93 older 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!