Autopano Giga Wifi Bug

I’ve encountered an interesting bug in Autopano Giga (APG), a product from Kolor, as subsidiary of GoPro.

The Symptom:

Whenever APG is running, it constantly triggers the Mac wifi control software airportd to actively scan for available WIFI networks.

This happens when the system is connected via Ethernet, and not even using WIFI for its network traffic.

This happens despite options to send analytics, and check for beta versions being disabled.

Below, is 10 seconds of captured logfile from OS X’s wifi.log, covering launch, and then immediate quit.

287 lines of logfile in 10 seconds, and that rate continues for as long as the software is running. Once again, this machine is not using WIFI for any actual network traffic, and APG isn’t transmitting any data over this – it’s merely waking up the WIFI system, and telling it to scan the local basestations, and then writing a massive amount of data to multiple logfiles. God only knows what this would do to the battery life on a portable.

Turning off WIFI is the only way to make it stop.

The Cause:

Kolor’s official twitter account suggested to me that this is caused by APG looking for updates.

  • Where’s the setting to turn off checking for updates? I’ve turned off checking for beta versions, that makes no difference.
  • APG attempts to connect to google on quit, which you would only know if you had Little Snitch installed and telling you what apps are trying to phone home behind your back.
  • If it is an update check, why is APG looking for updates, every (approximately) 5 seconds as long as it is running?
  • Why is it powering up the WIFI scan, when the system is set to use Ethernet as its network?

The Horror:

