tinyapps.org / blog

All empty boats #

If a man is crossing a river
and an empty boat
collides with his own boat,
he won’t get offended or angry,
however hot-tempered he may be.
But if the boat is manned,
he may flare up, shouting and cursing,
just because there’s a rower.

Realize that all boats are empty
as you cross the river of the world,
and nothing can possibly offend you.

From chapter 43 of Stephen Mitchell's The Second Book of the Tao

/misc | Jul 19, 2016

Missing photos after upgrading iPhoto 6 to iPhoto 9.6.1 or Photos 1.5 #


  1. Old Mac running OS X 10.6.8 with iPhoto 6 library containing 5,238 items
  2. Imported data, including iPhoto Library, to new Mac running OS X 10.11.5 and Photos 1.5. via Migration Assistant.
  3. Photos Library displayed only 1,794 photos (through September 2010), even though all photos were found in ~/Pictures/Photos Library.photoslibrary/Masters and ~/Pictures/Photos Library.photoslibrary/Previews.
  4. Deleted Photo Library and iPhoto Library, manually copied iPhoto Library from old Mac again, relaunched both iPhoto and Photos - same result.
  5. Attempting to run iPhoto Library Upgrader 1.1 (which "prepares libraries from iPhoto 7 or earlier so they can be upgraded with the current version of iPhoto") on yet another copy of the original iPhoto Library returned "Your library can open with the current version of iPhoto and does not need to be prepared with this tool."
  6. Rebuilding the iPhoto library on both the old and new Mac (by holding down Command and Option while starting iPhoto, etc) did not help.
  7. Opening yet another copy of the original iPhoto Library in iPhoto Library Manager showed only the same 1,794 photos and misidentified the library as an iPhoto 8 library.


  1. Copied original iPhoto Library to a third Mac running OS X 10.6.8 and iPhoto 6 (all 5,238 items appeared in iPhoto).
  2. Installed iPhoto Library Manager 3.8.6 (for Mac OS X 10.5.8 and iPhoto 7.1.5 and earlier).
  3. iPhoto Library Manager.app > File > Rebuild Library. As Christoph Bartneck explains, "The software has a tool to recover corrupted libraries. But it works differently from Apple’s approach. It starts with a fresh clean library and imports all the photos, including their meta data, such as location, faces, date. It also manages to rebuild albums and folders."
  4. Copied rebuilt iPhoto Library to new Mac running OS X 10.11.5.
  5. Ran iPhoto Library Upgrader 1.1 (which now ran normally intead of returning "Your library can open with the current version of iPhoto and does not need to be prepared with this tool" as above).
  6. Opened the upgraded iPhoto Library in iPhoto 9.6.1, which reported "This photo library needs to be upgraded to work with this version of iPhoto." After the upgrade process, all 5,238 items (including albums, metadata, etc) appeared intact!
  7. Opened Photos.app which imported the entire iPhoto Library successfully.

/mac | Jul 18, 2016

Copy actual URLs from Google search results, not nested nonsense #

Redirects in Google search results are not only a privacy concern, but also a major pain when trying to simply copy and paste links: These two extensions/add-ons (via HackerNews) help reduce needless suffering:

/misc | Jul 10, 2016

Stop ransomware process and dump memory to extract key #

Anti Ransom v3 "creates a random decoy folder with many useless random documents (Excel, PDF) and then it monitors the folder waiting for changes. When a change is detected, AntiRansom tries to identify which process is the responsible of such change and then stops it and dump the memory process (hopefully the key or password that is being used by the ransomware is inside)".

/windows | Jul 09, 2016

Music of the gears #

Paweł Zadrożniak makes beautiful music with an orchestra of hard disks, floppy drives, and scanners:

/misc | Jul 08, 2016

Extract passwords and more from memory #

mimikittenz "is a post-exploitation powershell tool that utilizes the Windows function ReadProcessMemory() in order to extract plain-text passwords from various target processes".

Basic usage:

  1. Run Windows PowerShell as administrator
  2. cd to directory containing Invoke-mimikittenz.ps1 (e.g., Downloads)
  3. PS C:\Users\user\Downloads> Set-ExecutionPolicy RemoteSigned
  4. PS C:\Users\user\Downloads> Import-Module $pwd\Invoke-mimikittenz.ps1
  5. PS C:\Users\user\Downloads> Invoke-mimikittenz

Sample result:

