VirusTotal

VirusTotalUploaderAs you can see from my posts about password managers, I’m a bit paranoid with the internet.

One virus checker is not enough for me. Indeed, I let VirusTotal check every executable I download from the internet. VirusTotal uses 50 or so virus scanners and scans your file with all of them. You can upload files with a size of up to 64 MB.
It should be safer to let VirusTotal check your downloads than to trust your single anti virus software.

If we can trust VirusTotal, that is.

What is even better than using VirusTotal by uploading files to their web page is to install the VirusTotal Uploader on your PC.

The uploader has these advantages:

  • You get a popup menu entry Send to > VirusTotal.
  • Often, the uploader is much faster.
    Because before uploading the file, the uploader calculates a hash from the file and asks at home if this file has already been analyzed. If yes, your file needs not to be uploaded and not to be analyzed. The uploader then just shows the result. This is very often the case and saves you a lot of time when you don’t have a fast uplink.

The only disadvantage of the uploader: It can upload only files up to 32 MB.

The picture below shows a VirusTotal result page.

VirusTotal Results

Personal Backup Scripting Example

I’m using Personal Backup by Dr. Rathlev as my backup tool. It’s name is a bit misleading, because you could think that it is only allowed to use it as a private person. But no – its current license says it may be used also by any club, organization or even private companys for free.

It is easy to create backup tasks with Personal Backup. But a backup task does not run automatically. And I have to say, it is not easy to create backups that run automatically with this program. The UI of the part of the program which deals with creating automatically running backup tasks is near incomprehensible – even when you read the docs.

What compensates this deficit is that Personal Backup has a perfect command line interface with a good docmentation. So it is very well suited for being scripted.

I control my backups with some tclkit scripts. As you might know, I do use tclkit for many tasks.

The script below creates a full backup in every uneven month (Jan, Mar, May, …) and in between it creates an incremental backup daily. It needs a fitting Personal Backup task file Backup-Task-All.buj.

To trigger the script daily, I use the Windows Task Planner.

The directory structure of the created backups looks like this:

G:/Backup/2014/BD01F   # A full backup created on March 1st in 2014
G:/Backup/2014/BD22I   # An incremental backup created on March 22nd
.....
G:/Backup/2014/BD21I   # An incremental backup from September 21st 
#
#  This script steers the backups that I do with Pesonal Backup.
#
# To adapt the script, just set the following variables taskName,
# rootdir and personalBackupExe to your liking. 

# The name of the backup task in PB
set taskName Backup-Task-All

# The name of the target root directory.  This must be the same as 
# in the Backup-Task mentioned above.
set rootdir G:/Backup

# Full path to the Personal Backup executable
set personalBackupExe "C:/Program Files/Personal Backup 5/Persbackup.exe"

#console show

puts "BackupSteer.tcl  (c) A.J.W 2014"

set rootdrive [string tolower [string range $rootdir 0 0]]
set seconds [clock seconds]
set yearMonth [clock format $seconds -format {%Y/%m}]
# the name of the basedir of the backup of today. E.g  G:/Backup/2014/09
set basedir [file join $rootdir $yearMonth]

puts "    basedir=$basedir"
puts "    taskName=$taskName"

# Return 1 if it's an even month, 0 if not.  
proc isEvenMonth { seconds } {
    set month [clock format $seconds -format {%m}]
    if { [string range $month 0 0] == 0 } {
        set month [string range $month 1 1]
    }
    set even [expr $month % 2 == 0] 
    return $even 
}

# Return a list of all connected drives. 
proc drives {} {
    foreach drive [list a b c d e f g h i j k l m n o p q r s t u v x y z] {
        if {[catch {file stat ${drive}: dummy}] == 0} {
            lappend drives $drive
        }
    }
    return $drives
}

proc doBackup {} {
    global  taskName  seconds yearMonth basedir  personalBackupExe 

    set relativeDirForFullBackup BD01F
    set pathForFullBackup [file join $basedir $relativeDirForFullBackup]
    puts "    pathForFullBackup=$pathForFullBackup"

    # if full backup for this month already exists or we have an even month
    if { [file isdirectory $pathForFullBackup] || [isEvenMonth $seconds] } {
        # only do an incremental backup
        set mode incr
        set day [clock format $seconds -format {%d}]
        set relDir BD$day
        append relDir I
        set pathForIncrBackup [file join $basedir $relDir]
        puts "    pathForIncrBackup=$pathForIncrBackup"

        if [file isdirectory $pathForIncrBackup] {
            set mode none
        }

    } else {
        # do a full  backup
        set mode full
        set relDir $relativeDirForFullBackup
    }

    puts "    mode=$mode"
    puts "    relDir=$relDir"

    if { $mode != "none" } {
        puts "    Running backup like this:"
        puts "    $personalBackupExe $taskName /force /hide /mode:$mode /prompt:delay  /backupdir:$relDir & "
        # If I do not add the & at the end, Persbackup hangs. 
        exec $personalBackupExe $taskName /force /hide /mode:$mode /prompt:delay  /backupdir:$relDir &
        puts "     Backup running." 
    } else {
        puts "    Nothing to do."
    }
}