Mon Apr 3 16:49:01.378 IPC: <airportd[54]> ADDED XPC CLIENT CONNECTION [AutopanoGiga (pid=1017, euid=502, egid=20)]
Mon Apr 3 16:49:01.379 Info: <airportd[54]> SCAN request received from pid 1017 (AutopanoGiga) with priority 0
Mon Apr 3 16:49:01.379 <airportd[54]> WARNING: AutopanoGiga (1017) is not entitled for com.apple.wifi.scan, temporarily allowing request with background priority —— all entitlement requirements will be strictly enforced in a future release
Mon Apr 3 16:49:01.380 <kernel> IO80211ScanManager::startScan: Broadcast scan request received from 'airportd' (pid 54) ().
Mon Apr 3 16:49:01.380 <kernel> IO80211ScanManager::startScan: Initiating scan.
Mon Apr 3 16:49:01.570 <kernel> IO80211ScanManager::scanDone: Scheduling cache purge timer in 30 seconds.
Mon Apr 3 16:49:01.570 <kernel> IO80211ScanManager::getScanResult: All scan results returned for 'airportd' (pid 54).
Mon Apr 3 16:49:01.570 Driver Event: <airportd[54]> _bsd_80211_event_callback: SCAN_CACHE_UPDATED (en2)
Mon Apr 3 16:49:01.570 AutoJoin: <airportd[54]> Successful cache-assisted scan request for AutopanoGiga with channels {(
Mon Apr 3 16:49:01.570 <CWChannel: 0x7f9ba8508670> [channelNumber=1(2GHz), channelWidth={20MHz}, active],
Mon Apr 3 16:49:01.570 <CWChannel: 0x7f9ba8506410> [channelNumber=2(2GHz), channelWidth={20MHz}, active],
Mon Apr 3 16:49:01.570 <CWChannel: 0x7f9ba8508a70> [channelNumber=3(2GHz), channelWidth={20MHz}, active],
Mon Apr 3 16:49:01.570 <CWChannel: 0x7f9ba8509ea0> [channelNumber=4(2GHz), channelWidth={20MHz}, active],
Mon Apr 3 16:49:01.570 <CWChannel: 0x7f9ba8510260> [channelNumber=5(2GHz), channelWidth={20MHz}, active],
Mon Apr 3 16:49:01.570 <CWChannel: 0x7f9ba8512a50> [channelNumber=6(2GHz), channelWidth={20MHz}, active]
Mon Apr 3 16:49:01.570 )} took 0.1901 seconds, returned 2 results
Mon Apr 3 16:49:01.570 Info: <Wi-Fi Menu Extra[289]> scan cache updated
Mon Apr 3 16:49:01.570 <kernel> IO80211ScanManager::startScan: Broadcast scan request received from 'airportd' (pid 54) ().
Mon Apr 3 16:49:01.570 <kernel> IO80211ScanManager::startScan: Initiating scan.
Mon Apr 3 16:49:01.571 Info: <airportd[54]> QUERY SCAN CACHE request received from pid 220 (locationd)
Mon Apr 3 16:49:01.760 <kernel> IO80211ScanManager::getScanResult: All scan results returned for 'airportd' (pid 54).
Mon Apr 3 16:49:01.761 AutoJoin: <airportd[54]> Successful cache-assisted scan request for AutopanoGiga with channels {(
Mon Apr 3 16:49:01.761 <CWChannel: 0x7f9ba850f5e0> [channelNumber=7(2GHz), channelWidth={20MHz}, active],
Mon Apr 3 16:49:01.761 <CWChannel: 0x7f9ba8508790> [channelNumber=8(2GHz), channelWidth={20MHz}, active],
Mon Apr 3 16:49:01.761 <CWChannel: 0x7f9ba8525b70> [channelNumber=9(2GHz), channelWidth={20MHz}, active],
Mon Apr 3 16:49:01.761 <CWChannel: 0x7f9ba850bc80> [channelNumber=10(2GHz), channelWidth={20MHz}, active],
Mon Apr 3 16:49:01.761 <CWChannel: 0x7f9ba85270f0> [channelNumber=11(2GHz), channelWidth={20MHz}, active],
Mon Apr 3 16:49:01.761 <CWChannel: 0x7f9ba8527030> [channelNumber=36(5GHz), channelWidth={40MHz(+1)}, active]
Mon Apr 3 16:49:01.761 )} took 0.1907 seconds, returned 0 results
Mon Apr 3 16:49:01.761 <kernel> IO80211ScanManager::startScan: Broadcast scan request received from 'airportd' (pid 54) ().
Mon Apr 3 16:49:01.761 <kernel> IO80211ScanManager::startScan: Initiating scan.
Mon Apr 3 16:49:01.973 <kernel> IO80211ScanManager::getScanResult: All scan results returned for 'airportd' (pid 54).
Mon Apr 3 16:49:01.973 AutoJoin: <airportd[54]> Successful cache-assisted scan request for AutopanoGiga with channels {(
Mon Apr 3 16:49:01.973 <CWChannel: 0x7f9ba85084b0> [channelNumber=40(5GHz), channelWidth={40MHz(-1)}, active],
Mon Apr 3 16:49:01.973 <CWChannel: 0x7f9ba850f7b0> [channelNumber=44(5GHz), channelWidth={40MHz(+1)}, active],
Mon Apr 3 16:49:01.973 <CWChannel: 0x7f9ba853ff70> [channelNumber=48(5GHz), channelWidth={40MHz(-1)}, active],
Mon Apr 3 16:49:01.973 <CWChannel: 0x7f9ba851b2a0> [channelNumber=149(5GHz), channelWidth={80MHz}, active],
Mon Apr 3 16:49:01.973 <CWChannel: 0x7f9ba851b6c0> [channelNumber=153(5GHz), channelWidth={80MHz}, active],
Mon Apr 3 16:49:01.973 <CWChannel: 0x7f9ba851bae0> [channelNumber=157(5GHz), channelWidth={80MHz}, active]
Mon Apr 3 16:49:01.973 )} took 0.2124 seconds, returned 1 results
Mon Apr 3 16:49:01.973 Driver Event: <airportd[54]> _bsd_80211_event_callback: SCAN_CACHE_UPDATED (en2)
Mon Apr 3 16:49:01.974 <kernel> IO80211ScanManager::startScan: Broadcast scan request received from 'airportd' (pid 54) ().
Mon Apr 3 16:49:01.974 <kernel> IO80211ScanManager::startScan: Initiating scan.
Mon Apr 3 16:49:01.975 Info: <airportd[54]> QUERY SCAN CACHE request received from pid 220 (locationd)
Mon Apr 3 16:49:02.669 <kernel> IO80211ScanManager::getScanResult: All scan results returned for 'airportd' (pid 54).
Mon Apr 3 16:49:02.669 AutoJoin: <airportd[54]> Successful cache-assisted scan request for AutopanoGiga with channels {(
Mon Apr 3 16:49:02.669 <CWChannel: 0x7f9ba851bf00> [channelNumber=161(5GHz), channelWidth={80MHz}, active],
Mon Apr 3 16:49:02.669 <CWChannel: 0x7f9ba851c320> [channelNumber=165(5GHz), channelWidth={20MHz}, active],
Mon Apr 3 16:49:02.669 <CWChannel: 0x7f9ba8508c20> [channelNumber=12(2GHz), channelWidth={20MHz}],
Mon Apr 3 16:49:02.670 <CWChannel: 0x7f9ba8528c90> [channelNumber=13(2GHz), channelWidth={20MHz}],
Mon Apr 3 16:49:02.670 <CWChannel: 0x7f9ba850fa90> [channelNumber=52(5GHz), channelWidth={40MHz(+1)}, DFS],
Mon Apr 3 16:49:02.670 <CWChannel: 0x7f9ba850e990> [channelNumber=56(5GHz), channelWidth={40MHz(-1)}, DFS]
Mon Apr 3 16:49:02.670 )} took 0.6960 seconds, returned 0 results
Mon Apr 3 16:49:02.670 Info: <Wi-Fi Menu Extra[289]> scan cache updated
Mon Apr 3 16:49:02.670 <kernel> IO80211ScanManager::startScan: Broadcast scan request received from 'airportd' (pid 54) ().
Mon Apr 3 16:49:02.670 <kernel> IO80211ScanManager::startScan: Initiating scan.
Mon Apr 3 16:49:03.589 <kernel> IO80211ScanManager::getScanResult: All scan results returned for 'airportd' (pid 54).
Mon Apr 3 16:49:03.589 AutoJoin: <airportd[54]> Successful cache-assisted scan request for AutopanoGiga with channels {(
Mon Apr 3 16:49:03.589 <CWChannel: 0x7f9ba8529710> [channelNumber=60(5GHz), channelWidth={40MHz(+1)}, DFS],
Mon Apr 3 16:49:03.589 <CWChannel: 0x7f9ba8529b30> [channelNumber=64(5GHz), channelWidth={40MHz(-1)}, DFS],
Mon Apr 3 16:49:03.589 <CWChannel: 0x7f9ba8529f50> [channelNumber=100(5GHz), channelWidth={40MHz(+1)}, DFS],
Mon Apr 3 16:49:03.589 <CWChannel: 0x7f9ba8511e30> [channelNumber=104(5GHz), channelWidth={40MHz(-1)}, DFS],
Mon Apr 3 16:49:03.589 <CWChannel: 0x7f9ba850fd50> [channelNumber=108(5GHz), channelWidth={40MHz(+1)}, DFS],
Mon Apr 3 16:49:03.589 <CWChannel: 0x7f9ba850ee50> [channelNumber=112(5GHz), channelWidth={40MHz(-1)}, DFS]
Mon Apr 3 16:49:03.589 )} took 0.9198 seconds, returned 0 results
Mon Apr 3 16:49:03.590 <kernel> IO80211ScanManager::startScan: Broadcast scan request received from 'airportd' (pid 54) ().
Mon Apr 3 16:49:03.590 <kernel> IO80211ScanManager::startScan: Initiating scan.
Mon Apr 3 16:49:04.512 <kernel> IO80211ScanManager::getScanResult: All scan results returned for 'airportd' (pid 54).
Mon Apr 3 16:49:04.512 AutoJoin: <airportd[54]> Successful cache-assisted scan request for AutopanoGiga with channels {(
Mon Apr 3 16:49:04.512 <CWChannel: 0x7f9ba850f270> [channelNumber=116(5GHz), channelWidth={40MHz(+1)}, DFS],
Mon Apr 3 16:49:04.512 <CWChannel: 0x7f9ba850dfe0> [channelNumber=120(5GHz), channelWidth={40MHz(-1)}, DFS],
Mon Apr 3 16:49:04.512 <CWChannel: 0x7f9ba850e400> [channelNumber=124(5GHz), channelWidth={40MHz(+1)}, DFS],
Mon Apr 3 16:49:04.512 <CWChannel: 0x7f9ba8519cb0> [channelNumber=128(5GHz), channelWidth={40MHz(-1)}, DFS],
Mon Apr 3 16:49:04.513 <CWChannel: 0x7f9ba851a0d0> [channelNumber=132(5GHz), channelWidth={40MHz(+1)}, DFS],
Mon Apr 3 16:49:04.513 <CWChannel: 0x7f9ba851a4f0> [channelNumber=136(5GHz), channelWidth={40MHz(-1)}, DFS]
Mon Apr 3 16:49:04.513 )} took 0.9229 seconds, returned 0 results
Mon Apr 3 16:49:04.513 Info: <Wi-Fi Menu Extra[289]> scan cache updated
Mon Apr 3 16:49:04.513 <kernel> IO80211ScanManager::startScan: Broadcast scan request received from 'airportd' (pid 54) ().
Mon Apr 3 16:49:04.513 <kernel> IO80211ScanManager::startScan: Initiating scan.
Mon Apr 3 16:49:04.790 <kernel> IO80211ScanManager::getScanResult: All scan results returned for 'airportd' (pid 54).
Mon Apr 3 16:49:04.790 AutoJoin: <airportd[54]> Successful cache-assisted scan request for AutopanoGiga with channels {(
Mon Apr 3 16:49:04.790 <CWChannel: 0x7f9ba851a910> [channelNumber=140(5GHz), channelWidth={40MHz(+1)}, DFS],
Mon Apr 3 16:49:04.790 <CWChannel: 0x7f9ba85123b0> [channelNumber=144(5GHz), channelWidth={40MHz(-1)}, DFS]
Mon Apr 3 16:49:04.790 )} took 0.2771 seconds, returned 0 results
Mon Apr 3 16:49:04.799 IPC: <airportd[54]> INVALIDATED XPC CLIENT CONNECTION [AutopanoGiga (pid=1017, euid=502, egid=20)]
Mon Apr 3 16:49:06.570 <kernel> IO80211ScanManager::startScan: Broadcast scan request received from 'airportd' (pid 54) ().
Mon Apr 3 16:49:06.570 <kernel> IO80211ScanManager::getScanResult: All scan results returned for 'airportd' (pid 54).
Mon Apr 3 16:49:11.244 IPC: <airportd[54]> ADDED XPC CLIENT CONNECTION [AutopanoGiga (pid=1017, euid=502, egid=20)]
Mon Apr 3 16:49:11.245 Info: <airportd[54]> SCAN request received from pid 1017 (AutopanoGiga) with priority 0
Mon Apr 3 16:49:11.246 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 1 does not require a live scan
Mon Apr 3 16:49:11.246 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 2 does not require a live scan
Mon Apr 3 16:49:11.246 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 3 does not require a live scan
Mon Apr 3 16:49:11.246 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 4 does not require a live scan
Mon Apr 3 16:49:11.246 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 5 does not require a live scan
Mon Apr 3 16:49:11.246 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 6 does not require a live scan
Mon Apr 3 16:49:11.246 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga does not require a live scan
Mon Apr 3 16:49:11.246 AutoJoin: <airportd[54]> Successful cache-assisted scan request for AutopanoGiga with channels {(
Mon Apr 3 16:49:11.246 <CWChannel: 0x7f9ba890fa00> [channelNumber=1(2GHz), channelWidth={20MHz}, active],
Mon Apr 3 16:49:11.246 <CWChannel: 0x7f9ba8912810> [channelNumber=2(2GHz), channelWidth={20MHz}, active],
Mon Apr 3 16:49:11.246 <CWChannel: 0x7f9ba890fa60> [channelNumber=3(2GHz), channelWidth={20MHz}, active],
Mon Apr 3 16:49:11.246 <CWChannel: 0x7f9ba8912800> [channelNumber=4(2GHz), channelWidth={20MHz}, active],
Mon Apr 3 16:49:11.246 <CWChannel: 0x7f9ba890fea0> [channelNumber=5(2GHz), channelWidth={20MHz}, active],
Mon Apr 3 16:49:11.246 <CWChannel: 0x7f9ba8916fe0> [channelNumber=6(2GHz), channelWidth={20MHz}, active]
Mon Apr 3 16:49:11.246 )} took 0.0004 seconds, returned 2 results
Mon Apr 3 16:49:11.246 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 7 does not require a live scan
Mon Apr 3 16:49:11.246 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 8 does not require a live scan
Mon Apr 3 16:49:11.246 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 9 does not require a live scan
Mon Apr 3 16:49:11.246 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 10 does not require a live scan
Mon Apr 3 16:49:11.246 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 11 does not require a live scan
Mon Apr 3 16:49:11.246 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 36 does not require a live scan
Mon Apr 3 16:49:11.246 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga does not require a live scan
Mon Apr 3 16:49:11.246 AutoJoin: <airportd[54]> Successful cache-assisted scan request for AutopanoGiga with channels {(
Mon Apr 3 16:49:11.246 <CWChannel: 0x7f9ba89034d0> [channelNumber=7(2GHz), channelWidth={20MHz}, active],
Mon Apr 3 16:49:11.246 <CWChannel: 0x7f9ba89035a0> [channelNumber=8(2GHz), channelWidth={20MHz}, active],
Mon Apr 3 16:49:11.246 <CWChannel: 0x7f9ba8916590> [channelNumber=9(2GHz), channelWidth={20MHz}, active],
Mon Apr 3 16:49:11.246 <CWChannel: 0x7f9ba8918220> [channelNumber=10(2GHz), channelWidth={20MHz}, active],
Mon Apr 3 16:49:11.246 <CWChannel: 0x7f9ba890eab0> [channelNumber=11(2GHz), channelWidth={20MHz}, active],
Mon Apr 3 16:49:11.247 <CWChannel: 0x7f9ba891ba00> [channelNumber=36(5GHz), channelWidth={40MHz(+1)}, active]
Mon Apr 3 16:49:11.247 )} took 0.0002 seconds, returned 0 results
Mon Apr 3 16:49:11.247 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 40 does not require a live scan
Mon Apr 3 16:49:11.247 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 44 does not require a live scan
Mon Apr 3 16:49:11.247 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 48 does not require a live scan
Mon Apr 3 16:49:11.247 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 149 does not require a live scan
Mon Apr 3 16:49:11.247 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 153 does not require a live scan
Mon Apr 3 16:49:11.247 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 157 does not require a live scan
Mon Apr 3 16:49:11.247 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga does not require a live scan
Mon Apr 3 16:49:11.247 AutoJoin: <airportd[54]> Successful cache-assisted scan request for AutopanoGiga with channels {(
Mon Apr 3 16:49:11.247 <CWChannel: 0x7f9ba891be20> [channelNumber=40(5GHz), channelWidth={40MHz(-1)}, active],
Mon Apr 3 16:49:11.247 <CWChannel: 0x7f9ba8910220> [channelNumber=44(5GHz), channelWidth={40MHz(+1)}, active],
Mon Apr 3 16:49:11.247 <CWChannel: 0x7f9ba8910640> [channelNumber=48(5GHz), channelWidth={40MHz(-1)}, active],
Mon Apr 3 16:49:11.247 <CWChannel: 0x7f9ba8927d90> [channelNumber=149(5GHz), channelWidth={80MHz}, active],
Mon Apr 3 16:49:11.247 <CWChannel: 0x7f9ba89281b0> [channelNumber=153(5GHz), channelWidth={80MHz}, active],
Mon Apr 3 16:49:11.247 <CWChannel: 0x7f9ba89285d0> [channelNumber=157(5GHz), channelWidth={80MHz}, active]
Mon Apr 3 16:49:11.247 )} took 0.0003 seconds, returned 1 results
Mon Apr 3 16:49:11.247 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 161 does not require a live scan
Mon Apr 3 16:49:11.247 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 165 does not require a live scan
Mon Apr 3 16:49:11.247 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 12 does not require a live scan
Mon Apr 3 16:49:11.247 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 13 does not require a live scan
Mon Apr 3 16:49:11.247 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 52 does not require a live scan
Mon Apr 3 16:49:11.247 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 56 does not require a live scan
Mon Apr 3 16:49:11.247 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga does not require a live scan
Mon Apr 3 16:49:11.247 AutoJoin: <airportd[54]> Successful cache-assisted scan request for AutopanoGiga with channels {(
Mon Apr 3 16:49:11.247 <CWChannel: 0x7f9ba89289f0> [channelNumber=161(5GHz), channelWidth={80MHz}, active],
Mon Apr 3 16:49:11.247 <CWChannel: 0x7f9ba8928e10> [channelNumber=165(5GHz), channelWidth={20MHz}, active],
Mon Apr 3 16:49:11.247 <CWChannel: 0x7f9ba890eba0> [channelNumber=12(2GHz), channelWidth={20MHz}],
Mon Apr 3 16:49:11.247 <CWChannel: 0x7f9ba891b8a0> [channelNumber=13(2GHz), channelWidth={20MHz}],
Mon Apr 3 16:49:11.247 <CWChannel: 0x7f9ba8910a60> [channelNumber=52(5GHz), channelWidth={40MHz(+1)}, DFS],
Mon Apr 3 16:49:11.247 <CWChannel: 0x7f9ba8910f50> [channelNumber=56(5GHz), channelWidth={40MHz(-1)}, DFS]
Mon Apr 3 16:49:11.247 )} took 0.0002 seconds, returned 0 results
Mon Apr 3 16:49:11.247 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 60 does not require a live scan
Mon Apr 3 16:49:11.247 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 64 does not require a live scan
Mon Apr 3 16:49:11.247 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 100 does not require a live scan
Mon Apr 3 16:49:11.247 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 104 does not require a live scan
Mon Apr 3 16:49:11.247 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 108 does not require a live scan
Mon Apr 3 16:49:11.247 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 112 does not require a live scan
Mon Apr 3 16:49:11.247 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga does not require a live scan
Mon Apr 3 16:49:11.247 AutoJoin: <airportd[54]> Successful cache-assisted scan request for AutopanoGiga with channels {(
Mon Apr 3 16:49:11.247 <CWChannel: 0x7f9ba89241b0> [channelNumber=60(5GHz), channelWidth={40MHz(+1)}, DFS],
Mon Apr 3 16:49:11.247 <CWChannel: 0x7f9ba89245d0> [channelNumber=64(5GHz), channelWidth={40MHz(-1)}, DFS],
Mon Apr 3 16:49:11.247 <CWChannel: 0x7f9ba89249f0> [channelNumber=100(5GHz), channelWidth={40MHz(+1)}, DFS],
Mon Apr 3 16:49:11.248 <CWChannel: 0x7f9ba8924e10> [channelNumber=104(5GHz), channelWidth={40MHz(-1)}, DFS],
Mon Apr 3 16:49:11.248 <CWChannel: 0x7f9ba8910d20> [channelNumber=108(5GHz), channelWidth={40MHz(+1)}, DFS],
Mon Apr 3 16:49:11.248 <CWChannel: 0x7f9ba8925720> [channelNumber=112(5GHz), channelWidth={40MHz(-1)}, DFS]
Mon Apr 3 16:49:11.248 )} took 0.0002 seconds, returned 0 results
Mon Apr 3 16:49:11.248 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 116 does not require a live scan
Mon Apr 3 16:49:11.248 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 120 does not require a live scan
Mon Apr 3 16:49:11.248 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 124 does not require a live scan
Mon Apr 3 16:49:11.248 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 128 does not require a live scan
Mon Apr 3 16:49:11.248 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 132 does not require a live scan
Mon Apr 3 16:49:11.248 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 136 does not require a live scan
Mon Apr 3 16:49:11.248 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga does not require a live scan
Mon Apr 3 16:49:11.248 AutoJoin: <airportd[54]> Successful cache-assisted scan request for AutopanoGiga with channels {(
Mon Apr 3 16:49:11.248 <CWChannel: 0x7f9ba8925b40> [channelNumber=116(5GHz), channelWidth={40MHz(+1)}, DFS],
Mon Apr 3 16:49:11.248 <CWChannel: 0x7f9ba8925f60> [channelNumber=120(5GHz), channelWidth={40MHz(-1)}, DFS],
Mon Apr 3 16:49:11.248 <CWChannel: 0x7f9ba8926380> [channelNumber=124(5GHz), channelWidth={40MHz(+1)}, DFS],
Mon Apr 3 16:49:11.248 <CWChannel: 0x7f9ba89267a0> [channelNumber=128(5GHz), channelWidth={40MHz(-1)}, DFS],
Mon Apr 3 16:49:11.248 <CWChannel: 0x7f9ba8926bc0> [channelNumber=132(5GHz), channelWidth={40MHz(+1)}, DFS],
Mon Apr 3 16:49:11.248 <CWChannel: 0x7f9ba8926fe0> [channelNumber=136(5GHz), channelWidth={40MHz(-1)}, DFS]
Mon Apr 3 16:49:11.248 )} took 0.0002 seconds, returned 0 results
Mon Apr 3 16:49:11.248 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 140 does not require a live scan
Mon Apr 3 16:49:11.248 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 144 does not require a live scan
Mon Apr 3 16:49:11.248 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga does not require a live scan
Mon Apr 3 16:49:11.248 AutoJoin: <airportd[54]> Successful cache-assisted scan request for AutopanoGiga with channels {(
Mon Apr 3 16:49:11.248 <CWChannel: 0x7f9ba8927400> [channelNumber=140(5GHz), channelWidth={40MHz(+1)}, DFS],
Mon Apr 3 16:49:11.248 <CWChannel: 0x7f9ba8925390> [channelNumber=144(5GHz), channelWidth={40MHz(-1)}, DFS]
Mon Apr 3 16:49:11.248 )} took 0.0001 seconds, returned 0 results
Mon Apr 3 16:49:11.256 IPC: <airportd[54]> INVALIDATED XPC CLIENT CONNECTION [AutopanoGiga (pid=1017, euid=502, egid=20)]
Mon Apr 3 16:49:11.276 IPC: <airportd[54]> ADDED XPC CLIENT CONNECTION [AutopanoGiga (pid=1017, euid=502, egid=20)]
Mon Apr 3 16:49:11.276 Info: <airportd[54]> SCAN request received from pid 1017 (AutopanoGiga) with priority 0
Mon Apr 3 16:49:11.277 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 1 does not require a live scan
Mon Apr 3 16:49:11.277 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 2 does not require a live scan
Mon Apr 3 16:49:11.277 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 3 does not require a live scan
Mon Apr 3 16:49:11.277 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 4 does not require a live scan
Mon Apr 3 16:49:11.277 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 5 does not require a live scan
Mon Apr 3 16:49:11.277 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 6 does not require a live scan
Mon Apr 3 16:49:11.277 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga does not require a live scan
Mon Apr 3 16:49:11.277 AutoJoin: <airportd[54]> Successful cache-assisted scan request for AutopanoGiga with channels {(
Mon Apr 3 16:49:11.277 <CWChannel: 0x7f9babe22710> [channelNumber=1(2GHz), channelWidth={20MHz}, active],
Mon Apr 3 16:49:11.277 <CWChannel: 0x7f9babe07cb0> [channelNumber=2(2GHz), channelWidth={20MHz}, active],
Mon Apr 3 16:49:11.277 <CWChannel: 0x7f9babe1bf20> [channelNumber=3(2GHz), channelWidth={20MHz}, active],
Mon Apr 3 16:49:11.277 <CWChannel: 0x7f9babe07ca0> [channelNumber=4(2GHz), channelWidth={20MHz}, active],
Mon Apr 3 16:49:11.277 <CWChannel: 0x7f9babe00690> [channelNumber=5(2GHz), channelWidth={20MHz}, active],
Mon Apr 3 16:49:11.277 <CWChannel: 0x7f9babe0daf0> [channelNumber=6(2GHz), channelWidth={20MHz}, active]
Mon Apr 3 16:49:11.277 )} took 0.0003 seconds, returned 2 results
Mon Apr 3 16:49:11.277 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 7 does not require a live scan
Mon Apr 3 16:49:11.277 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 8 does not require a live scan
Mon Apr 3 16:49:11.277 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 9 does not require a live scan
Mon Apr 3 16:49:11.277 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 10 does not require a live scan
Mon Apr 3 16:49:11.277 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 11 does not require a live scan
Mon Apr 3 16:49:11.277 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 36 does not require a live scan
Mon Apr 3 16:49:11.277 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga does not require a live scan
Mon Apr 3 16:49:11.277 AutoJoin: <airportd[54]> Successful cache-assisted scan request for AutopanoGiga with channels {(
Mon Apr 3 16:49:11.277 <CWChannel: 0x7f9babe0e1a0> [channelNumber=7(2GHz), channelWidth={20MHz}, active],
Mon Apr 3 16:49:11.277 <CWChannel: 0x7f9babe22050> [channelNumber=8(2GHz), channelWidth={20MHz}, active],
Mon Apr 3 16:49:11.277 <CWChannel: 0x7f9babe1dc50> [channelNumber=9(2GHz), channelWidth={20MHz}, active],
Mon Apr 3 16:49:11.277 <CWChannel: 0x7f9babe19080> [channelNumber=10(2GHz), channelWidth={20MHz}, active],
Mon Apr 3 16:49:11.277 <CWChannel: 0x7f9babe16d80> [channelNumber=11(2GHz), channelWidth={20MHz}, active],
Mon Apr 3 16:49:11.277 <CWChannel: 0x7f9babe30630> [channelNumber=36(5GHz), channelWidth={40MHz(+1)}, active]
Mon Apr 3 16:49:11.277 )} took 0.0002 seconds, returned 0 results
Mon Apr 3 16:49:11.278 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 40 does not require a live scan
Mon Apr 3 16:49:11.278 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 44 does not require a live scan
Mon Apr 3 16:49:11.278 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 48 does not require a live scan
Mon Apr 3 16:49:11.278 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 149 does not require a live scan
Mon Apr 3 16:49:11.278 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 153 does not require a live scan
Mon Apr 3 16:49:11.278 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 157 does not require a live scan
Mon Apr 3 16:49:11.278 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga does not require a live scan
Mon Apr 3 16:49:11.278 AutoJoin: <airportd[54]> Successful cache-assisted scan request for AutopanoGiga with channels {(
Mon Apr 3 16:49:11.278 <CWChannel: 0x7f9babe0c660> [channelNumber=40(5GHz), channelWidth={40MHz(-1)}, active],
Mon Apr 3 16:49:11.278 <CWChannel: 0x7f9babe2c1f0> [channelNumber=44(5GHz), channelWidth={40MHz(+1)}, active],
Mon Apr 3 16:49:11.278 <CWChannel: 0x7f9babe2c370> [channelNumber=48(5GHz), channelWidth={40MHz(-1)}, active],
Mon Apr 3 16:49:11.278 <CWChannel: 0x7f9babe1c360> [channelNumber=149(5GHz), channelWidth={80MHz}, active],
Mon Apr 3 16:49:11.278 <CWChannel: 0x7f9babe25140> [channelNumber=153(5GHz), channelWidth={80MHz}, active],
Mon Apr 3 16:49:11.278 <CWChannel: 0x7f9babe0acc0> [channelNumber=157(5GHz), channelWidth={80MHz}, active]
Mon Apr 3 16:49:11.278 )} took 0.0002 seconds, returned 1 results
Mon Apr 3 16:49:11.278 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 161 does not require a live scan
Mon Apr 3 16:49:11.278 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 165 does not require a live scan
Mon Apr 3 16:49:11.278 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 12 does not require a live scan
Mon Apr 3 16:49:11.278 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 13 does not require a live scan
Mon Apr 3 16:49:11.278 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 52 does not require a live scan
Mon Apr 3 16:49:11.278 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 56 does not require a live scan
Mon Apr 3 16:49:11.278 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga does not require a live scan
Mon Apr 3 16:49:11.278 AutoJoin: <airportd[54]> Successful cache-assisted scan request for AutopanoGiga with channels {(
Mon Apr 3 16:49:11.278 <CWChannel: 0x7f9babe07140> [channelNumber=161(5GHz), channelWidth={80MHz}, active],
Mon Apr 3 16:49:11.278 <CWChannel: 0x7f9babe30cb0> [channelNumber=165(5GHz), channelWidth={20MHz}, active],
Mon Apr 3 16:49:11.278 <CWChannel: 0x7f9babe29350> [channelNumber=12(2GHz), channelWidth={20MHz}],
Mon Apr 3 16:49:11.278 <CWChannel: 0x7f9babe06d10> [channelNumber=13(2GHz), channelWidth={20MHz}],
Mon Apr 3 16:49:11.278 <CWChannel: 0x7f9babe31430> [channelNumber=52(5GHz), channelWidth={40MHz(+1)}, DFS],
Mon Apr 3 16:49:11.278 <CWChannel: 0x7f9babe08830> [channelNumber=56(5GHz), channelWidth={40MHz(-1)}, DFS]
Mon Apr 3 16:49:11.278 )} took 0.0002 seconds, returned 0 results
Mon Apr 3 16:49:11.278 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 60 does not require a live scan
Mon Apr 3 16:49:11.278 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 64 does not require a live scan
Mon Apr 3 16:49:11.278 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 100 does not require a live scan
Mon Apr 3 16:49:11.278 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 104 does not require a live scan
Mon Apr 3 16:49:11.278 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 108 does not require a live scan
Mon Apr 3 16:49:11.278 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 112 does not require a live scan
Mon Apr 3 16:49:11.278 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga does not require a live scan
Mon Apr 3 16:49:11.278 AutoJoin: <airportd[54]> Successful cache-assisted scan request for AutopanoGiga with channels {(
Mon Apr 3 16:49:11.278 <CWChannel: 0x7f9babe2afd0> [channelNumber=60(5GHz), channelWidth={40MHz(+1)}, DFS],
Mon Apr 3 16:49:11.278 <CWChannel: 0x7f9babe1dfb0> [channelNumber=64(5GHz), channelWidth={40MHz(-1)}, DFS],
Mon Apr 3 16:49:11.278 <CWChannel: 0x7f9babe29500> [channelNumber=100(5GHz), channelWidth={40MHz(+1)}, DFS],
Mon Apr 3 16:49:11.278 <CWChannel: 0x7f9babe0b4d0> [channelNumber=104(5GHz), channelWidth={40MHz(-1)}, DFS],
Mon Apr 3 16:49:11.278 <CWChannel: 0x7f9babe2eb80> [channelNumber=108(5GHz), channelWidth={40MHz(+1)}, DFS],
Mon Apr 3 16:49:11.278 <CWChannel: 0x7f9babe296a0> [channelNumber=112(5GHz), channelWidth={40MHz(-1)}, DFS]
Mon Apr 3 16:49:11.278 )} took 0.0002 seconds, returned 0 results
Mon Apr 3 16:49:11.278 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 116 does not require a live scan
Mon Apr 3 16:49:11.279 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 120 does not require a live scan
Mon Apr 3 16:49:11.279 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 124 does not require a live scan
Mon Apr 3 16:49:11.279 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 128 does not require a live scan
Mon Apr 3 16:49:11.279 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 132 does not require a live scan
Mon Apr 3 16:49:11.279 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 136 does not require a live scan
Mon Apr 3 16:49:11.279 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga does not require a live scan
Mon Apr 3 16:49:11.279 AutoJoin: <airportd[54]> Successful cache-assisted scan request for AutopanoGiga with channels {(
Mon Apr 3 16:49:11.279 <CWChannel: 0x7f9babe0b750> [channelNumber=116(5GHz), channelWidth={40MHz(+1)}, DFS],
Mon Apr 3 16:49:11.279 <CWChannel: 0x7f9babe15ef0> [channelNumber=120(5GHz), channelWidth={40MHz(-1)}, DFS],
Mon Apr 3 16:49:11.279 <CWChannel: 0x7f9babe0d2d0> [channelNumber=124(5GHz), channelWidth={40MHz(+1)}, DFS],
Mon Apr 3 16:49:11.279 <CWChannel: 0x7f9babe07770> [channelNumber=128(5GHz), channelWidth={40MHz(-1)}, DFS],
Mon Apr 3 16:49:11.279 <CWChannel: 0x7f9babe1a9d0> [channelNumber=132(5GHz), channelWidth={40MHz(+1)}, DFS],
Mon Apr 3 16:49:11.279 <CWChannel: 0x7f9babe2f5f0> [channelNumber=136(5GHz), channelWidth={40MHz(-1)}, DFS]
Mon Apr 3 16:49:11.279 )} took 0.0002 seconds, returned 0 results
Mon Apr 3 16:49:11.279 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 140 does not require a live scan
Mon Apr 3 16:49:11.279 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga on channel 144 does not require a live scan
Mon Apr 3 16:49:11.279 Scan: <airportd[54]> Cache-assisted scan request for AutopanoGiga does not require a live scan
Mon Apr 3 16:49:11.279 AutoJoin: <airportd[54]> Successful cache-assisted scan request for AutopanoGiga with channels {(
Mon Apr 3 16:49:11.279 <CWChannel: 0x7f9babe20790> [channelNumber=140(5GHz), channelWidth={40MHz(+1)}, DFS],
Mon Apr 3 16:49:11.279 <CWChannel: 0x7f9babe2ffb0> [channelNumber=144(5GHz), channelWidth={40MHz(-1)}, DFS]
Mon Apr 3 16:49:11.279 )} took 0.0001 seconds, returned 0 results
Mon Apr 3 16:49:11.287 IPC: <airportd[54]> INVALIDATED XPC CLIENT CONNECTION [AutopanoGiga (pid=1017, euid=502, egid=20)]

