Category Archives: Software

Improving [Hacking] Paratext’s Interlinearizer

Some people who look at my Paratext interlinearizer window are somewhat surprised by the display.

What I really like about the Interlinearizer in Paratext is that you can adapt the HTML which powers the display by adjusting the files in the C:\Program Files\Paratext 7\Interlinear folder. Here’s what I’ve changed and why: Continue reading Improving [Hacking] Paratext’s Interlinearizer

Tech note: Upgrading a VMware Windows 7 installation to Windows 10

Ever since the Windows 10 upgrade was announced as free I have tried off and on to install it in a copy of my Windows 7 Virtual Machine (that I run on my Mac). At least I can get on with work and life while trying major OS upgrades that way. Unfortunately it’s not worked until finally I got somewhere today.

In short:
1. Switch your hard drives and DVD drive to IDE not SCSI.
2. Don’t worry if you missed the Windows 10 free upgrade deadline. Use your Windows 7/8 product key or the ‘assistive technologies’ upgrade.

For some reason VMware Fusion that I’m running defaults new Hard Drives to SCSI, though you can change the (emulated) connection type to IDE or SATA. It appears that Windows 10 doesn’t really like SCSI. Whenever I tried to install – either through ISO or running an upgrade assistant I got an error or else it would let me choose a keyboard layout then only give troubleshooting options and insist on shutting down or restarting the PC, without actually installing windows. Then it would revert to Windows 7, sometimes reporting error 0xc1900101 – 0x20017.

This turns out to be driver-related and probably was the SCSI issue.

How one slash slashes your website: WordPress .htaccess file preventing access to password-protected directories

Very helpful article from hostgator here http://support.hostgator.com/articles/specialized-help/technical/wordpress/wordpress-preventing-you-from-password-protecting-a-directory shows up a problem which can drive many people crazy if they’ve got WordPress installed at root alongside other CGI password-protected folders.

In short, there’s a missing / here:

  • RewriteRule . /index.php [L]

which would be better being

  • RewriteRule ./ /index.php [L]

Continue reading How one slash slashes your website: WordPress .htaccess file preventing access to password-protected directories

Lessons from Software Engineering for Bible Translation

493_4018 Scaffolding
(Jos, Nigeria)

Some time I may get round to writing a paper on some cross-disciplinary lessons that Bible translators can learn from Software Engineering. (This is essentially trying to integrate my former and current career paths.)

My attention was caught by a slightly overblown headline on favourite irreverent geeky news site The Register: Most developers have never seen a successful project. Let me intersperse some quotes with some comments on how I see this relating to difficulties we face in the Bible translation world:

Most software professionals have never seen a successful software development project, continuous delivery evangelist Dave Farley said, and have “built careers on doing the wrong thing”.

Continue reading Lessons from Software Engineering for Bible Translation

Fixing the fix for NTFS drives on Mac OS X (10.10 Yosemite)

A friend had a troublesome external Hard drive that wouldn’t work. It wouldn’t mount in Mac OS X, having some corruption issues and being an NTFS format drive.

Disk Utility helpfully said:

Verify and Repair volume “xxxxxxxx”Repairing file system.** /usr/local/bin/ntfsfix has been disabled because of volume corruption issues.

** If you still want to try fixing your volume, use /usr/local/bin/ntfsfix from the command line…

File system check exit code is 250.Updating boot support partitions for the volume as required.Error: Disk Utility can’t repair this disk. Back up as many of your files as possible, reformat the disk, and restore your backed-up files.

Plugging it into my Windows 7 Virtual Machine didn’t let me do anything to fix it.

So I tried running sudo /usr/local/bin/ntfsfix as suggested (I had used Disk Utility’s ‘info’ function to identify the drive as /dev/disk5s1), only to encounter this:

dyld: Library not loaded: /usr/local/lib/libntfs.9.dylib
Referenced from: /usr/local/bin/ntfsfix
Reason: image not found

I updated various ports I thought might help but to no avail. Finally I looked inside /usr/local/lib/ and discovered that I have a file called libntfs.9.0.0.dylib but not libntfs.9.dylib. I typed 

