Ubuntu Linux: "Wi-Fi is disabled by hardware switch" #

A weedy wireless on/off switch on an ancient Sony VAIO laptop suddenly started acting up:
Wi-Fi Network (Intel Vaio VGN-SZ795N C)
Wi-Fi is disabled by hardware switch
No problem - let's plug in a USB wifi adapter:
Wi-Fi Network (Intel Vaio VGN-SZ795N C)
Wi-Fi is disabled by hardware switch

Wi-Fi Network (Realtek 802.11n WLAN Adapter)
Wi-Fi is disabled by hardware switch
That's strange:
$ rfkill list
0: phy0: Wireless LAN
	Soft blocked: no
	Hard blocked: yes
1: phy1: Wireless LAN
	Soft blocked: no
	Hard blocked: no
$ sudo rfkill unblock all
$ rfkill list
0: phy0: Wireless LAN
	Soft blocked: no
	Hard blocked: yes
1: phy1: Wireless LAN
	Soft blocked: no
	Hard blocked: no
Won't bore you with all of the dead ends I explored (booting from a live CD, resetting the BIOS, removing the battery and draining the capacitors, performing all manner of mudras with the wifi switch, running a slew of esoteric commands I don't remember, etc); happily, I finally stumbled, exhausted, on Pfistodactyl's concise answer for disabling the built-in wifi adapter:
  1. $ lspci -v
  2. Note the value of "Kernel driver in use:" for the onboard wireless LAN controller (e.g., "iwl4965")
  3. Add the following line to /etc/modprobe.d/blacklist.conf: "blacklist iwl4965" (without quotes)
  4. Reboot
Happiness restored!

/nix | Dec 24, 2015

Windows Migration Assistant stuck looking for source #

The Windows Migration Assistant sounds swell:
Move your data from a Windows PC to a Mac: Use Windows Migration Assistant to transfer your music, pictures, documents, and other data from a Windows PC to your Mac. Windows Migration Assistant transfers your contacts, calendars, email accounts, and more from a PC and puts these files in the appropriate places on your Mac.
Though in practice, it doesn't seem to work so well: I tried using it to import from Windows 7 64-bit into a new iMac running OS X 10.11.2 via a gigabit Ethernet connection running through a router. On the Mac side, it was stuck at "Looking for source..." while the Windows side was stuck at "Waiting for your Mac to connect..." No antivirus or firewall was running on the Windows machine.

I found that the Bonjour Service was not running and started it. It stopped running a few seconds later. Tried several times, same result.

Reinstalling Bonjour for Windows seemed like the next logical step. Finding it as an independent download on the Apple site proved much harder than it should. Here it is: That did the trick. The import continued normally, but concluded with:
An error occurred while transferring your information.
Some documents for user could not be transferred.
No further information on what failed to transfer was available, so after the iMac setup was complete, I fired up the FTP server (sudo launchctl load /System/Library/LaunchDaemons/ftp.plist) on the Mac and DeltaWalker on the PC to compare the key user directories (Pictures, Music, Desktop, Documents, Downloads, etc). There were only a handful of missing files in those directories (which were easily copied over via DeltaWalker), but the Outlook import had failed spectacularly; none of the email had imported into Mail.app, and the email settings were incomplete.

Used PST Converter Pro to convert email, contacts, and calendar items from two PST files totaling over 20GBs - worked perfectly (Mail.app 9.2 is a disaster though - avoid if at all possible).

In future, I won't waste time with Windows Migration Assistant; connecting the old drive via USB 3.0, copying files, and performing any necessary conversions with third-party tools is much faster.

/mac | Dec 20, 2015

Batch convert TXT to PalmDOC (PDB) and back #

txt2pdbdoc "is a Unix-based Text-to-Doc file conversion program". I have compiled it for Windows using Cygwin: txt2pdbdoc.7z.*


C:\>txt2pdbdoc.exe [options] document_name file.txt file.pdb

Batch conversion:

C:\>for %f in (*.txt) do (txt2pdbdoc.exe %~nf %f %~nf.pdb)

* If you prefer compiling your own binary from source under Windows:

  1. Download and unzip txt2pdbdoc
  2. Install Cygwin with dev tools
  3. Run Cygwin and cd to txt2pdbdoc-master directory extracted in step 0
  4. $ autoreconf -fiv
  5. $ ./configure
  6. $ make
  7. txt2pdbdoc.exe will be created in the txt2pdbdoc-master\src directory

/palm | Nov 05, 2015

El Capitan: "PowerPC applications are no longer supported" error message #

Some third-party apps may appear in the Applications folder with a prohibitory sign on top of their icons. Attempting to open such an app results in the following error message:
You can't open the application "foobar" because PowerPC applications are no longer supported.
despite it not being a PowerPC-based app.