Post-Storm

Didn’t really get much of a feeling for the ferocity of the storm that hit last night, the tail end of Tropical Cyclone Debbie, but going for a wander down to the river this afternoon, and clearly, we copped a fair wallop.

2016 in Review

Somewhat delayed, but Here’s a reflection on 2016. It’s been a relatively quiet year, mostly spent on nagging health issues. Lots of physio rebuilding my knee, which periodically gets worse, in my opinion, because the post-operative rehab physio in 2012 got me jumping too early. Just as that was coming good, I managed to tear a ligament in my dominant hand, one that keeps the tendon centred over the top of the first knuckle, meaning it fell off to the side when I bent my finger down enough. A pretty terrifying experience all round, but after 2 months in a splint it’s slowly getting better.

In terms of art, the beginning of the year saw Surfing The Deathline – Fourth Dose released, and now at the beginning of 2017, Fifth Dose is out, which means it’s all done – I could be hit by a bus tomorrow, and the work is more or less what I intended. Finishing a project that’s been going for 14 years is interesting. It didn’t really have the commercial success I would have liked, but at least it’s done. Most importantly, I’m now free to look to new projects.

Some other notable events this year were a small retrospective of student sculptures at a laneways festival, and delivering a PetchaKucha talk about The Metaning at Nambour.