if { [lsearch [drives] $rootdrive] == -1 } {
    bell; bell; bell
    set a "The daily backup is about to be done. "
    append a "Please connect the backup drive, make it "
    append a  "available as network drive $rootdrive: and click Ok."

    message .m  -textvariable a -width 250
    # strange, the width of the button is in another dimension than that of the message. 
    button .hello  -text "Ok" -command { 
            if { [lsearch [drives] $rootdrive] != -1 } { doBackup; exit } else { bell }
        } -default active -width 15

    bind .  {.hello invoke}

    pack  .m .hello -padx 5 -pady 5

    wm deiconify .
} else {
    doBackup
    exit
}

Tclkit: A Tiny Full Featured Scripting Language

Tcl/Tk

Tcl is a full featured script programming language with a small footprint. It is available on many platforms. Tcl’s syntax looks a bit odd if you are coming from a C-like language. But in reality, it is pretty simple … Tcl is a small language and you’ll learn it fast.

Tk is a cross-platform GUI system that has been built for Tcl. Together, they form Tcl/Tk. Tk is used with many other languages (Perl, Python, Ruby, …) too.

Tclkit and Tclkitsh

Tclkit is Tcl and Tk and several libraries altogether put into one single executable. No installation is needed.

For Windows, there is also available tclkitsh.exe which contains only the command line version of Tcl and libraries as one single executable. It is among the first ten things I put onto a new computer.

Why I Use Tclkit

  • Deployment nearly can’t be easier. You just have to copy the single tclkit or tclkitsh executable and your script file. I’ve used this method with my zip speed test program. You can download tclkitsh.exe from there.
  • It is tiny. Tclkitsh.exe 8.5.9 is only 740 kB. Tclkit.exe,
    which contains the full Tk GUI is only 1.3 MB

  • Development with tclkit is fast. No compile-run cycles.
  • The GUI system is easy to handle. You don’t even need any visual
    tool to create your GUI.
  • The windows cmd shell language is just terrible. That beast
    cannot even be called a language. If you don’t want to dive
    into Pwershell, Tclkit is a simple and perfect
    replacement for the windows cmd shell.
  • Compared to Perl and Python, it is easier to learn,
    read and understand.
  • It is perfect for doing file operations in your build process.
  • It is perfect for controlling other executables,
    e.g. in your build process. In fact, Tcl has been built
    with the main target to be a language to control other executables.

Example 1: Check If Drive Is Available

I do my backups onto an external USB drive. The backup program is controlled via the Windows Task Scheduler. For security reasons, this drive is usually not connected. This means, before the backup program can do its work, I have to manually connect the drive.

I’ve written a small Tcl/Tk program to check if the drive is available and to inform me that I should connect it if it’s not.

This is the Tcl/Tk Script. With graphical interface and bells.

Problem Steps Reporter

Surprisingly few software developers know psr.exe, the Windows built-in Problem Steps Reporter. It is a tool well suited to record some steps which lead to a problem in a software and share them with a developer.

  • It is so much easier to use the psr.exe than to write down step by step and make screenshots on the way.
  • Psr is so easy to use, everybody can use it and report problems with it. Even your uncle Sam, 87 years of age.
  • No installation needed. Psr is already there since Windows 7 at least.
  1. Click onto the start button Start button.
  2. Type in psr.
  3. In the upcoming window, click psr at the top. Start menu
  4. The problem steps reporter starts.
    Psr.exe
  5. Click Start Record in the psr.
  6. Do the steps you want to report.
  7. Click Stop Record in the psr.
  8. A Save As window comes up. Save the recording somewhere where you will find it later.
  9. Send the zipped report to the developer by email.
  10. The developer will run the .mht file contained in the zip file by doubleclicking it.
  11. The MS Internet Explorer opens and shows the problem report, with every mouseclick, every dialog box and so on. Very very helpful for the developer.

