Compressing PNG images with pngout, optipng, and advpng

Screenshot tools for Linux and macOS generally produce image files in the .png file format. PNG is a lossless compression format, meaning that it can be compressed without losing quality, which is unlike another commonly used image format, JPG. There are 3 command-line tools which can be used to compress PNG files, pngout, optipng, and advpng.

➜  pngout terminator-terminal-window.png 
 In:   11405 bytes               terminator-terminal-window.png /c6 /f5
Out:    8790 bytes               terminator-terminal-window.png /c2 /f5
Chg:   -2615 bytes ( 77% of original)
➜  optipng -o7 terminator-terminal-window.png 
** Processing: terminator-terminal-window.png
800x266 pixels, 3x8 bits/pixel, RGB+transparency
Input IDAT size = 8715 bytes
Input file size = 8790 bytes

Trying:
  zc = 9  zm = 9  zs = 0  f = 0		IDAT size = 8140
  zc = 9  zm = 8  zs = 0  f = 0		IDAT size = 8140
                               
Selecting parameters:
  zc = 9  zm = 8  zs = 0  f = 0		IDAT size = 8140

Output IDAT size = 8140 bytes (575 bytes decrease)
Output file size = 8215 bytes (575 bytes = 6.54% decrease)

➜  advpng -z4 terminator-terminal-window.png 
        8215        7232  88% terminator-terminal-window.png
        8215        7232  88%

TeamViewer: Remote Desktop to Android Tablet

In the past, I’ve written about different remote desktop products/solutions, including NoMachine for remoting into traditional desktop machines, but also a few alternatives for accessing and controlling Android devices from a computer. Today I’d like to mention TeamViewer, a product free for non-commercial use that supports computer to computer, Android to computer, and computer to Android connections.

The following screenshots were taken on a macOS Sierra machine remotely logged onto a rooted Samsung Galaxy S4 Android tablet.

Firefox ‘Task Manager’ similar to Chrome’s

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

NoMachine – Improving Video Quality By Using the H264 Display Encoding

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

All-in-One Messenger: WhatsApp, Telegram, Facebook Messenger, Skype, and more

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

Marble: A cross-platform, multi-purpose Virtual Globe

Marble is a Virtual Globe app that started as part of the KDE desktop environment that is now currently available for Linux (all flavors), Mac OS X, Windows, and Android. It has tons of features and definitely worth checking out for map and geography lovers out there!

Below we view the globe using a historical map from 1689 centered around North America. Interestly, California is depicted as an island, and the Pacific Northwest region of the United States and Canada, as well as Alaska and eastern Russia, is a big void in the map (not depicted).
Marble Virtual Globe Screenshot - Historical North America Map 1689