Going in to 2017, what are my goals? Right now, I’m going back through the old issues of Surfing The Deathine, and updating them to the style of the last part. Then? I’ve got a bunch of photographic projects planned, some will require space to set up lights etc, some are landscape based. Along with that, there’s sculpture – I’m going to need space to weld, after which I’m going to try to learn TIG welding properly, so I can do fine and neat work. Things to look at sculpturally are revisiting the ethernet figurative piece, even if it means I just have to buy bulk cable in various shades of blue. I’ve also got to get serious about investigating bending perspex rod without blistering it, so I can build small versions of my valve sculptures.

I think that’s enough to have on my plate for the moment.

Anachronism

The anachronism of using wood to create a case for a technological item, is perhaps blunted by the use of kevlar in the laminate. It provides scratch protection when placing the phone up or down on a flat surface, especially for the camera lens. A big plus is the minimalist logo on the back – too many cases have the casemaker’s name in huge letters.

While the packaging states it’s for the iPhone 5/5s, it’s also fine with the SE.

Fundamentally Dishonest.

I recently received a communication from a representative if the Australian Copyright lobby, regarding comments I had made on Twitter at the fact that surveys of copyright association members fail to isolate territorial copyright as a question (should it exist?) on its own. This has the effect of preventing members from furnishing their representative organisation with an opinion that could clash with their stated policy, driven as it is, in my opinion, by publishers and middlemen, rather than creators. The response I started writing became so long, that it felt like the sort of thing that makes you look like a crazy person when you email it to someone – “here’s my manifesto”, so to speak.