Advanced

Spy Tool !?

Psr has got a lot of command line options. You could start it automatically and without GUI. The user wouldn’t even notice that it was running. Which makes it sort of a spy tool, says annoyedadmin.
But IMO, psr would make a quite bad spy tool. Because

  • The keys pressed by the user are not visible.
  • Psr can maximally record 100 screen shots.

How to Convert Mht to Html

Mht is a Microsoft proprietary format which normally can only be opened by IE. But Goran Atanasijevic has written and GPLed the converter mht2htm.exe which can convert a mht to several htm-files. You can get it from sourceforge or from me. It works well.

Also, a Total Commander plugin for mht-files called MhtUnPack exists. I have not tested this one yet.

Four Most Essential Firefox Add-Ons And Settings. Plus Eight Extras.

My dear friend Sabrina called and complained about a lot of popup windows and stuff when surfing the web. These are my recommendations for some essential plugins and settings in Firefox. Especially for you, Sabrina.

April 16th 2018, Update: I can no longer recommend using Firefox as they have kicked millions of users and thousands of add-on developers in the a** by disabling many important APIs in FF, which makes it impossible for the add-on developers to adapt. Many of the add-ons recommended below do not work anymore with FF Quantum. I am using Waterfox now. It is a FF fork which wants to keep the old APIs – and all my recommended add-ons work.

Two Most Essential Firefox Add-Ons

An Adblocker

An adblocker the essential add-on. I couldn’t use the web without one. It stops most of all those annoying blinking ads which try to distract you from your work in intrusive and flashy ways.
May 5th 2017, Update: I can no longer recommend Adblock Plus, as it lately often lead to complete hangs of Firefox. I do use now uBlock Origin.
To install, select the given link and there click Add to Firefox. Follow further instructions there.

Flashblock

The second add-on which is a couldn’t live without it is Flashblock. It replaces all the Flash stuff that tries to capture your attention in disturbing ways with a nice and silent f icon flashblock-f. If you really want to see the video or hear the music behind the f, just click the f.
To install it, click here and there Add to Firefox. Follow further instructions there.

Three Most Essential Firefox Settings

Block Popup Windows

  1. Open the Settings dialog in Firefox
  2. Select the Content tab.
  3. At the top, check Block Popup-Windows
  4. Press the Ok button.

Switch Off Gif Animations

First check out this site. Are there a lot of smilies winking, blinking, smiling, jumping around and even vomiting? So that you would get crazy if you looked at it for more than ten seconds? Yes? These are animated gifs. Not that I dislike them. No. I hate them.

Thank god, they’ve built something into Firefox to switch them off. It may seem a bit complicated for everyday users, but it is worth it.

  1. Type about:config into the address bar of firefox. about-cfg-address
  2. Ignore the following warning about The guarantee ends here and press the button I’ll be cautious, really.
  3. A huge list of settings will be shown. Type image.animation_mode into the search bar at the top so that the list will be reduced to one entry. The page then will look like this:
    about_config_image_anim
  4. Double-click the marked normal in the line. In the upcoming dialog, type in none and press ok. Close the about:config tab.
  5. Revisit the animated smilies page. You should look into complete quiescence now. Ah. This calmness. How relieving. Like a cool breath on a hot and humid day.

Turn Off Spell Checking

13 Nov 2017 Update Some time ago, those FF developers thought it would be a good idea to turn on a spell checker by default. It is not. You can turn it off via Preferences/Advanced/Check my spelling as I type.

Some Extra Add-Ons I Like

  1. Leechblock is from heaven for people who tend to surf the web (-hell) too much.
  2. Video DownloadHelper makes it possible to download videos from Youtube.
  3. With Fireshot, you can make screen shots of web pages that are too big to fit on the screen at once.
  4. JS Switch adds a toolbar button to the browser with which you can switch off and on JavaScript with one click.
  5. LEO Search adds a context menu entry to translate selected words.
  6. Vertical Toolbar lets you move your bookmarks and other buttons from a horizontal toolbar into a vertical one. This is very useful with the wide screens in use nowadays.
  7. Morning Coffee This extension lets you organize websites by day and open them up simultaneously as part of your daily routine. This is handy if you read want to read different newssites daily. I like it much.
  8. Firebug is an addon which is essential for all people creating web pages in one or another way. It helps you so much in debugging and creating HTML and CSS.
  9. Web Developer got a lot of five star reviews. I have to check it out.

Did I miss an essential add-on or setting? What are your favourites? I’d love to read about your opinions in the comments.