Found my Nook Simple Touch hung this morning in an update. Unclear when this started, some time over night. The Nook was plugged into the charger all the time.
After about 10 minutes I decided that the "Please don't turn off your NOOK!" is nonsense, because nothing was happening. Note that the progress bar at the bottom was not animated and appeared somewhat mispainted.
After holding the power button at the back of the device pressed for at least 20 seconds, the device power cycled and went through a bootup cycle which almost immadiately entered the "Installing..." display again. But this time, the progress bar at the bottom was animated, slowly filling from the left. Then it switched to another startup screen, the progress too about 2 minutes.
Finally the usual screen saver appeared. I could unlock the device, and the main screen displayed a notification icon regarding a software update. The time of the update is the time of the power cycle.
Sunday, May 13, 2012
Tuesday, April 3, 2012
Apple iMac Harddrive Replacement
Needed to replace the Harddrive on an Apple iMac. This is a white plastic Intel iMac. After removing all screws from the bottom (where the memory modules are also installed), the back of the case can be pulled off, starting at the bottom, with a 'crack'. There's a lot of aluminium-backed tape inside, and after removing the LCD panel the hard drive becomes accessible.
The original drive was 160GB. A 250GB replacement was found for around $60 (3.5", SATA).
Then it came to re-installing the operating system from DVDs, where I ran into two surprises:
- No disk found.
With Linux, installing an OS from DVDs is fairly straight forward. You are guided through partitioning the hard drive etc. With OS X, I was expecting it to be even easier, but wrong: The installation asks you to select a hard drive for the installation without offering anything. Solution: Close the installer, select Tools/Disk Utility from the menu to format and partition the drive. When installing again, you can now select the drive. - Can't eject the disk??
When prompted to insert the second installation DVD, I could not figure out how to eject the first one. Nothing worked. Finally I learned that the drive was empty ... I had not fully re-assembled the case because I first wanted to check if everything "worked". When the iMac ejects a DVD, it's usually kept half-way in the drive because of the felt lining of the DVD slot. This time, the iMac had ejected the first OS installation DVD, it had rolled of the table and vanished under some cubboard. From the outside, I could not tell if there's a DVD in the drive or not. Since I didn't remember ejecting the DVD nor saw one in the usual half-out-of-the-drive position, I had assumed that it's still "in"....
Monday, March 12, 2012
Extra 3.25

First heard about the design as a Model Airplane News plan, designed by Rich Uravitch. Then found the Lanier kit version on EBay, got it for Christmas in 2010 together with a used OS FS 26. Unclear how old that engine is. It looks a bit more gummed up than my other 10-year old OS 26.
The Lanier kit has very nice laser-cut pieces which I wanted to preserve, since it's getting harder to find nice kits. So this plane was built by copying the pieces of the kit.
Everything came together quickly until it was time to assemble the middle section for which the kit provides a vacuum formed clear plastic part. Created a plaster mold, but failed to duplicate it because it was hard to get a suitably large sheet of clear plastic. Ordered a canopy from Tower for a 60-sized cup that appeared similar, but that piece arrived broken. So ended up creating the center section from scratch out of balsa.
The kit also includes a cowling which I didn't want to remove from the kit, either. Tried to copy it in fiberglass, which turned into a big mess. Then ordered a replacement fiberglass cowling from Fiberglass Specialities, but have not put it on because it's much easier to reach the engine without a cowling. The only part on this plane that came from the kit is the aluminum landing gear.
The kit suggests a weight of 3.5 to 4.5 lbs, but my plane came out just under 3 lbs! It appeared front-heavy, had to move the receiver battery into the back of the fuse to balance. Servos are 3 normal sized ones and a small one for throttle. One servo with bell-cranks for ailerons, no "flap" mixing option.
| Wingspan | 120 cm |
| Length | 87 cm |
| Area | 23.4 dm2 |
| Weight | 1330 g |
| Loading | 56.8 g/dm2 |
| Airfoil | Semi-Symmetrical |
| Engine | OS FS 26 |
| Tank | 120 cc |
First flight was on the 2012/03/12. Engine runs fine, solid put-put-put, no screamer. The plane has a tank that only uses a third of the front section, and I don't know how long it will run, but after 4 minutes it's still 3/4 full.The plane feels very light and can fly quite slow. very easy to fly, like a trainer except maybe a faster roll rate.
Wednesday, February 29, 2012
Eclipse JFace 'VIRTUAL' TreeViewer basically requires TreeColumnLayout?
When switching a TreeViewer from an ITreeContentProvider to a 'VIRTUAL' TreeViewer with ILazyTreeContentProvider, the tree display initially appeared blank. The items in the tree would only become visible after waiting a little, or by doing some window operations that result in a refresh of the tree. This happened especially on Mac OS X.
After looking closer, it became obvious that the one and only column of the tree had a nearly zero width. Note the arrow in the image that shows the column separator:

The issue seems to be that a non-VIRTUAL TreeViewer knows all its items right away and can size the tree columns appropriately. When swtiching to a VIRTUAL TreeViewer, the items are updated as needed, and the column refresh can lag.
Early "fixes" involved forcing a refresh after setting the TreeViewer input:
tree.setRedraw(false);
tree_viewer.setInput(config);
tree_viewer.refresh();
tree.setRedraw(true);
or
tree_viewer.expandAll();
But the best workaround seems to be to use a TreeColumnLayout that always auto-sizes the one and only column:
// Note that the TreeViewer needs to be the only widget
// under the parent widget. If necessary, add Composite
// to wrap the TreeViewer
final TreeColumnLayout layout = new TreeColumnLayout();
parent.setLayout(layout);
final TreeViewer v = new TreeViewer(shell, SWT.VIRTUAL | SWT.BORDER);
v.setLabelProvider(new LabelProvider());
Friday, February 3, 2012
Avoid Soft Links in Eclipse Headless build - or ant in general?
Ran into a really strange problem.
As a result of a headless Eclipse product build, I usually get an abc.app for Mac OS X.
But this time around I got an abc.app for Mac OS X that "worked", but the program icon was wrong. In addition, there was an Eclipse.app directory that's mostly empty.
Products for other architectures (Linux, Windows) looked OK.
Apparently, the build process had first put the Eclipse.app in place, tried to assign the icon etc., and then renamed it to the actual product name abc.app, but something failed in the process. The Eclipse.app partially remained in place, and there was no icon.
Solution: I had recently changed the build directory to /tmp. On Mac OS X, /tmp is a soft link (symbolic link) to /private/var. Either the Eclipse headless build or maybe ant in general has problems with soft links. After using a "real" directory path without any soft links as the build directory, things were fine again.
Thursday, December 22, 2011
Chipsair 2





Update of the first Chipsair that crashed due to unknown reasons.
Just lost it while spinning, maybe because the battery voltage dropped too far while tossing it around. Hence this one has a voltage display...
Update was build in very similar way to the first Chipsair but possibly a little stronger: Extra thin ply in the elevator, added bracing in the aft of the fuselage.
| Wingspan | 1.58 m |
| Wing Area | 36.34 dm2 |
| Tail | 50 cm |
| Tail Area | 6 dm2 |
| Weight | 2012 g |
| Wing Loading | 55 g/dm2 |
| Length | 1.1 m |
| Airfoil | Eppler E197 |
| Engine | OS MAX 46 LA (blue) |
First flight on December 22, 2011, where I noticed at the field that the aileron hinges where actually not glued in, yet! So for the first flight scotch tape held them in place, and I tried to avoid aileron use to keep them attached to the wing.
The pictures also still show the push-pins on the windshield because I'm not sure if the glue is 100% dry.
This might have been the last plane where I could use the Pacer ZAP hinge glue that seems to become unobtainable.
Overall it flies GREAT. Plenty power, plenty authority from aileron and elevator, which I had worried about. Very nice and slow landings, while on the other hand endless loops and quite some vertical performance.
Friday, September 9, 2011
JDBC 'commit' even for SELECT
You probably knew this, but a 'commit' can even be necessary for SELECT calls that don't change any data.
After calling JDBC Connection.setAutoCommit(true)), every JDBC call, be it SELECT, INSERT, UPDATE, DELETE starts a transaction that needs to be ended with a commit (or rollback).
This might be obvious for a sequence of INSERT or UPDATE calls that change data, and you want a final commit() to perform an atomic update.
With a SELECT, the update is necessary to avoid the following situation:
After calling JDBC Connection.setAutoCommit(true)), every JDBC call, be it SELECT, INSERT, UPDATE, DELETE starts a transaction that needs to be ended with a commit (or rollback).
This might be obvious for a sequence of INSERT or UPDATE calls that change data, and you want a final commit() to perform an atomic update.
With a SELECT, the update is necessary to avoid the following situation:
- Calling SELECT to fetch something. That starts a Transaction!
- Now somebody else changes the data.
- You call SELECT again to get the 'latest', but since you're still in the original Transaction, you get the same old data as in step 1.
If you have other code that changes the data and happens to call commit() before you reach step 3, all will look OK, but to be sure that you end the original reading transaction and always get the 'latest' data in a later read, it has to be done like this:
- SELECT, commit()
- Now the data might change.
- If you later need to fetch the 'latest', again SELECT and commit()
Tuesday, September 6, 2011
RAOTA - What an idea!
Rest Areas on the Air, starting on Nov. 23, 2011:

