wxMaxima with MacPorts/Mojave

I recently updated my Mac to macOS Mojave (10.14.1).

I was upgrading my MacPorts stuff, and found that wxMaxima was behaving weirdly – some smallish rectangular scroll frame is overlapping the main window and wxMaxima does not work right.

The display looks garbled and corrupted.

I found a way to make it behave better: show, then hide the History (menu item View – History). 

The scrolly thing seems to be a garbled history frame, and show/hiding cleans it up.

Hope that helps someone!



CEPSparker: get started building CEP panels for Adobe Creative Cloud

https://github.com/zwettemaan/CEPSparker. More info further below

If your developer team is (or will be) building CEP panels for Adobe Creative Cloud, consider hiring me to teach a hands-on training course and help them hit the ground running.

The up-ramp to efficient CEP panel development is steep, and I can help you reduce the unproductive ‘getting started’ time.

Contact [email protected] for more info.

I’ve been diligently building a ‘starter’ project for people wanting to dive into CEP-based extensions for Adobe Creative Cloud apps.

There’s still a long way to go, but the project has reached a stage where it is ripe enough for public consumption.

The project has a number of interesting aspects:

  • Encourage code reuse between ExtendScript and JavaScript
  • Tools for building, debugging, and project maintenance are provided
  • Nearly all these tools are written as human-readable command line scripts, so the tools also serve as documentation for the underlying processes
  • Text-based search-and replace customization tool, which reads from a template project to convert to a usable starter project
  • Absolutely minimal ‘side’ requirements: a Mac or Windows, Adobe Creative Cloud, a text editor and a Chrome-engine-based browser for debugging. That’s all you need.

Go have a look, and if you like the idea, ‘star’ the project on GitHub.

Currently, I am working on the ‘how to debug’ cookbooks. Especially debugging the embedded ExtendScript code inside the CEP panel can prove challenging.

I’ve just added a new JavaScript function ‘evalScript_AI_DEBUG’ for Illustrator ExtendScript, which works like CSInterface.evalScript, but uses a debuggable engine (“main”) instead of the anonymous, non-debuggable engine used by Illustrator CEP panels.

Xcode 9 Setting Names vs. Setting Titles

See screenshot below. That should help.

I use Xcode only every so often, and when I do, things have moved on, and I always feel like a stranger in a strange land.

I think Apple is rearranging the furniture (i.e. changing the UI) just for the heck of it.

So, I was in for another spate of Xcode, and for the life of me, I could not figure out how to show build setting names instead of setting titles.

The Build Setting Titles are the readable version (e.g. ‘Enable Objective-C Exceptions’), and the Build Setting Names are the uppercase things (e.g. CLANG_ENABLE_OBJ_ARC).

In the past I used to be able to double-click any one of those titles or names and it would flip between the two states. That does not work any more. Probably that worked too well, and developers were way too efficient.

Later, I think I vaguely remember there was a some clickable control somewhere you could click. If it was ever there, it’s gone now.

For Xcode 9 it took me quite a bit of effort to find where it is now. It’s under the ‘Editor’ menu – ‘Show Setting Names’ or ‘Show Setting Titles’.

Also, there is a new Project/Targets sidebar that I don’t remember seeing in previous Xcode versions.

That sidebar is important. And probably because it is important, it is well hidden and not easy to find.

Below a screenshot that shows where those darn things are in Xcode 9. Hope this saves someone else some frustration.

ExtendExtendScript/GetURL: now with a simple installer

Note 1-Nov-2020: Make sure to check out my novel approach to GetURL: making curl available in ExtendScript. Not just for InDesign – any Adobe app that supports ExtendScript can use this. More info here:


If all you want to get is an easy-to-use GetURL function for InDesign ExtendScript, I now have a simple installer to install ExtendExtendScript with the GetURL plug-in.

Version 1.0.4 was released on 16-Dec-2019 and supports InDesign 2020/macOS Catalina. This is a labor of love, and maintaining this tool is a substantial cost to Rorohiko. If this extension is useful to you, help us properly gauge how useful this is to you, and show us your level of interest and appreciation by donating via PayPal to [email protected] If there is sufficient interest and appreciation, we’d be encouraged to keep on releasing updates!

Download it here: https://www.rorohiko.com/downloads/ExtendExtendScript.1.0.4.zip

Important: no warranties, neither expressed nor implied: use at your own risk.

You can find the source code and read more about ExtendExtendScript and how it works in some of my other posts: https://coppieters.nz/?p=133

