2016

  1. Download the SDelete program provided by Microsoft onto your Windows Guest machine.
  2. Clean up unnecessary files and programs. One useful utility is WinDirStat.
  3. Run the following command in the terminal to write zeroes over unused disk storage in your Windows guest:
    sdelete64 -z c:
  4. Shut down your VM and run the following command on your Windows Guest VDI:
    VBoxManage modifyhd /misc/virtualbox-vms/Windows10/Windows10LargeDisk.vdi
  5. Create a new VDI with the new desired maximum size:
    VBoxManage createhd --filename /misc/virtualbox-vms/Windows10/Windows10Disk.vdi --size 92160
  6. Clone the existing VDI into the newly allocated one:
    VBoxManage clonehd /misc/virtualbox-vms/Windows10/Windows10LargeDisk.vdi /misc/virtualbox-vms/Windows10/Windows10Disk.vdi --existing

Tree heights can be approximated to a fairly high degree precision using a laser rangefinder, presuming that one obtains accurate measurements, using a method known as the laser sine method .

Nikon Forestry Pro

While some rangefinders made specifically for forestry purposes may have a built in height calculator, I personally own a more inexpensive model that does not have this built in.

I am building a very simple Android app that can perform these calculations for the very few other tree enthusiasts out there who would like to have a way of knowing how tall a tree is at the time of taking measurements. The apk can be downloaded here and the source code for this project is an open source project on GitHub.

Feel free to follow me on monumentaltrees.com. Happy tree hunting!
http://www.monumentaltrees.com/en/users/nickmcummins/

A bit of background for the curious