The solution (for now) is to simply move or copy the app to the Desktop (or anywhere else in the user's home directory, presumably).

/mac | Oct 23, 2015

Windows won't boot (or boots only once) after SSD upgrade #

TL;DR: BIOS update solved Windows 7 boot problems following SSD installation.

2018 update: Samsung's 850 EVO and 860 EVO SSDs appear less compatible with older systems. On a Dell Studio XPS 7100, Windows 7 refused to boot from an 860 EVO, but had no trouble with a Crucial BX100 SSD; on a Dell Inspiron 3847, Windows 7 would not boot from an 850 EVO, but worked just fine on a WD Blue 3D NAND SSD.

Installed a 960GB SanDisk SSD into a Dell Latitude E5510 and tried cloning the previous hard drive to it:

  1. Acronis True Image 2014 would not even begin cloning: "Clone Disk Operation Failed".
  2. AOMEI Backupper Standard 3.2 created an unbootable copy.
  3. MiniTool Partition Wizard Free 9.0 made a copy that booted once, and then would only boot to Startup Repair or, after enough meddling, to the Windows Boot Manager: "Windows failed to start ... File: \Windows\system32\winload.exe ... the application is missing or corrupt" (reproduced below in full monochrome CSS for your viewing pleasure). Replacing winload.exe with a new copy did not help. Attempts to repair, including with Easy Recovery Essentials, were futile. Tried cloning again, same result.
  4. EaseUS Todo Backup Free 8.8 was taking way too long; estimated time remaining kept increasing - cancelled.
  5. Paragon Drive Copy 15 Professional - same result as #3
  6. HDClone 6 - same result as #3

The SATA mode was never changed from its original setting (AHCI). At this point, RAID and ATA/IDE modes were attempted to no avail.

Next, a clean install of Windows 7 was made to the SSD. It booted once, but after some Windows updates were installed and the machine rebooted, would not start again (back to the same issues in #3 above.)

Contacted SanDisk on the off-chance that it was the drive or the firmware; they kindly sent a brand new (not refurbished) replacement in an unopened retail box. Tried a clean install to the new SSD; same result as before.

Finally it dawned on me ("One more coruscation, my dear Watson -- yet another brain-wave!") to try updating the BIOS. Sure enough, after updating from A05 to A10 and then A16, Windows booted up just fine. Cloned the old HDD with Paragon Drive Copy and that too worked perfectly.

In hundreds, if not thousands, of drive cloning operations over the years, it was the first time I had encountered a situation in which Windows would boot once and then fail on subsequent attempts. It was also one of the few times I had seen a BIOS update solve anything (UPDATE: Claus and Matt kindly inform me that they've found BIOS updates to be especially effective at resolving knotty problems, even those not typically associated with the BIOS). Lesson learned! May this pitiful account save some other soul time and toil.


Windows Boot Manager

Windows failed to start. A recent hardware or software change might be the cause. To fix the problem:

1. Insert your Windows installation disc and restart your computer.
2. Choose your language settings, and then click "Next."
3. Click "Repair your computer."

If you do not have this disc, contact your system administrator or computer manufacturer for assistance.

File: \Windows\system32\winload.exe

Status: OxcOOOOOO1

Info: The selected entry could not be loaded because the application is missing or corrupt.

ENTER=Continue ESC=Exit


CSS props:

/windows | Oct 18, 2015

Enable Maildir storage in Thunderbird #

UPDATE: See Convert mbox-based Local Folders to Maildir in Thunderbird 102.

Maildir offers a number of advantages over mbox. Thunderbird 38 offers experimental support for Maildir; read the warnings and caveats before enabling.


  1. Thunderbird > Preferences > Advanced > Config Editor...
  2. Search for mail.serverDefaultStoreContractID
  3. Change the default @mozilla.org/msgstore/berkeleystore;1 value to @mozilla.org/msgstore/maildirstore;1
  4. Restart Thunderbird



A few notes on the "death" of Thunderbird:

/misc | Oct 15, 2015

El Capitan installer error: OS X could not be installed on your computer #

Among the least helpful error messages I've come across:
OS X could not be installed on your computer

No packages were eligible for install. Contact the software manufacturer for assistance.

Quit the installer to restart your computer and try again.

It should read "Fix the time and date before installing" or something like that. Here's how to resolve while booted from the install disk:
  1. Utilities > Terminal
  2. Fix the date and time, e.g., date 101407002015 (i.e., Oct 14, 07:00 2015)
  3. Click Restart (UPDATE: Newer macOS installers like 10.15 Catalina do not require rebooting to continue.)

/mac | Oct 14, 2015

Robocopy replacement #

strarc.exe (Stream Archive) is
"a console backup/archive tool for Windows NT/2000/XP/2003/Vista/2008/7. It uses the same backup methods as the ntbackup or robocopy programs and thus backs up all information and meta data on an NTFS volume. The main difference is that strarc is free and open source and produces stream archives you can store on tapes, disks or anywhere else or it can create the archive stream to stdout so that it can be compressed easily using stream compression tools like gzip or bzip2. The command line switches and parameters are quite similar to the *nix tar utility and it can easily be used to clone an entire NTFS volume including everything, files, directories, their time stamps, attributes and security information, compression attribute, alternate data streams, junctions, hard links etc. It is now even possible to backup the registry database files of a running Windows system."

Here's a simple usage example from the documentation:

strarc.exe -cjd:C:\dir | strarc -xd:D:\dirbk

"This will clone the C:\dir directory tree to D:\dirbk but will not follow junctions in the C:\dir directory tree but instead clone the junction itself to the D:\dirbk location."
A few initial observations:
  1. Source code available separately here
  2. Attempting to clone a live system (even with the -r switch to "backup loaded registry database of the running system") to another drive failed to produce a bootable copy (after Startup Repair ran, Windows 8 booted to the login screen but stayed stuck on "Preparing Windows"), despite the promise of "How to backup a complete running Windows system" in the documentation (which does not cover shadow copies - see #3).
  3. However, using one of the command line shadow copy tools in conjunction with strarc reportedly works.
  4. While copying C: to E:, received a number of "Short names are not enabled on this volume" errors. Ran fsutil 8dot3name set e: 0 to resolve, though strarc also offers a "-w:8" switch which hides warnings when short 8.3 names cannot be restored.
  5. Need to update emcopy.exe post and Xcopy Windows to a new hard drive

More info:

/windows | Oct 12, 2015

Disable "The disk you inserted was not readable..." message for internal SATA drives #

As Apple continues to make its products harder and harder to repair, internal drive replacement is becoming a major hassle. You might find yourself with a bad SATA cable (e.g., "Unable to write to the last block of the device.") or dead hard drive, but not the will to spend hours dismantling and reassembling your Mac. You might decide to boot from a Thunderbolt, USB, or FireWire drive instead. However, you will be greeted by this cheery message on every boot:

The disk you inserted was not readable by this computer.
The disk you inserted was not readable by this computer. Initialize... | Ignore | Eject

Happily, James Newell has crafted and shared a modified DiskArbitrationAgent to ignore unreadable SATA drives. It also works great for ignoring volumes or file systems that OS X doesn't understand (TrueCrypt, ext4, ZFS, etc). Despite originally being Yosemite-only, he has kindly added builds for Mavericks and El Capitan today.

/mac | Oct 12, 2015

Free and easy email migration from Thunderbird to Outlook #

Aid4Mail has long offered a fast and easy path from Thunderbird to Outlook (as illustrated in our 2005 review). However, there were few free and easy options until MailStore Home; it seamlessly handles importing from Thunderbird and exporting directly into Outlook. In fact, once your email is archived in MailStore Home, you may not need or want to export into Outlook at all, as the full-text search feature (including attachments) is very fast and PST files are a nightmare anyway.

/windows | Oct 09, 2015

That's a lot of gigabytes... #

Seen on a Windows 10 desktop today:

CCleaner Alert - Cleaning can save 13,808,924,507 GB of disk space

13,808,924,507 gigabytes is equal to 13.808924507 exabytes. Considering that "by the end of 1999, the sum of human-produced information (including all audio, video recordings, and text/books) was about 12 exabytes of data", this might take a little while.

/windows | Oct 01, 2015

Asciidoc(tor)! Where have you been all my life?! #

I love documenting, but loathe the tedious process of trying to manually markup the logical structure in HTML, as evidenced by these inconsistent pages:

I began a futile search for a Markdown editor that could automatically generate section numbers and a table of contents. Next I tried "software for technical writing" which turned up some promising tools. But it wasn’t until I tried searching for

text editor "table of contents" "section numbering"

that I finally hit the jackpot on page 2 of the search results:

Asciidoctor is a fast text processor and publishing toolchain for converting AsciiDoc content to HTML5, DocBook 5 (or 4.5) and other formats.

It turns this:

= Learn 2 Languages in 2 Seconds

== Hello, world!

=== Python

print "Hello World"

=== Ruby

puts "Hello, World!"

into this (CSS has been removed and a light grey background applied; by default, output is much prettier):

Learn 2 Languages in 2 Seconds

Table of Contents

1. Hello, world!

1.1. Python

print "Hello World"

1.2. Ruby

puts "Hello, World!"

Last updated 2015-09-25 20:50:26 HST

Where has this been all my life?!

Exactly what I was after - crazy-simple syntax with automatic section numbering and TOC generation (bonus: it also inserts "Last updated date time" at the bottom).

Quotes & Articles

Editing & Preview

Manuals & Reference

Notes & More

/misc | Sep 26, 2015

BitLocker device encryption _requires_ giving Microsoft your recovery key (unless you're in a domain) #

While setting up a new Surface Pro 3 with a local user account under Windows 10 Pro, I noticed an unfamiliar icon on the C: drive - a yellow yield sign with an exclamation mark on top of an open padlock:

yellow yield sign with exclamation mark icon on C: drive

Thinking it might have something to do with encryption, I searched Settings for "BitLocker" and was directed to System > About where I found this:

You need a microsoft account to finish encrypting this device
You need a Microsoft account to finish encrypting this device

Hardly believing such a thing was possible, I turned to the Internet for answers; sadly, Microsoft confirmed the ugly truth (highlighting and missing comma added):

Unlike a standard BitLocker implementation, device encryption is enabled automatically so that the device is always protected ... If the device is not domain-joined, a Microsoft Account that has been granted administrative privileges on the device is required. When the administrator uses a Microsoft account to sign in, the clear key is removed, a recovery key is uploaded to online Microsoft account and TPM protector is created. Should a device require the recovery key, the user will be guided to use an alternate device and navigate to a recovery key access URL to retrieve the recovery key using their Microsoft Account credentials.

Cem Paya clarifies it rather succinctly:

Remembering that "not domain-joined" will apply to most consumer PCs for use at home, this translates to: for any Windows 8.1 machine that happens to have requisite TPM hardware, BitLocker disk encryption will be enabled with recovery keys escrowed to MSFT automatically.

At least Apple still has the decency to ask (for now?) if you want to give them your recovery key:


More information and updates:

/windows | Sep 21, 2015

Find out what process changed a registry key or value #

Process Monitor (and the deprecated RegMon) is swell for live monitoring of registry activity, but, if run for long periods, it will saturate the page file and stop capturing data.

In order to track down which process kept (vexingly) changing a registry value once or twice a day, Windows' built-in registry auditing was used:

  1. C:\>auditpol /set /subcategory:"Registry" /success:enable
  2. In regedit, right click key to monitor then click "Permissions..."
  3. "Advanced" > "Auditing" > "Add..."
  4. Everyone > OK > check both boxes to right of "Set Value" > OK x3
  5. Any value changes will be recorded to Windows Logs\Security in the Event Viewer, including the guilty process name

/windows | Sep 17, 2015

Outlook Today page is blank: FIXED! #

The Outlook Today page has been a trouble-spot for years. One of the most oft-reported problems is it appearing blank:


Not a single working solution could be found (short of creating a new Windows user account), nor was a tier 2 Microsoft support rep able to help resolve the issue.

Google and Microsoft having failed me, I was finally forced to stir my stumps.

(Very) long story short, deleting "HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer" restored Outlook Today to its former glory.

Posted to the Microsoft Community for good measure. May the suffering cease!


With a bit more experimenting, I found that simply deleting the OUTLOOK.EXE name value (or changing its value data as explained below) in HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION restored Outlook Today.

FEATURE_BROWSER_EMULATION "defines the default emulation mode for Internet Explorer". The value data of OUTLOOK.EXE was 2af8, which corresponds to IE 11. Changing it to 22b8 (which corresponds to IE 8) resolved the empty Outlook Today page as well. Here is the list of values from Microsoft for posterity:

UPDATE 2: Microsoft has posted this solution as a KB article: Outlook Today displays no information under section headings

/windows | Sep 11, 2015

OS X: Imaging and repairing a volume that won't mount #

The HFS+ volume on the following USB hard drive would not mount in Finder:

   $ diskutil list
   #:                    TYPE NAME       SIZE       IDENTIFIER
   0:  FDisk_partition_scheme           *1.0 TB     disk3
   1:              DOS_FAT_32 scratch    500.1 GB   disk3s1
   2:               Apple_HFS foobar     500.1 GB   disk3s2

so mounting in Terminal was attempted:

   $ sudo mount -t hfs /dev/disk3s2 ~/temp/
   mount_hfs: Permission denied


   $ sudo /System/Library/Filesystems/hfs.fs/hfs.util -MU disk3s2 ~/temp/ fixed readonly nosuid nodev
   mount_hfs: Invalid argument

and again:

   $ sudo diskutil mount readOnly /dev/disk3s2
   Volume on disk3s2 failed to mount
   If the volume is damaged, try the "readOnly" option

to no avail.

Next, the HFS+ volume was imaged with ddrescue:

   $ sudo ddrescue -v /dev/disk3s2 ~/temp/foobar.dmg ~/temp/logfile.log

Attempting to mount the image failed as well:

   $ hdiutil attach -nomount ~/temp/foobar.dmg

   $ diskutil list
   0:        foobar   *500.1 GB   disk5

   $ mount -t hfs -r /dev/disk5 ~/temp/
   mount_hfs: Invalid argument

   $ mount -t hfs -r /dev/disk5s0 ~/temp/
   GetMasterBlock: Error 2 opening /dev/rdisk5s0
   mount_hfs: No such file or directory

   $ mount /dev/disk5 ~/temp/
   mount: You must specify a filesystem type with -t.

   $ diskutil mount readOnly /dev/disk5
   Volume on disk5 failed to mount; if it has a partitioning scheme, use "diskutil mountDisk"
   If the volume is damaged, try the "readOnly" option

   $ diskutil mountDisk readOnly /dev/disk5
   Volume(s) mounted successfully

(Despite the promising "Volume(s) mounted successfully" message, nothing was mounted.)

   $ mount -t hfs -r /dev/disk5s0 ~/temp/
   GetMasterBlock: Error 2 opening /dev/rdisk5s0
   mount_hfs: No such file or directory

   $ mount -t hfs -r /dev/disk5 ~/temp/
   GetMasterBlock: Error 16 opening /dev/rdisk5
   mount_hfs: Resource busy

Happily, a blog post by bbum entitled Recovering Disk Images with DiskWarrior held the answer:

  1. sudo hdiutil mount -nomount -readwrite ~/temp/foobar.dmg
  2. The image should now be attached and appear in DiskWarrior / Disk Utility for repair.

Indeed, DiskWarrior repaired the image successfully:

DiskWarrior has successfully built a new optimized directory for the disk named "foobar." The new directory is ready to replace the original directory.
The original directory is damaged and it was necessary to scavenge the directory to find file and folder data.
Comparison of the original and replacement directories could not be performed because the original directory was too severely damaged. It is recommended that you preview the replacement directory.

which was then mountable in Finder with just a double click.

UPDATE: On a related note, Recovering a non-readable disk on Mac OS X describes resolving a "The disk you inserted you inserted was not readable by this computer" error caused by a corrupt partition map via sudo gpt recover /dev/diskx or diskutil repairDisk /dev/diskx


In another recent instance, an 8GB USB flash drive would not mount or even be recognized by the OS. After a dozen or so attempts, Disk Utility finally registered its presence, but reported that it was unformatted. diskutil list revealed it had been assigned to /dev/disk2, so imaging was begun:

sudo ddrescue -v /dev/disk2 ~/temp/flashdrive.dmg ~/temp/logfile.log

Over 12 hours later, imaging was complete.

As the image would not mount, testdisk was used to repair the partition table:

sudo testdisk ~/temp/flashdrive.dmg

(The testdisk steps are very simple, but here's a text-based screen recording of the process made with the awesome TermRecord, a "Terminal session recorder that outputs self-contained HTML".)

When testdisk completed, double clicking flashdrive.dmg mounted it easily in Finder.

/mac | Sep 10, 2015

Change the Windows 7 interface language #

Vistalizator is a portable app that helps you change the display language in any version of Windows Vista or 7 (inexplicably, Microsoft normally restricts this ability to Ultimate or Enterprise editions). Links to necessary MUI (Multilingual User Interface) files hosted at Microsoft and steps for creating a multi-language Windows DVD are also provided.

/windows | Aug 25, 2015

Sniffing encrypted traffic #

Fiddler 📺 ("The free web debugging proxy for any browser, system or platform") has long been used for sniffing encrypted web traffic, but it requires full administrator access to install an untrusted root certificate for decryption to work (Tools > Fiddler Options... > HTTPS > etc) and the .NET Framework to run.

NetRipper ("Smart traffic sniffing for penetration testers") requires neither. It is "a post exploitation tool targeting Windows systems which uses API hooking in order to intercept network traffic and encryption related functions from a low privileged user, being able to capture both plain-text traffic and encrypted traffic before encryption/after decryption." Further, "NetRipper should be able to capture network traffic from: Putty, WinSCP, SQL Server Management Studio, Lync (Skype for Business), Microsoft Outlook, Google Chrome, Mozilla Firefox. The list is not limited to these applications but other tools may require special support."

Here's a simple example of it in action:
  1. Launch Google Chrome
  2. Open cmd.exe (no need for elevated command prompt), cd to the NetRipper directory and run:
    C:\Release>NetRipper.exe DLL.dll chrome.exe
    Trying to inject DLL.dll in chrome.exe
    Reflective injected in: 2880
    Reflective injected in: 2992
    Reflective injected in: 3096
  3. Login to GMail account in Chrome
  4. NetRipper saves data to %temp%\NetRipper by default (on most systems, this will be C:\Users\username\AppData\Local\Temp\NetRipper):
    C:\Release>dir %temp%\NetRipper /B
  5. Search for the string "Passwd":
    C:\Release>findstr Passwd %temp%\NetRipper\2880_chrome.exe_SSL_Write.txt
Fiddler: NetRipper:

/windows | Aug 15, 2015

Migrating email from Windows Live Mail (eml) to Apple Mail (mbox) #

  1. Install Thunderbird
  2. Open Thunderbird and cancel the automatic setup
  3. Install ImportExportTools
  4. File > Offline > Work Offline
  5. Tools > Account Settings > Account Actions > Add Mail Account... > enter any name, address, and password > Continue > Advanced config > OK
  6. Select the Inbox folder in the left-hand pane
  7. Tools > ImportExportTools > Import all messages from a directory > also from its subdirectories > browse to Windows Live Mail top folder (e.g., C:\Users\user\AppData\Local\Microsoft\Windows Live Mail) > Select Folder
  8. The import process will begin and progress will be displayed in the status bar at bottom
  9. Tools > ImportExportTools > Options > Export directories > check "Export folders as MBOX file" and select a destination directory > OK
  10. Select the desired top mail folder in Thunderbird
  11. Tools > ImportExportTools > Export folder with subfolders (with structure)
  12. The export process will begin. Unlike the import process, progress is not displayed.
  13. When the export is complete, copy the exported data to the Mac and import into Mail (File > Import Mailboxes... > Thunderbird > etc.)

Windows Live Mail contacts can be exported from contacts.edb (generally found within a hidden subdirectory below %LOCALAPPDATA%\Microsoft\Windows Live\Contacts\) via Nir Sofer's LiveContactsView. Detailed walkthrough.


/windows | Aug 12, 2015

"Desire, at the end, was a malady" #

Desire, at the end, was a malady, or a madness, or both. I grew careless of the lives of others. I took pleasure where it pleased me, and passed on. I forgot that every little action of the common day makes or unmakes character, and that therefore what one has done in the secret chamber one has some day to cry aloud on the housetop. I ceased to be lord over myself. I was no longer the captain of my soul, and did not know it. I allowed pleasure to dominate me. I ended in horrible disgrace. There is only one thing for me now, absolute humility.

. . .

I said . . . that there was enough suffering in one narrow London lane to show that God did not love man, and that wherever there was any sorrow, though but that of a child, in some little garden weeping over a fault that it had or had not committed, the whole face of creation was completely marred. I was entirely wrong. . . . Now it seems to me that love of some kind is the only possible explanation of the extraordinary amount of suffering that there is in the world. I cannot conceive of any other explanation. I am convinced that there is no other, and that if the world has indeed, as I have said, been built of sorrow, it has been built by the hands of love, because in no other way could the soul of man, for whom the world was made, reach the full stature of its perfection.
From De Profundis by Oscar Wilde

/misc | Aug 07, 2015

"Pleasure passes, but dishonor remains." #

When I was still a boy at school, I heard that this Greek saying, which I here set down, was uttered by Musonius the philosopher, and because the sentiment is true and striking as well as neatly and concisely rounded out, I was very happy to commit it to memory. "If one accomplishes some good though with toil, the toil passes, but the good remains; if one does something dishonorable with pleasure, the pleasure passes, but the dishonor remains."

Afterwards I read that same sentiment in a speech of Cato's which was delivered at Numantia to the knights. Although it is expressed a little less compactly and concisely as compared with the Greek which I have quoted, yet because it is earlier and more ancient, it may well seem more impressive. The words from his speech are the following: "Consider this in your hearts: if you accomplish some good attended with toil, the toil will quickly leave you; but if you do some evil attended with pleasure, the pleasure will quickly pass away, but the bad deed will remain with you always."
From Musonius Rufus: The Roman Socrates by Cora E. Lutz. Printed in Yale Classical Studies, Volume X (1947). Electronic text can be found here and here.

/misc | Aug 03, 2015

Windows 10: Privacy nightmare #

July 29 - the big Windows 10 release day. Rather than trying an unreliable workaround that was making the rounds, I followed RiotShielder's advice and downloaded an ISO from Microsoft, installing over a Windows 8.1 virtual machine (because you must upgrade your existing Windows OS to get a valid Windows 10 key before doing a clean install* (recover the key with Nir's ProduKey (actually, it looks like you needn't bother))).

When installation completes, be sure to click the tiny "Customize" link on the "Get going fast" screen; you may (not) be surprised at how invasive Microsoft has become. Here's a taste (these are all enabled by default):

  1. "Personalize your speech, typing, and inking input by sending contacts and calendar details, along with other associated input data to Microsoft."
  2. "Send typing and inking data to Microsoft to improve the recognition and suggestion platform."
  3. "Use page prediction to improve reading, speed up browsing, and make your overall experience better in Windows browsers. Your browsing data will be sent to Microsoft."
  4. "Automatically connect to suggested open hotspots. Not all networks are secure."
  5. "Automatically connect to networks shared by your contacts."
  6. "Send error and diagnostic information to Microsoft." (The toggle switch to enable or disable was hidden below the screen; a near-invisible scroll bar was required to view it.)

Number five apparently refers to Wi-Fi (Non)Sense, which Claus covered in some detail.

Much more about the mounting privacy problems in Windows 10 from Heini Järvinen:

By default, when signing into Windows with a Microsoft account, Windows syncs some of your settings and data with Microsoft servers, for example "web browser history, favorites, and websites you have open" as well as "saved app, website, mobile hotspot, and Wi-Fi network names and passwords". Users can however deactivate this transfer to the Microsoft servers by changing their settings.

More problematic from a data protection perspective is however the fact that Windows generates a unique advertising ID for each user on a device. This advertising ID can be used by third parties, such as app developers and advertising networks for profiling purposes.

Also, when device encryption is on, Windows automatically encrypts the drive Windows is installed on and generates a recovery key. The BitLocker recovery key for the user’s device is automatically backed up online in the Microsoft OneDrive account.

Microsoft’s updated terms also state that they collect basic information "from you and your devices, including for example "app use data for apps that run on Windows" and "data about the networks you connect to."

Users who chose to enable Microsoft’s personal assistant software "Cortana" have to live with the following invasion to their privacy: "To enable Cortana to provide personalized experiences and relevant suggestions, Microsoft collects and uses various types of data, such as your device location, data from your calendar, the apps you use, data from your emails and text messages, who you call, your contacts and how often you interact with them on your device. Cortana also learns about you by collecting data about how you use your device and other Microsoft services, such as your music, alarm settings, whether the lock screen is on, what you view and purchase, your browse and Bing search history, and more." But this is not all, as this piece of software also analyses undefined "speech data": "we collect your voice input, as well your name and nickname, your recent calendar events and the names of the people in your appointments, and information about your contacts including names and nicknames."

But Microsoft’s updated privacy policy is not only bad news for privacy. Your free speech rights can also be violated on an ad hoc basis as the company warns:

"We will access, disclose and preserve personal data, including your content (such as the content of your emails, other private communications or files in private folders), when we have a good faith belief that doing so is necessary to", for example, "protect their customers" or "enforce the terms governing the use of the services".

At the very least, be sure to create a local account and customize the privacy settings after installation. Better yet, migrate to a truly free operating system; Richard Stallman was right all along. UPDATE: Microsoft Admits Windows 10 Automatic Spying Cannot Be Stopped

UPDATE: Not content to spy on just Windows 10 users, Microsoft is retrofitting Windows 7, 8, and 8.1 with Telemetry and more. In response, /u/spexdi has assembled a script which roots out and blocks this newfound spyware: MTRT - Microsoft Telemetry Removal Tool (download).

* /u/justmoa kindly shared an alternative approach:

  1. Copy \source\gatherosstate.exe from the Windows 10 ISO image to the Desktop (or any writable directory) of an activated Windows 7, 8, or 8.1 system
  2. Run gatherosstate.exe; it will create GenuineTicket.xml in the same directory
  3. Copy GenuineTicket.xml to some external storage device
  4. You can now perform a clean install of Windows 10 (click "Do this later" when prompted to enter a product key)
  5. When the install is complete, copy GenuineTicket.xml to C:\ProgramData\Microsoft\Windows\ClipSVC\GenuineTicket\ and reboot

As usual, Microsoft's licensing policies are as clear as mud:

/windows | Jul 29, 2015

"What else do _you_ do?" #

ZAPHOD BEEBLEBROX: . . . [W]hat's your name?
MAN: I don't know. Why, do you think I ought to have one? It seems odd to give a bundle of vague sensory perceptions a name.
ZARNIWOOP: Listen. We must ask you some questions.
. . .
ZARNIWOOP: How long have you been ruling the Universe?
MAN: Ah, this is a question about the past is it?
MAN: How can I tell that the past isn't a fiction designed to account for the discrepancy between my immediate physical sensations and my state of mind?
ZARNIWOOP: Do you answer all questions like this?
MAN: I say what it occurs to me to say when I think I hear people say things. More I cannot say.
. . .
ZARNIWOOP: People come to you, yes?
MAN: I think so.
ZARNIWOOP: And they ask you to take decisions—about wars, about economies, about people, about everything going on out there in the Universe?
MAN: I only decide about my Universe. My Universe is what happens to my eyes and ears. Anything else is surmise and hearsay. For all I know, these people may not exist. You may not exist. I say what it occurs to me to say.
ZARNIWOOP: But don't you see? What you decide affects the fate of millions of people.
MAN: I don't know them, I've never met them. They only exist in words I think I hear.
. . .
MAN: But it's folly to say you know what is happening to other people. Only they know. If they exist.
ZARNIWOOP: Do you think they do?
MAN: I have no opinion. How can I have?
. . .
ZARNIWOOP: But don't you see that people live or die on your word?
MAN: It's nothing to do with me, I am not involved with people. The Lord knows I am not a cruel man.
ZARNIWOOP: Ah! You say... the Lord! So, you believe in...
MAN: My cat. I call him the Lord. I am kind to him.
ZARNIWOOP: All right. How do you know he exists? How do you know he knows you to be kind, or enjoys what you think of as your kindness?
MAN: I don't. I have no idea. It merely pleases me to behave in a certain way to what appears to be a cat. What else do you do? . . .


From Douglas Adams' The Hitchhiker's Guide to the Galaxy: Secondary Phase (Original BBC Radio Series). See also The Original Hitchhiker Radio Scripts: 10th Anniversary Edition and The Hitchhiker's Guide To The Galaxy: The Complete Radio Series.

/misc | Jul 19, 2015

Download Flash videos #

(including those embedded in JW Player) with the Grab Any Media extension for Google Chrome. Installation and usage instructions. Piracy PSA.

UPDATE 1: Grab Any Media is now available for Firefox directly from Mozilla's Firefox Add-ons page.

Among other things, it can be used to grab an m3u8 link (GAM icon > Scanner > Scan > application/x-mpegURL) that can be fed to ffmpeg to download the video in mp4 format:
ffmpeg -protocol_whitelist file,http,https,tcp,tls,crypto -i "http://example.com/video.m3u8" -c copy video.mp4

Those who prefer a GUI can use VLC: File > Open Network... > paste m3u8 link into URL field > Stream output > Settings... > File > select destination filename > change "Encapsulation Method" from "MPEG TS" to "MPEG 4" > OK > Open.

ts files can be losslessly converted (i.e., re-muxed without transcoding) via ffmpeg:
ffmpeg -i vlc-output.ts -acodec copy -vcodec copy out.mp4

UPDATE 2: Video DownloadHelper and JDownloader2 are another powerful pair; use the former to retrieve video URLs and paste them into the latter to download (attempting to download in Video DownloadHelper returns "Companion application required").

/misc | Jul 17, 2015

Air travel essentials for long flights #

Bose QuietComfort 20i Acoustic Noise Cancelling HeadphonesAvoid noise fatigue+++++Next to water, the single most important in-flight item in my opinion.
Flight SprayAvoid dry nose++++Much more effective than the damp washcloth I used formerly.
No-Jet-Lag"For the relief of tiredness and jet lag associated with flying"?Despite taking as directed, not really sure if this had any effect, though there are plenty of positive reviews on Amazon.
Source Naturals NADH 20mg"Helps relieve drowsiness and restores alertness and energy"++++Definitely seemed to help keep me awake when needed.
Herbatonin 3mg Plant Melatonin"Helps support normal sleep patterns when disrupted by travel and changing time zones"++++Definitely seemed to help get me to sleep when needed.
Vitalsox Graduated Compression SocksPossibly help prevent Deep Vein Thrombosis and Pulmonary Embolism?Did not really feel any difference, but also did not develop DVT (not that I ever have).
Memory Foam Neck PillowDoze in relative comfort-Despite hours of research (and a slew of positive reviews on Amazon), this did not work for me at all - gave away after landing. The vast majority of reviews are overwhelmingly positive, however.
WaterAvoid dehydration (and in-flight meals)+++++A must.

/misc | Jun 26, 2015

Time to replace traditional password managers like KeePass, 1Password, LastPass, et al.? #

"Master Password is a stateless password generator. It doesn't store, collect or transmit any secrets. It makes them ubiquitously available, on-demand, depends on nothing but your private master password, and is fully open source.

How Does It Work?

The user is expected to remember the following information:

In practice, the secret master password is the only extra thing users will actually need to remember. Their full name, they'll hopefully remember regardless. If the site is always named after the bare domain name, it needn't explicitly be remembered but can be found in the browser's address bar. The counter and type need only be remembered if they are changed from their default values."

/misc | Jun 26, 2015

Cross-platform, ad hoc, recursive file transfer via HTTP #

Recursively copy desired_dir located on server to current directory on client without having to fool around with usernames, passwords, config files, FTP, NetBIOS, Bonjour, etc:

On server: cd desired_dir && python -m SimpleHTTPServer

On client: wget -r -np http://server_ip_address:8000/

/nix | Jun 21, 2015

Ramana Maharshi on thought #

/misc | May 10, 2015

The Oracle of God #

Yet still there whispers the small voice within,
Heard through Gain's silence, and o'er Glory's din:
Whatever creed be taught, or land be trod,
Man's conscience is the Oracle of God.

—George Gordon Byron in The Island

(via Gentle World)

/misc | Apr 08, 2015

iPhone: Resize photos before texting via Messages #

While the Mail app in iOS offers to resize photos before sending (Small, Medium, Large, Actual Size), the Messages app does not; in fact, there is no built-in method for resizing photos before texting them, resulting in unnecessarily large files being sent. Even the popular photo editor Snapseed does not offer a resize option. Searching the App Store was (as usual) an exercise in futility, but a too-lengthy (i.e., over 30 second) Google search turned up the aptly-named Resize Image, which makes resizing photos and then texting them (or posting to Twitter, Facebook, Instagram) a breeze.

/mac | Apr 01, 2015

"Restore Failure #

Could not validate source - Operation not supported" kept appearing in Disk Utility as I tried unsuccessfully to restore a bootable USB flash drive image to a new USB flash drive. The asr workaround did not work either, returning Source volume format on device "/dev/disk3" is not valid for restoring. Could not validate source - error 254.

By happy chance, I stumbled onto Max's answer which credited drgeoff's reply, which linked to PureDarwin's Disk images page. The secret was to convert the image format to raw before writing with dd (attempting to restore even the converted image via Disk Utility returned the same "Restore Failure" error above).

Here is the process I used to backup my DiskWarrior bootable USB flash drive and restore it to a new flash drive:


  1. Insert USB flash drive to be imaged
  2. Open Disk Utility
  3. Click root of USB flash drive
  4. Click "New Image"
  5. Select desired Image Format (tested restore of "read-only" and "compressed (bzip2)" images successfully)
  6. Save image to desired location


  1. $ hdiutil convert /path/to/image_created_above.dmg -format UDTO -o new_image.img
  2. Remove the .cdr extension that hdiutil automatically appended to new_image.img
  3. Run Disk Arbitrator and set to "Block Mounts"
  4. Plug in new USB flash drive (WARNING: all contents will be erased) and note the assigned device name in Disk Arbitrator's Disks Window (e.g., diskx)
  5. $ sudo dd if=/path/to/new_image.img of=/dev/rdiskx bs=8192
    (Pipe through pv or use a dd alternative like dcfldd to easily track progress.)

In retrospect, it might've been better to avoid Disk Utility altogether and simply use dd to create the image:

$ sudo dd if=/dev/rdiskx | bzip2 -9f > usb_image.bz2

obviating the need to convert with hdiutil before restoring:

$ bzip2 -dc usb_image.bz2 | sudo dd of=/dev/rdiskx

UPDATE: It appears that dd/bzip2 creates a more faithful image than Disk Utility's compressed (bzip2) format does:

For Disk Utility to achieve similar results as dd/bzip2, one would need to select "entire device" as the Image Format and then compress the image afterwards in Terminal: $ bzip2 -9f usb_image.dmg > compressed_usb_image.bz2. And, before restoring the image, it would need to first be converted with hdiutil as shown above. Back to dd for imaging disks!

/mac | Mar 19, 2015

Monodraw makes me smile :-) #

Monodraw brings ASCII diagramming into the 21st century, eclipsing even vector diagram tools like Visio and OmniGraffle in ease of use and speed:


Those who have struggled with the exisitng ASCII diagram options for decades will appreciate what a radical leap forward Monodraw represents; it's like going from black and white to color TV.

Free during beta and currently available at a 40% discount. Refreshing licensing policy for a Mac shareware app: "Each license is assigned to a single person and it can be used on multiple Macs owned by the licensee. Monodraw does not use activation or any other form of DRM. We have complete trust in our customers."

(Full disclosure: I've been alpha testing Monodraw the last few months; bought the software today at the same beta discount available to everyone. Sadly, I have no stake in Monodraw, financial or otherwise - just an ecstastic and grateful customer. I must also admit to being a fan of their whimsical illustrations.)

/mac | Mar 04, 2015

Concatenate multiple HTML files into a single EPUB file #

via Sigil:
  1. "File" > "Add" > "Existing Files..."
  2. select desired HTML files
  3. "File" > "Save As..." > set filename and destination for EPUB.
Since Kindle e-Readers inexplicably do not support EPUB, users can convert the generated EPUB file to MOBI with calibre:
  1. "Add books" > select desired EPUB file
  2. "Convert books" > Output format: "MOBI" > "OK"
  3. After conversion, right click title > "Open containing folder" > copy MOBI file to Kindle

UDPATE 1: Combine multiple HTML files into a single PRC ebook

UDPATE 2: Ken Turner's open source htmlcat Perl script (crafted back in 1998) still works great for combining any number of HTML files into a single one, which can be easily converted to other formats (e.g., MOBI via Amazon's KindleGen, etc).

/eink | Feb 26, 2015

Mount USB drives as read-only in Windows #

via a quick registry edit (no reboot required - tested in XP SP2, 7 SP1, and 8.1). Simply save the following text as an .reg file and double click to merge:
Windows Registry Editor Version 5.00

To restore mounting removable disks as read-write, just change "00000001" to "00000000", resave the file, and double click to merge. Not as sound as a hardware write blocker like the Forensic UltraDock, but might come in handy for less sensitive work.



/windows | Feb 17, 2015

Find out what software and services a website uses at #

BuiltWith.com. Testing this domain took less than a second, and the results were detailed and accurate.

/misc | Jan 14, 2015

Subscribe or visit the archives.