If you’re not interested in how ExtendExtendScript works and all you want to do is access some URL from ExtendScript, this installer is for you.

The ExtendExtendScript extension is invisible. All it does is augment the InDesign ExtendScript environment with some new functions you can call.

It only works from a persistent ExtendScript engine; don’t run it from the ‘main’ engine, which is not persistent.

After installing this extension you can access a full-fledged HTTP/HTTPS downloader callable from ExtendScript, and you can write ExtendScript code like the following examples:

// Need to run in a persistent engine for callbacks to work
// Make sure to add JSInterface.jsx and json2.jsx

#targetengine TestSomewhere
#include "JSInterface.jsx"

function handleData(data) { 
 var fileURL = "~/Desktop/image.jpg";
 var file = new File(fileURL);
 file.encoding = "BINARY";
 alert("File downloaded to " + fileURL);

// Download an image file in ExtendScript over https
var url = "https://www.rorohiko.com/MagnetoGuides2-poster.jpg";



// Need to run in a persistent engine for callbacks to work
// Make sure to add JSInterface.jsx and json2.jsx

#targetengine TestSomewhere
#include "JSInterface.jsx"

// Some sample ExtendScript code. Fetch a URL over https and display 
// in an alert

function handleData(data) { 

var url = "https://www.rorohiko.com/welcome.msg";


This installer came about because I had built a more or less ‘standardized’ installer for installing the more recent software I wrote for Rorohiko. This installer does not rely on the ExManCmd command line tool, so it should be more robust. ExManCmd fails way too often, so I avoided using it.

And because I had the installer available anyway, I decided to roll off a copy just for ExtendExtendScript. Hope it proves useful!

Slide Guitar

Around New Year, I was at the Whare Flat folk festival in Dunedin; my second time around.


I attended a few workshops: Bluegrass Jam, Old-time Music Jam, and one about slide guitar.

Tony Burt let me use his own personal resonator guitar, and I had great fun.


So, I’ve ordered Yet Another Guitar – a Gretsch G9210 Boxcar Square Neck Resonator. I wish I could afford a real Dobro, but as I am just getting my feet wet, the Gretsch will most certainly do.

I did not know, but it turns out there are multiple types of slide guitar: some are played like regular guitars, some are played while they lie on the lap.

The ‘regular’ ones have a round neck, and the strings are not too high above the frets, so you can either fret them normally with your fingers, or use a slide or bottleneck around your finger to play them.

The ‘square neck’ ones are the ones you hold flat on your lap. There the strings are much higher above the frets: the frets only serve as an indication of where the tone lies, and you use a steel slider to change the tone.

These guitars are often tuned in all kinds of tunings; when I played Tony’s guitar, it was tuned G D B G D B.

I love the totally different sound coming from these guitars. Hope I manage to learn to play it properly.

Getting off Facebook

Welcome to my blog!

I finally bit the bullet, and decided to get off Facebook.

I weighed up the pros and cons, and in the end, the cons weighed heavier.

Despite being about ‘getting people together’, I think that in the end, Facebook is more about splitting people apart than about getting people together.

I’ve seen former friends become really angry at one another and never talk to each other again because Facebook is fanning the flames of discord. I cannot help but think of ‘Radio Mille Collines’.

Staying in touch with family and friends and things like community groups on Facebook serve a purpose, but that’s not enough to turn a blind eye to the harmful side of Facebook.

So, instead of Facebook, I’ll be here, on this blog!

I am also still on Flickr:


If you’re so inclined, you can send me a friend request – by default, no personal pictures are shown, but friends and family can see personal pictures too.

On Instagram:


On Twitter:


You can also leave comments on this blog, or email me at

kris <AT> coppieters.nz

However, I want to share you the story why I have a beard.

When I started to develop my first wispy hairs on my chin, I decided that I was never going to shave. Assuming a man needs 5 minutes each day to shave, and assuming I was going to live to 72, I was going to save (72 – 17) * 365.25 * 5 = 100443.75 minutes = 70 days of my life.

The story has a sad ending: I think I wasted all my gains on social media 🙁

So, come back occasionally. My blog will mostly be terribly boring, but there might be some interesting nuggets here and there.

Final word: I would like to ask everyone who read this far to try and avoid using the word ‘they’, or at least, be aware of it when you’re using it.

You’ll notice lately there is a steep incline in its usage: ‘They do this’, ‘They all believe that’,… and invariably it’s an indication of stereotyping.

If you hear yourself say ‘They’… stop and think!

Try to put some names to the ‘they’. If you cannot put forward any people’s names, but instead your mind’s eye comes up with a faceless stereotype image of ‘a person’, question yourself.

ExtensionManager trouble when installing ExtendExtendScript?

I was contacted by someone who had trouble installing the new GetURL stuff I concocted a few months ago.

Here are some notes that might be helpful if you’re having similar issues:

Please take what follows for what it is worth. There are a number of assumptions being made in the info below which might be incorrect.

​Sometimes ExManCmd does not want to install stuff, and that also affects any third party installers that use ExManCmd.

My theory is that there is some kind of extension repository that is used by ExManCmd.​​

Once that repository gets corrupted, nothing that needs ExManCmd works any more.

The simplest (but most annoying) fix is ‘scorched earth’: uninstall and scrub the computer of anything Adobe, then reinstall from scratch. I don’t like that very much. ​​

The way I get around it for stuff that needs to be deployed is to not use ExManCmd at all; I use Xojo to write my own installers, and in my installer simply ‘unzip’ the .ZXP file where it needs to go.

With some care, I can make sure no odd unwanted files sneak in and the code signatures don’t get invalidated, and it works.

​Yet another ‘sledgehammer’ approach that also works for me is outlined below.

This is probably only practical on an individual workstation. You don’t want to deploy to many computers using the following approach.

​To avoid signature issues, you might want to first turn off the signature checking. In other words, turn on PlayerDebugMode.

or similar, and search for PlayerDebugMode

The ‘unzip straight into CEP/extensions’ might actually work without tweaking PlayerDebugMode as long as you don’t invalidate the signature, but that’s not always straightforward; it’s easier to set PlayerDebugMode.

I use the following command line script on Mac (I put it into a double-clickable shell script file called ‘setPlayerDebugMode.command’):​ ​

defaults write com.adobe.CSXS.4.plist PlayerDebugMode 1 
defaults write com.adobe.CSXS.4.plist LogLevel 5 
defaults write com.adobe.CSXS.5.plist PlayerDebugMode 1 
defaults write com.adobe.CSXS.5.plist LogLevel 5 
defaults write com.adobe.CSXS.6.plist PlayerDebugMode 1 
defaults write com.adobe.CSXS.6.plist LogLevel 5 
defaults write com.adobe.CSXS.7.plist PlayerDebugMode 1 
defaults write com.adobe.CSXS.7.plist LogLevel 5 
defaults write com.adobe.CSXS.8.plist PlayerDebugMode 1 
defaults write com.adobe.CSXS.8.plist LogLevel 5 
killall -u `whoami` cfprefsd ​​

Make sure to ‘chmod +x setPlayerDebugMode.command’

And I have another script to reverse that in shell script ‘clearPlayerDebugMode.command’:​

defaults write com.adobe.CSXS.4.plist PlayerDebugMode 0 
defaults write com.adobe.CSXS.4.plist LogLevel 1 
defaults write com.adobe.CSXS.5.plist PlayerDebugMode 0 
defaults write com.adobe.CSXS.5.plist LogLevel 1 
defaults write com.adobe.CSXS.6.plist PlayerDebugMode 0 
defaults write com.adobe.CSXS.6.plist LogLevel 1 
defaults write com.adobe.CSXS.7.plist PlayerDebugMode 0 
defaults write com.adobe.CSXS.7.plist LogLevel 1 
defaults write com.adobe.CSXS.8.plist PlayerDebugMode 0 
defaults write com.adobe.CSXS.8.plist LogLevel 1 ​
killall -u `whoami` cfprefsd​ ​

These scripts hit all of CC, CC 2014, CC 2015, CC 2017 and CC 2018 in one go.

​Once the PlayerDebugMode is set to 1, you can run extensions with ‘invalid’ signatures. ​

The second step is to use a standard unzip command line tool, to unzip the ZXP file into the location it needs to go.

I do something on the Mac command line:​ ​

cd  ~/Library/Application Support/Adobe/CEP​/extensions 
mkdir com.rorohiko.extendExtendScript 
cd com.rorohiko.extendExtendScript 
​unzip ...pathtozxp.../com.rorohiko.extendExtendScript.zxp

​That seems to work.

Note that the manifest of the downloadable ZXP is only set to go up to CC 2017 – it needs to be adjusted to also support CC 2018. I’ll change that some time when I get round to it.