PatternName       PatternMatch
-----------       ------------
Gmail             &Email=tinyapps@gmail.com&Passwd=PASSWORD_IN_PLAINTEXT&Persiste...

See also:

/windows | Jul 08, 2016

Installing grepmail in OS X 10.11 #

grepmail is a search tool for mbox files, including those compressed with gzip, bzip2, lzip, or xz.
  1. If you do not have the Command Line Developer Tools installed, run $ xcode-select --install to install them.
  2. Install lzip and xz from source (1, 2), your favorite package manager (Homebrew, MacPorts, etc), or Rudix
  3. $ sudo perl -MCPAN -e shell
  4. cpan[1]> install grepmail
  5. cpan[2]> exit
  6. If, like me, you receive a "command not found" error when attempting to run grepmail, repeat steps 2-4 to resolve.

/mac | Jul 06, 2016

Find the product version and build information of an OS X installer #

The hard way:

The easy way (thanks to Johann N. Löfflmann):

# Find the OS X version and build information of an OS X installer

# see Johann N. Löfflmann's blog post for more information:
# http://loefflmann.blogspot.com/2015/03/finding-os-x-version-and-build-in-install-os-x-app.html

# Assumes installer is in default location (/Applications);
# change path in first hdiutil command if it is located elsewhere.

# Tested on OS X 10.7 - 10.11 installers

APPNAME="Install OS X Yosemite.app" # Change to desired version

hdiutil attach "/Applications/$APPNAME/Contents/SharedSupport/InstallESD.dmg" -noverify -nobrowse -mountpoint /Volumes/InstallESD.$$ > $DEBUG

hdiutil attach "/Volumes/InstallESD.$$/BaseSystem.dmg" -noverify -nobrowse -mountpoint /Volumes/BaseSystem.$$ > $DEBUG

if [[ "$XMLCONTENT" =~ \<key\>ProductVersion\</key\>[[:space:]]*\<string\>([0-9\.]+)\</string\> ]]; then
    printf "ProductVersion: %s\n" ${BASH_REMATCH[1]}

if [[ "$XMLCONTENT" =~ \<key\>ProductBuildVersion\</key\>[[:space:]]*\<string\>([0-9A-Z]+)\</string\> ]]; then
    printf "BuildVersion:   %s\n" ${BASH_REMATCH[1]}

hdiutil detach "/Volumes/BaseSystem.$$" > $DEBUG

hdiutil detach "/Volumes/InstallESD.$$" > $DEBUG

UPDATE: Johann has an updated version of his script on GitHub: osxapp_vers.

/mac | Jul 01, 2016

Cloning a failing hard drive to a smaller drive #

Faced with a rapidly-worsening hard drive (and after backing up critical data), I hoped to clone the Windows install to a smaller drive (the only one on hand). Kanguru's Mobile Clone HD One-To-One Duplicator (KCLONE-1HD-MBC) has gotten me out of similar binds before, but cloning to smaller drives is not currently supported.

Here are the boot discs I tried in order and their results (for a similar list, see Windows won't boot (or boots only once) after SSD upgrade):
  1. Paragon Drive Copy 15 Professional - crashed
  2. Acronis True Image 2016 - crashed
  3. HDClone 6.1.5 Advanced Edition - produced a non-working clone with missing partitions
  4. Image for Windows 2.99-00 - produced a working clone!
I was happily surprised astounded that my version 2 license from 2008 was still valid for the current version (2.99-00), which was released as recently as February 25, 2016. Many thanks to TeraByte for a great product and the super-long term support!

/windows | Jun 16, 2016

Rockstar Dell sales rep #

For Windows-based servers and workstations, I have recommended Dell for ages, mainly due to their Next Business Day Service ("After telephone-based troubleshooting, replacement parts and a ProSupport technician arrive on-site, the next business day").

Once every kalpa or so, I run across an extraordinary Dell salesperson and feel compelled to share their contact info here, for the sake of others struggling with custom orders and the loathsome robot phone maze.

Eli Garcia, Business Sales Consultant, is one such rare gem. He went above and beyond the call of duty today for us in scoring just the right hardware at a great price (which wasn't available online). In this age of disconnection and depersonalization, Eli stands out as a shining example of how old-fashioned sales and service are done. His number is (512) 513-1774, his email address is eli_garcia at dell dot com, and his hours are 8:00 AM – 5:00 PM CST, Monday through Friday.

/misc | Jun 16, 2016

Subscribe or visit the archives