Therefore, I’m presenting a mildly rewritten version here, where ranty manifestos belong, and sending a short version to the original intended recipient.


As a creator of copyright material, I fundamentally disagree with one of the positions for which Copyright Australia / Viscopy has been an advocate – territorial licensing.

From the outset, lest I appear some sort of Pirate Party sympathiser, I like copyright. I actually think, like shares or land, it should never expire. I think it is a fundamental problem that an artist can’t pass on to their descendants in perpetuity, the sole economic rights to their life’s work, whereas a slumlord with a portfolio of apartments, or a farmer with acres of fields, or a daytrader with a share portfolio, can. All of these require a person to invest their time, and their finances to build up to a point where they’re revenue-positive, but only one gets repossessed by the state 70 years after its creator’s death. Counter-intuitively, it’s the one which doesn’t detract from a finite pool that gets nationalised, whereas land owners can keep benefitting from their exclusive economic rights in perpetuity.

However, I think the protections of copyright carry a social contract that the copyright industry is failing to uphold, and that this failure is at the root of the problem of piracy, and the world-wide movement against copyright.

As members of various copyright organisations, we’re asked for opinions via surveys, which are used by the organisations to lobby government and direct public policy.

The only questions addressing regional licensing in recent surveys, have bundled it with other issues, so that it was impossible for members to express an opinion against regional licensing, without also coming out against something else, which I recall as not being against.