Redwoods are the world’s current tallest trees, though it is a subject of debate as to whether or not this was historically the case as there are many records from the logging days that claim heights of douglas firs up to 465 feet tall (see also Redwoods: Only The Tallest Because the Rest Have Been Logged.

The current tallest non-redwood tree in North America is a douglas fir located in southwestern Oregon. Nearly 330 feet tall, the Doerner Fir is still over 50 feet shorter than the tallest redwood, though perhaps what is more interesting to note on that matter is that there are at least ~4 known redwoods over 370 ft tall.

. As you go into the 360-370ft range for redwoods, and further down, the number of known redwoods in that height range increases exponentially.

There are likely many “undiscovered” douglas-fir exceeding 300 ft.

The percentage of remaining old growth forests in Oregon and Washington state (and British Columbia, for the matter) is roughly approximate to the percentage of remaining old growth redwood. However, the distribution of old growth over this non-redwood region, in particularly the segments of old growth that might contain exceptionally tall trees, is much more scattered than the areas known to contain the tallest redwoods. Douglas-fir have a gigantic range in comparison. Combined with the fact that relatively little effort has been expended on the discovery of these trees, since they would not be even potential candidates of being “the” world’s tallest, leads me to conclude that the number of undiscovered (i.e. not recognized with an official height measurement) tall trees is probably very high.

I have built this app to aid me as I am going on a trip next weekend to an area known to contain some of the tallest and largest and best preserved groves of trees in the region. I will report back my findings, likely on monumentaltrees.com.

Over the past two years I have searched for tall trees in Mt. Rainier National Park (including the Grove of the Patriarchs) in WA and Cathedral Grove in BC. This led me to the measuring a tree that was slightly over 200 ft. tall, which I named after the creek to which it grew along. While those areas contained some of the greatest old-growth in the region, they did not contain any exceptionally tall trees in relation to the tallest known still standing today. Thus, I search elsewhere.

A useful feature native feature of Chrome is its ‘Task Manager’, which allows one to monitor all Chrome processes and their resource consumption:
Google Chrome Task Manager

Firefox has been slow to adopt parallel functionality, though this is mostly that multi-process mode in Firefox hadn’t become available until recently (at least in non-Nightly releases). One still needs to install this Task Manager Firefox add-on — though I would not be surprised to see if this became built-in to Firefox sometime in the near future.

Firefox Task Manager

  1. Enroll in Apple’s Beta Software Program.
  2. Download a fresh copy of VMware Workstation Player for Windows or Linux from the official VMware site. The free trial of this product has no expiration if used for non-commercial purposes.
  3. You’ll need to unlock your installation of VMware to use Mac operating system as a guest following these instructions (external link).
  4. On a computer running an official/genuine instance of OS X, download macOS Sierra from the App Store:
    App Store - macOS Sierra
  5. Once the download completes, open the Terminal application, and either save a new file with the following contents,
     #!/bin/bash
    # Mount the installer image
    hdiutil attach /Applications/Install\ macOS\ Sierra.app/Contents/SharedSupport/InstallESD.dmg -noverify -nobrowse -mountpoint /Volumes/install_app
    
    # Create the macOS-Sierra Blank ISO Image of 7316mb with a Single Partition - Apple Partition Map
    hdiutil create -o /tmp/macOS-Sierra.cdr -size 7316m -layout SPUD -fs HFS+J
    
    # Mount the macOS-Sierra Blank ISO Image
    hdiutil attach /tmp/macOS-Sierra.cdr.dmg -noverify -nobrowse -mountpoint /Volumes/install_build
    
    # Restore the Base System into the macOS-Sierra Blank ISO Image
    asr restore -source /Volumes/install_app/BaseSystem.dmg -target /Volumes/install_build -noprompt -noverify -erase
    
    # Remove Package link and replace with actual files
    rm /Volumes/OS\ X\ Base\ System/System/Installation/Packages
    cp -rp /Volumes/install_app/Packages /Volumes/OS\ X\ Base\ System/System/Installation/
    
    # Copy macOS Sierra installer dependencies
    cp -rp /Volumes/install_app/BaseSystem.chunklist /Volumes/OS\ X\ Base\ System/BaseSystem.chunklist
    cp -rp /Volumes/install_app/BaseSystem.dmg /Volumes/OS\ X\ Base\ System/BaseSystem.dmg
    
    # Unmount the installer image
    hdiutil detach /Volumes/install_app
    
    # Unmount the macOS-Sierra ISO Image
    hdiutil detach /Volumes/OS\ X\ Base\ System/
    
    # Convert the macOS-Sierra ISO Image to ISO/CD master (Optional)
    hdiutil convert /tmp/macOS-Sierra.cdr.dmg -format UDTO -o /tmp/macOS-Sierra.iso
    
    # Rename the macOS-Sierra ISO Image and move it to the desktop
    mv /tmp/macOS-Sierra.iso.cdr ~/Desktop/macOS-Sierra.iso

    or run

    curl https://www.nickmcummins.com/make-macos-sierra-iso.sh > /tmp/make-macos-sierra-iso.sh

    and then execute it by running sudo chmod +x /tmp/make-macos-sierra-iso.sh && /tmp/make-make-macos-sierra-iso.sh. Once completed, you should see a file named macOS-Sierra.iso on your desktop.

  6. Now boot up VMware Player and create a new virtual machine using the File dialog. Using the iso disk image we just created, and with macOS 10.12 selected as the guest os, finish the setup for your new image.
    Guest Operating System - Select macOS 10 12
  7. You’ll need to erase the virtual hard disk medium as seen in the following screenshots. DiskUtility - VMware Virtual STA hHard Drive
    DiskUtility - Erase Hard Drive confirmation
  8. Now you will be able to proceed with the installation. Once completed, you should be all ready to enjoy your new macOS Sierra vm!
    Installation macOS Sierra
    macOS Sierra Screenshot

This basically involves two steps:

  1. Client-side support, aka adding the required decoding libraries on the local computer. See official documentation: Enabling the H.264 codec on the NoMachine client host. Here is an example of following the steps on my Macbook Air:
    
    brew update
    brew install ffmpeg && brew upgrade ffmpeg
    cd /usr/local/Cellar/ffmpeg/3.0.2/lib
    sudo cp libavcodec.dylib /Applications/NoMachine/Contents/Frameworks/lib
    sudo cp libavutil.dylib /Applications/NoMachine/Contents/Frameworks/lib
    

Setting a custom resolution to that of the guest monitor

Say you have two monitors physically connected to the server, supporting by default maximum resolutions of 1440x900 and 1600x900. If you are logging in to the remote server from a machine that has a larger display, it may be difficult to add the new resolution. I have attempted to follow dozens of similar instructions I found online, with little luck. The only thing that worked for me seems like a hack, but it works.

➜  xrandr  | grep -i primary 
DVI-D-0 connected primary 1440x900+0+0 (normal left inverted right x axis y axis) 410mm x 257mm

We’ll be using the scale option of randr to change our resolution in this case, i.e. (x resolution)(x scale factor) = (desired x resolution); (y resolution)(y scale factor) = (desired y resolution). You’ll want to use at least a few decimal places for non-truncating decimal numbers unless your scaling factor is a rational number:

xrandr --output DVI-D-0 --scale 1.3333333x1.33333333

Afterwards, you should see this represented if you run the initial xrandr command above.

➜ xrandr  | grep -i primary 
DVI-D-0 connected primary 1920x1200+0+0 (normal left inverted right x axis y axis) 410mm x 257mm

Back in July the alpha version of a new Skype Linux app was announced with .deb and .rpm versions available for download. Of course, there are many options for Linux users who want to connect to Skype, most of which wrap around the official web client (https://web.skype.com). Here is a side-by-side screenshot of a Google Chrome app wrapper around Skype Web (left) and the new official Skype app (right):

Side-by-side screenshot of Chrome Skype Web app and new official Skype app

The new official app is built on top of Electron, which is a library that allows for building multi platform apps and runs off Chromium and Node.js.

Out of interest here is a screenshot of the running processes behind the new app:
Skype Linux App Process Monitor

There are a few multi-protocol chat clients — some common ones include Apple’s official Messages app and Adium for OS X, as well as the popular cross-platform Pidgin. I have opted out of using these multi-protocol chat clients for the most part: chat protocols often become outdated and re-implemented, and usually official dedicated clients that are far superior. Furthermore, many chat services have migrated to having a web-based interface, such as Skype (amidst many others). Many users now just open their chat clients as a separate tab in their web browser.

All-in-One Messenger is a Chrome app that essentially does the tabbed browser approach — it a tabbified, multi-protocol chat client, that behind the scenes more or less interfaces with the web clients available for the number chat services. However, it provides an intuitive interface that is streamlined for switching between chat protocol tabs in a way that is not provided by the tabbed browser view nor through having each of the individual apps running separately.

All-in-One Messenger Screenshot

This took me a while to get down — given the complexity introduced here in the number of possible locations for things to be configured at a user and global level — but I have been able to create desktop directory entries and have them appear in whiskermenu properly. I highly recommend not to use a tool sure as alacarte or xame, as they may introduce more complexity and complicate your configuration files to the point that they are impossible to edit and produce any results in your menu.

Whiskermenu with Application Directories Screenshot

➜  ls /home/nick/.local/share/desktop-directories 
alacarte-made-1.directory  chrome-apps.directory       gps-apps.directory
alacarte-made.directory    development-apps.directory  settings-apps.directory
chat-apps.directory        game-apps.directory

Here’s the contents of game-apps.directory as an example to be followed for all the category files you create:

[Desktop Entry]
Comment=
Type=Directory
Name=Games
Icon=/home/nick/Pictures/icons/IconScanner/png/GameCenter.png

My .menu files are stored in a subdirectory called applications-merged because of the fact that I used various GUI tools to create my entries. Placing your .menu files in the parent menus directory should suffice.

➜  ls /home/nick/.config/menus/applications-merged 
chat-apps.menu         game-apps.menu  theplatform-apps.menu  xdg-desktop-menu-dummy.menu
development-apps.menu  gps-apps.menu   user-chrome-apps.menu

The freedesktop .menu file looks as follows, for our games category example:

<!DOCTYPE Menu PUBLIC "-//freedesktop//DTD Menu 1.0//EN"
    "http://www.freedesktop.org/standards/menu-spec/menu-1.0.dtd">
<Menu>
    <Name>Applications</Name>
<Menu>
    <Name>game-apps</Name>
    <Directory>game-apps.directory</Directory>
    <Include>
        <Filename>American Truck Simulator.desktop</Filename>
        <Filename>steam.desktop</Filename>
        <Filename>m64py.desktop</Filename>
        <Filename>desmume.desktop</Filename>
        <Filename>dolphin-emu.desktop</Filename>
        <Filename>PPSSPP.desktop</Filename>
        <Filename>chrome-ikffjkehicicbeijfeneenheeijonfjc-Default.desktop</Filename>
        <Filename>flightgear.desktop</Filename>
    </Include>
</Menu>
</Menu>

These *.desktop files must exist in an applications directory:

➜  ls /usr/share/applications | grep steam 
steam.desktop

and the contents of one should look something like

[Desktop Entry]
Name=Steam
Comment=Application for managing and playing games on Steam
Exec=/usr/bin/steam %U
Icon=steam
Terminal=false
Type=Application
Categories=Network;FileTransfer;Game;
MimeType=x-scheme-handler/steam;
Exec=steam steam://open/friends

Finally, you will need to add an entry to a .menu file similar to the following. My full menu file’s path is /home/nick/.config/menus/xfce-applications.menu since I am using XFCE as my desktop environment:

<Menu>
		<Name>game-apps</Name>
		<Directory>game-apps.directory</Directory>
		<Layout>
			<Merge type="menus"/>
			<Filename>American Truck Simulator.desktop</Filename>
			<Filename>steam.desktop</Filename>
			<Separator/>
			<Filename>dolphin-emu.desktop</Filename>
			<Filename>desmume.desktop</Filename>
			<Filename>m64py.desktop</Filename>
			<Filename>PPSSPP.desktop</Filename>
			<Separator/>
			<Filename>flightgear.desktop</Filename>
			<Separator/>
			<Filename>chrome-ikffjkehicicbeijfeneenheeijonfjc-Default.desktop</Filename>
			<Merge type="files"/>
		</Layout>
	</Menu>
	<Layout>
		<Merge type="menus"/>
		<Menuname>game-apps</Menuname>
	</Layout>
</Menu>