ln -s libntfs.9.0.0.dylib libntfs.9.dylib

to create a link to the file where the ntfsfix program expected it and thereafter the ntfsfix command works as it should. Something seems to have broken in OS X 10.10 Yosemite, but it just requires a quick link to work.

That said, I haven’t managed to resurrect the volume yet. Posting this because I got no helpful hits reporting the dyld (Dynamic Loader) error above.

When FieldWorks & SayMore installations struggle with a DotNet issue…

Several SIL tools like FieldWorks Language Explorer (Flex) and SayMore depend on the dotnet framework. (That’s a bit like Microsoft’s answer to Java.) Unfortunately it sometimes falls over.

So I found a rather handy blog post that explains what to do when you try installing DotNet 4.0 and it sits still for ages then responds with the less-than-helpful error message “.NET framework has not been installed because: HRESULT 0xc8000222.

It seems that a folder gets corrupted but that you can’t remove the auto-update folder until the relevant process is stopped. So, you really want to remove the directory %windir%/SoftwareDistribution but first of all you have to do this at the command prompt (net stop WuAuServ) to stop I guess an auto-update process which uses that folder. Then remove or rename the folder %windir%/SoftwareDistribution before restarting the relevant process (net start WuAuServ). Then DotNet should install.

Finally, restart your computer after installing .NET and before installing FieldWorks or SayMore. It possibly could work without you doing so but I haven’t had much success with that.

Glossy open source project opened

For those interested in the Glossy project and who might want to contribute ideas and submit improvements, there’s now a project on bitbucket. Thanks for Milt Jones and others for suggestions. There’s more that could be done, but I don’t have time at the moment to work on it. I’ll try to put together ideas for future fixes/improvements on the wiki on bitbucket. Any contributions from the public very welcome and perhaps we can work on it together.

Vimeo oembed fix for WordPress (again!)

Either Vimeo or WordPress has changed something, but oembeds weren’t working for me with Vimeo. Some helpful people had produced patches in the form of plugins but they didn’t work either. However, they very nearly did. Here’s my corrected version of the plugin.


/*
Plugin Name: Vimeo oembed hotfix
Plugin URI:
Description: Enable https vimeo embeds. Note: If for any reason videos are not embedding properly, simply deactivate, and then reactivate this plugin. Note2: either Vimeo changed or something else went wrong but I had to update the line below with "oembed." in it.
Author: gluten, rowbory
Version: 2.1
Author URI: http://belabor.org/
*/

function oembed_hotfix_vimeo_oembed_providers( $providers ) {
unset($providers['#http://(www\.)?vimeo\.com/.*#i']);
$providers['#https?://(www\.)?vimeo\.com/.*#i'] = array( 'https://vimeo.com/api/oembed.xml?{format}', true );
return $providers;
}
add_filter('oembed_providers', 'oembed_hotfix_vimeo_oembed_providers');

// based on this patch: http://core.trac.wordpress.org/attachment/ticket/10337/10337.10.patch
function oembed_hotfix_delete_all_oembed_caches() {
// Based on delete_post_meta_by_key()
global $wpdb;
$post_ids = $wpdb->get_col( "SELECT DISTINCT post_id FROM $wpdb->postmeta WHERE meta_key LIKE '_oembed_%'" );
if ( $post_ids ) {
$postmetaids = $wpdb->get_col( "SELECT meta_id FROM $wpdb->postmeta WHERE meta_key LIKE '_oembed_%'" );
$in = implode( ',', array_fill( 1, count($postmetaids), '%d' ) );
do_action( 'delete_postmeta', $postmetaids );
$wpdb->query( $wpdb->prepare( "DELETE FROM $wpdb->postmeta WHERE meta_id IN($in)", $postmetaids ) );
do_action( 'deleted_postmeta', $postmetaids );
foreach ( $post_ids as $post_id )
wp_cache_delete( $post_id, 'post_meta' );
return true;
}
return false;
}
register_activation_hook( __FILE__, 'oembed_hotfix_delete_all_oembed_caches' );

Download a zip of the tiny vimeo-oembed-fix plugin here.