I find this troubling, as it suggests those creating the surveys are either so out of touch / embedded in an echo chamber, that they can’t see the sentiment outside their windows, or that it reflects a, frankly disingenuous, attempt to direct the “results” towards a predetermined outcome.

I suspect that if CA were to survey creators, rather than middlemen or publishers, on this issue in isolation (obviously, with a case that was fairly stated, for both perspectives), it would find most in favour of protecting consumer’s rights to participate in the global economy, and against geographical licensing.

I also suspect it would be hard to find anyone who wasn’t a current, or former, employee of Foxtel, who thinks it’s reasonable for them to have to subscribe to that service, for one tv show which can be bought on its own outside Australia. Or indeed, to watch the full Formula 1 racing season, which anti-siphoning rules have failed to keep on free-to-air TV. Ask Netflix’s Australian customers how they feel about not having access to the same library, at the same price, that American consumers have. Ask yourself why Choice magazine is recommending everyone use VPNs to get around geoblocking.

The Australian people understand, that if their jobs are now subject to global competition, able to be shifted to places where labour is cheaper, then it is only reasonable that they have the same ability to offshore their consumption to markets where products are cheaper.

I would put it to the reader, that the disrespect for this basic right, and the willingness to take advantage of Globalisation (eg to manufacture DVDs cheaply overseas) when it suits, while working to deny those rights to our customers, robs us of the moral high ground to present the case that actually matters – if you access content that its creator put a price on, you must pay that price to access that content.