Map http://www.tdot.state.tn.us/maintenance/restareas.htm mentions "2 hour parking limit":
Sunday, August 28, 2011
Dandy E205


This is not about a high-performance sailplane but about building something that you knew about maybe 30 years ago...
I had also read about the Eppler 205 airfoil, both good and bad, so I decided to try that.
Finally, the "glider" should have an electric motor because using a high-start is somewhat cumbersome. The motor and prop combination was determined by trying various things in online motor calculators and by comparing with off-the-shelf models of similar wingspan, weight and type.
| Wingspan | 170cm |
|---|---|
| Length | 105cm |
| Airfoil | E205 |
| Stab | E193, 50 x 11cm |
| Wing Area | 39.1 dm2 |
| Weight | 1156g |
| Wing Loading | 29.6g/dm2 |
| Decal Font | Optima Extra Black |
| Motor | Turnigy C3530-1100, Kv1075, 73g, 15A Max, later MVVS 10 2/1120 |
| Prop | 9x5 Folding Prop |
| Speed Controller | 25A max |
| Battery | 2200mAh 3S LiPo |
The center of gravity came out somewhat too far in the back unless two batteries are packed into the front of the plane. The total weight of about 1.2kg includes the two batteries and radio gear. The original plane had a slightly smaller wingspan, weight of 1.0kg, and a wing loading of 16-29g/dm2.
First flight was on the morning of August 28, 2011. Two brief flights before breakfast. It flies nicely! I was surprised how slow. Current draw is 13A at full power, and about 5A when cruising around.
--
17 July 2016: Axis of Turnigy snapped off (!) during climbout. Managed to land ok, but prop vanished in the woods.
Replaced with MVVS 10 2/1120. On summer evenings using about 400 mAh for 10 minute flight.
--
17 July 2016: Axis of Turnigy snapped off (!) during climbout. Managed to land ok, but prop vanished in the woods.
Replaced with MVVS 10 2/1120. On summer evenings using about 400 mAh for 10 minute flight.
Tuesday, August 16, 2011
Oracle JDBC Version Woes
Ran into a strange Oracle error today in a Tomcat program.
The code ran fine in two other Tomcat instances, but failed in a third one.
The error happened to be
ORA-03115: unsupported network datatype or representation
which basically means: There is a version mismatch between the database and the JDBC library.
Reason
That Tomcat instance had a copy of ojdbc14.jar in its lib/ subdirectory that was used instead of the ojdbc14.jar included in the application's *.war file.
Unfortunately it is hard to tell the version of an ojdbc14.jar from the outside.
Possible Solutions
- Unzip the ojdbc14.jar and check its manifest file.
- Get the version programmatically
Connection connection = ...;
DatabaseMetaData md = connection.getMetaData();
out.append(...md.getDriverName() + " " + md.getDriverVersion() ...);
That way it is possible at runtime to check which version you are actually using.
Moral
Don't put *.jar files in the Tomcat lib/ directory. Include them in the *.war file.
Yes, this way you might load multiple copies, one for each *.war, but that beats later wating time to debug an app that suddenly stops working because some Tomcat instance has the wrong *.jar in its lib/ directory.
Saturday, August 13, 2011
Mercurial seems to hang in SourceForge connection because of host key change
Had a problem where mercurial seemed to hang forever in a SourceForge transaction.
It was run from within Eclipse via MercurialEclipse, and there was no indication as to
what's happening nor any way to stop it other than to kill Eclipse.
This was under Windows with hg calling putty, which in turn was configured to use an ssh key pair registered with SourceForge that had worked OK some time ago.
When executing hg from the command line, it would also hang, but I could stop it with Control-C, and then it would show the following message:
hg clone ssh://name@....hg.sourceforge.net/hgroot/....
interrupted!
remote: The server's host key is not cached in the registry. You
remote: have no guarantee that the server is the computer you
remote: think it is.
remote: The server's rsa2 key fingerprint is:
remote: ssh-rsa 2048 86:7b:1b:12:85:35:8a:b7:98:b6:d2:97:5e:96:58:1d
remote: If you trust this host, enter "y" to add the key to
remote: PuTTY's cache and carry on connecting.
remote: If you want to carry on connecting just once, without
remote: adding the key to the cache, enter "n".
remote: If you do not trust this host, press Return to abandon the
remote: connection.
remote: Store key in cache? (y/n) ^C
Again this was under Windows. On a real operating system the host key change prompt might have appeared before the Ctrl-C and thus be more obvious.
Anyway, the fix:
Run
putty -i path\to\the\key.ppk
once which will show the same host key change prompt and this time you can accept it.
From then on, hg works OK again.
Friday, July 29, 2011
JG1XHO
Friday, July 15, 2011
Change Eclipse plugin_customization.ini via feature
Eclipse has an elaborate hierarchical preference mechanism:
- Plugins have a preferences.ini.
- The product can override the settings of any plugin via a plugin_customization.ini file
- Finally you can provide your own defaults via a command-line option -pluginCustomization /path/to/my/settings.ini.
When you create products, you typically include a plugin_customization.ini file in your product.
What if you need to create products with different settings?
Can you put the plugin_customization.ini file into fragments for your product plugin? That doesn't work. Plugin customization.ini files in fragments seem to be ignored.
But here's what you can do: Fake localization.
In your product plugin, have a plugin_customization.ini file that looks like this:
some.plugin/some_setting=%some_value
Then, in a fragment of the product plugin, place a plugin_customization.properties file that contains
some_value=Value A
In another fragment, you can have
some_value=Value B
By loading the appropriate fragments, for example from an update site, you can now install the settings that you want!
Friday, May 20, 2011
Associative JavaScript Arrays by Numeric 'ID'
I needed to keep browser-side information about certain objects by numeric ID.
When using an associative JavaScript array like this:
var gadgets;
gadgets[4711].name = 'Fred';
gadgets[4711].color = 'red';
you will find that it creates an array with (mostly empty) elements gadgets[0] to gadgets[4711].
On the other hand, when initializing the array like this:
gadgets['4711'].name = 'Fred';
it creates a single element in an associative container. Once created, you can access such elements with either gadgets[4711] or gatgets['4711']!
Friday, March 11, 2011
Belkin Play B600 Duplicate IP Address Problem
I have a cable modem internet connection that's shared by several computers at home via a Belkin wireless router. A Windows Vista PC is actually wired to the router, the other computers are on a WLAN.
The router is at http://192.168.2.1/. The wired PC is usually at 192.168.2.2. Other wireless devices get addresses like 192.168.2.3, 192.168.2.9 etc., meaning: Everything is on the same subnet, contrary to my previous wireless router that used different subnets for the wired and wireless devices.
Sometimes the wired PC reports a duplicate IP address error. The "easiest" fix seems to be:
- Power the PC down
- Power-cycle the wireless router
- Start the PC back up
Thursday, March 10, 2011
"Portable" Eclipse Projects
When you create a new Eclipse 'Plug-in' project, its initial configuration will lock to your current JRE and compiler settings.
When you then share that project with other people, they will see compiler errors because you may have used Java 1.6_19 on Linux while they use Java 1.6_20 on Windows.
To make your project more portable, do this:
- In the Package Explorer, right-click on your Plug-in Project and select "Properties"
- Under "Java Build Path", select tab "Libraries", item "JRE System Library", button "Edit". It should default to a specific "Execution environment" like "JavaSE1-6 (MacOS X 1.6.0 System). Change that to "Workspace default JRE", meaning: Use whatever the developer has configured in her workspace.
- Under "Java Compiler", by default "Enable project specific settings" will be checked. Uncheck that, meaning: Use the compiler settings that the developer has selected in her workspace.
- When you now switch to the Navigator view, you should find that the ".settings" directory that previously contained project-specific compiler settings is now empty. You can delete it.
Wednesday, March 2, 2011
Hudson ignored CVS updates
In a setup where Hudson polls CVS for updates I ended up in a situation where newly added directories were ignored, and thus Hudson did not trigger a re-build of the product.
The Hudson "CVS Polling Log" looked like this:
The fix was to delete everything inside the "workspace" directory. On the next Hudson run, it performed a complete cvs checkout and that included all changes.
The Hudson "CVS Polling Log" looked like this:
[workspace] $ cvs -q -z0 -n update -PdC -D "Wednesday, March 2, 2011 3:51:38 PM UTC"
cvs update: New directory `.....' -- ignored
The fix was to delete everything inside the "workspace" directory. On the next Hudson run, it performed a complete cvs checkout and that included all changes.
Friday, February 11, 2011
Java Audio, FreeTTS "LINE UNAVAILABLE" Error
A program based on FreeTTS, the free text-to-speech engine for Java, was getting occasional errors
"LINE UNAVAILABLE: Format is ..."
The reason was later found in the KDE desktop: Its configuration panel has options to keep the audio device open for some time after playing beeps or other desktop sounds. The default seemed to be rather high at 60 seconds. But even after changing that to only 2 seconds, the FreeTTS library still needs to compete with some occasional other users of the audio devices.Turns out there is no Java Exception or other mechanism to detect this error that occurs inside the FreeTTS library. All you get is the message on System.out, so there is no good way to react programatically.
If the audio device is permanently used by another program, there is of course no way to get access. Under Linux, this command will display the ID of the process that is currently holding the audio device, so you can then try to get rid of the offending program:
Workaround: Configure the FreeTTS audio player to attempt accessing the audio device more than once until it succeeds. In this example, a short delay of 0.1 seconds is used to not miss an opportunity to grab the audio device; we keep trying for 30 seconds:
System.setProperty("com.sun.speech.freetts.audio.AudioPlayer.openFailDelayMs", "100");
System.setProperty("com.sun.speech.freetts.audio.AudioPlayer.totalOpenFailDelayMs", "30000");
/sbin/fuser /dev/dsp
Tuesday, January 18, 2011
Eclipse Build Path Problem After Mac OS X Java Update
In early January 2011, I received a Mac OS X Software Update that included Java changes.
This was on a Mac that had been upgraded to Snow Leopard, so older Java setups were still present, but this update must have removed older JVMs and JDKs.
As a result, Eclipse builds would fail with this error:
The container 'JRE System Library [J2SE-1.5]' references non existing library '/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Classes/laf.jar'
In general, the OS X Java setup changed from using
/System/Library/Frameworks/Java.VM.framework/Versions/... to using a path like
/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/HomeAfter going to Eclipse/Preferences/Java/Installed JREs and "Add..."ing a new JVM that uses the above path with ".../JavaVirtualMachines/..." all is fine again. You might have to look for the full path to that .../Home in a terminal window and copy/paste it into the Eclipse preference dialog, because the "Browse" button in the dialog might only show the 1.6.0.jdk as a package, not as a subdirectory into which you can drill down.
Next issue: You might not have a src.jar in that JDK to be able to view the Java sources, so you cannot view the source code for String, Map, ... and the other standard Java classes. That's because the default JDK is really more like a JRE.
After downloading the Java Development package from the Apple Developer Connection, something like
javadeveloper_10.6_10m3261.dmg, you get a new JDK in /Library/Java/JavaVirtualMachines/1.6.0_22-b04-307.jdkand that one has a
Content/Home/src.jar.Note that the JDK that you install yourself, the one that includes the sources, is under /Library/Java/... while the Java stuff that comes with the OS is under /System/Library/Java/...
Eclipse should automatically detect the src.jar in the JDK that you install.
Note on finding the Java Development package as of August 2011:
- http://developer.apple.com/
- Member Center
- Dev Centers: Mac
- Resources
- Mac OS X Developer Downloads
- Java
- Java for Mac OS X ... Developer ...
Friday, January 14, 2011
Eclipse Draw2D and GEF Sources, Online Help
When installing the Eclipse IDE for RCP development, it includes the Draw2D and GEF binaries, but not the sources. At least not in the Mac OS X version for Eclipse 3.5 and 3.6(.1).
How to get them: Also download the "Modeling" version of the IDE, and copy the following plugins from that into your RCP IDE's plugins directory:
- org.eclipse.draw2d.doc.*.jar
- org.eclipse.draw2d.source_*.jar
- org.eclipse.gef.doc.*.jar
Subscribe to:
Posts (Atom)