Arguments about how many jobs are created as a result of regional licensing lose their moral weight when those jobs depend on market manipulation, interfering with free global trade, and rent-seeking behaviour, none of which, consumers should, or indeed do, feel any obligation to protect, especially when it’s not their choice to do so.

By illustration, here’s the archetypical example – I want to buy Dan Koeppel’s book, “Banana” – a geopolitical history of banana cultivation world wide. I want to read it on my iPad, since I don’t have space to keep any more paper books. It’s available for sale on the American iBooks store, It’s available for sale on the American Kindle store, I even follow, and am followed by Dan on Twitter, and have had conversations with him about problems getting Banana.

Penguin (Australia) hold the territorial rights to both print and eBook versions. They have not bothered to make an eBook version available to Australian consumers, and territorial licensing means I can’t buy it from the American stores. They won’t spend the money and time to make it available, but they won’t let us get it anywhere else, either.

Why should the law, copyright advocates, or the Australian people, support this behaviour?


Expectation that the copyright lobby will change their behaviour? Zero.

Apple Keynote Frustrations

Apple’s Keynote is an app that I’ve enjoyed using for years. It brings a lot of power and polish for a low effort, and reminds me of the thrill I  had when first using Macromedia’s Director 8, upon discovering how much of the app’s abilities were available without using any form of scripting language.

Yesterday, however I discovered a coupe of really serious gotchas that reveal some major limitations with the current software.

Presenter View

Presenter view is an option, which on a multiple display system, allows one screen to show the current slide, and the other screen to show the speaker’s notes, a timer, and the current slide.

A problem surfaces when you want to use your iPad to show your presenter notes, while the presentation itself is being run off a different device. For example, consider a Pecha-Kucha presentation, where you have 20 seconds per slide, 20 slides, auto advancing, and the slides are being run off a central slidedeck on a laptop.

Keynote for iPad won’t show presenter view unless an external display is connected.

Even if you bring along an AppleTV, and set up screen mirroring to it, unless that AppleTV is plugged into a display or projector, you’re out of luck. I’ve heard tell that you can set up Keynote on the iPad to be a remote for keynote on an iPhone, running the presentation on your phone, but that’s still a workaround.

Keynote for iPad needs an update to allow Presenter View to run, without an external display connected – if for no other reason than to allow you to practice your talk.

Mac and iPad

With the launch of iCloud-ified versions of Keynote for Mac and iPad, a lot of features were shed, towards the goal of creating documents that are equally at home in either Mac or iPad. Great, I can get on board with this. The only problem is that it isn’t a complete process, and yesterday, while doing the techtest for a presentation I was going to give, I was bitten HARD by this.

slideshow_4So here is the workspace UI for Keynote for Mac. What’s important to note is that palette on the right, with 3 tabs:

  • Build In
  • Action
  • Build Out

The way it works is that when a slide loads, the Build In settings are run to create the slide, then the Action settings, then Build Out, and finally the Transition effect when leaving the slide itself.

In order to get around the problem above of not having Presenter View available, I created a new slideshow, with a goal of it running in time to the Pecha-Kucha slidedeck, that was essentially what you see in Presenter View.

slideshow_1Since you only have 20 seconds per slide, I wanted a countdown timer for each slide, but rather than using numbers, which are visually distracting, I decided a simple graphical solution would be better. Thus, a blue bar across the top of the slide, and next to the bullet points, which disappears off screen to the right in the former, and downwards past the various bullet points in the latter. This was done with an Action, known as Move, which allows you to set the endpoint and duration of the movement.

Then, with the slide set to auto transition after zero delay, you have a 20 second presenter slide, with time remaining indicator, that then goes immediately to the next slide. Fantastic! Or, so I thought.

When I arrived at the event and did the tech rehearsal, what I discovered is that Powerpoint running on a Mac has a different idea about what 20 seconds is, to Keynote on an iPad, and I had tested my stack against my iPhone’s stopwatch. With Powerpoint set to 20 seconds and no transition time, the iPad about 5 seconds behind by the end of my last slide.

So, no problems, I’ll just edit each of my slides to remove 0.25 seconds from the Move action, that’ll compensate and I’ll be up to speed.

slideshow_3

Nope!

While Keynote for iPad knows that the Action stage of the build process exists, and will play the Action stage, it offers no way to create or edit an Action.

As you can see from the video linked on the left here, when you go to add a Build In or Out, you can see that there are actions on the object when you go to look at the Build Order, but there’s no option to adjust it.

A final gripe about the Mac version of Keynote, selecting an image, right clicking and choosing “Replace Image” brings up an iOS style image picker that only shows you the contents of your system’s photo library – in my case, Aperture. It locks you out of accessing your actual filesystem, where for example, you might have kept all the images you’re planning to use within a main project folder in ~/Documents.

This is a symptom of the overall problem I’ve found trying to use the iPad to get actual work done. If everything you do is in a single app, like say, drawing in Procreate, it’s fantastic. But, if your task is assembly, bringing together media from multiple sources, tweaking and adjusting etc, the fundamental nature of iOS – its inability to be file-centric, the way Finder makes a Mac, causes tasks that are mundane and easy, to be like trying to run, while up to your waist in water.

iCould Drive is not a solution – anyone who thinks that the way to move files between devices, is to send them through a server on the other side of the world needs to be sentenced to a year on dialup. iOS needs full peer networking with Macs. It needs the ability to access, and be accessed by filesharing with the same capabilities as the Mac. Finally, it needs to ditch this ridiculous notion that data and documents are contained within apps themselves. I should be able to delete an app, without losing anything I’ve done using that app.

When your Mac Refuses to Sleep.

The Symptoms:

You put your mac to seep, the screen(s) go black, but the machine doesn’t power down its drive(s) and sleep. Pressing a mouse button or keyboard key brings the screen(s) straight back up.

The problem persists through reboots, logouts, changing user accounts, deleting com.apple.PowerManagement.plist, and even doing a full SMC reset.

The Solution:

Go to the Printers & Scanners preference pane, and make sure you haven’t got a printer with a paused print queue, or a printer which isn’t actually connected any more, which you may have accidentally sent a job to, which the system is trying to find.

Another Thing Done.

So, Surfing The Deathline part 4 is now live and on sale, which ticks off one of the things I was going to do once I had relocated.

16018 Lamkin Lane fileOther exciting things happening at the moment – this Friday I’m exhibiting a few small sculptures in an event happening down the coast a bit “Lamkin Lane Live”. So, there’s been a bit of work digging out a few old works, and getting them back into fresh and new condition.

After that’s done, I’m taking part in a talk on the theme of “animate”, talking about re-animating my artistic practice to lead to The Metaning.

It’s a really interesting dynamic about being out of the city – the people who are in arts-supporting positions really want to make things grow.