Thursday, August 13, 2015

Open inbound port on Windows 7, howto

Let's say you wish to open up a port (i.e., a local, inbound port) for the use of (i.e., to be served by) some program running on your Windows 7 (Home Premium SP1) computer. If installing the program didn't automatically result in opening up that port, here's how to do so.

For security reasons, you should limit the usage of an inbound local port to just the single receiving program. Plus in many cases you should configure that program not to use its standard port number (if possible). Instead, pick a number between 1024 and 49151 (inclusive and random) to be your inbound local port number.


First identify what Windows 7 calls your router's 'Network Location'. (Later we'll need this.) Here's how to do it:
  1. In Control Panel, click 'Network and Sharing Center'.
  2. Under the words 'View your active networks', identify (of your active routers) which is the appropriate one. (Most people only have one active router.)
  3. Find and click the text you see, immediately under that active router. Then
  4. Observe which Network Location is selected (i.e., surrounded by a dotted box).
  5. You should decide (if you haven't already) whether this router is best considered as providing:
    • A Home Network (a private network);
    • A Work Network (in a corporate domain); or
    • A Public Network.
    As it happens, my wireless router is provided by my landlord, so I categorize it as an unsafe Public Network. And that's its Network Location.

Then set up Windows Firewall to allow your desired inbound connection to the receiving program. (You'll need to be an Administrator for this.) Here's how:
  1. In Control Panel, click 'Windows Firewall'.
  2. Click 'Advanced Settings'—this takes you to 'Windows Firewall with Advanced Security'.
  3. Click 'Inbound Rules'.
  4. Click 'New Rule'.
  5. Select 'Port' and click 'Next'.
  6. Ensure 'TCP' is selected.
  7. Ensure 'Specific local ports' is selected.
  8. Enter your local inbound port number and click 'Next'.
  9. Ensure 'Allow the Connection' is selected, and click 'Next'.
  10. For 'When does this rule apply?', ensure that the box by your router's Network Location (see above) is checked (but no other Network Locations are), and click 'Next'.
  11. Under the word 'Name', enter the name of the receiving program, then a word (or an abbreviation) indicating (to you) the port's purpose (or functionality), the words 'In' and 'Port', and the port number (all five concatenated together). Click 'Finish'. (Later, this naming scheme will ease finding this rule, if necessary.)
  12. Click 'Refresh'.
  13. Right-click your new rule and select 'Properties'.
  14. Click the 'Advanced' tab.
  15. If you need this local inbound port to be accessible merely from other computers within your LAN, then:
    • Under 'Edge traversal', ensure 'Block edge traversal' is selected. This prevents computers outside your LAN from initiating contact with this inbound port on your computer (at least, through this Windows Firewall 'Action: Allow' rule).
    Otherwise, to allow inbound access to this local port from computers outside your LAN:
    • Under 'Edge traversal', unselect 'Block edge traversal'.
  16. Click the 'Programs and Services' tab.
  17. Select 'This program'.
  18. Enter the path to your receiving program and click 'OK'.
Copyright (c) 2015 Mark D. Blackwell.

Wednesday, August 12, 2015

SSH to guest Debian stretch on a VirtualBox Windows 7 host from LAN, howto

Suppose you have a virtual machine (or VM), in which you have installed a guest operating system: e.g., Debian stretch. And, it's running under a (physical) Windows 7 (Home Premium SP1) host operating system (by means of Oracle's VirtualBox software developed by wholly-owned Innotek GmbH).

You might wish to access that Debian guest from another box on your host's LAN. Here's how to do so with SSH. (If you're on Windows, you can do this IMO most enjoyably from Git Bash or Cygwin, although SSHing more directly from Windows is also possible.)

These instructions should work just as well with Debian's jessie or wheezy releases (in all likelihood). One caveat: Debian normally disallows SSH access as root. Instead, log in as a regular user and do 'sudo' (or 'su') if you wish to be root.


In your guest Debian operating system, install the software to accept your inbound SSH connection:
sudo apt-get install openssh-server

I. For the desired VM, adjust its VirtualBox settings:
  1. Choose network type NAT.
  2. Forward some inbound port on the host to inbound port 22 on the guest.
Here are the details on how to accomplish this:
  1. To provide an additional layer of security, pick a number between 1024 and 49151 (inclusive and random) to be the inbound local port ('host port') on your physical VirtualBox host.
  2. In VirtualBox Manager, select your desired VM (it can be running).
  3. In the VirtualBox Manager menu, click Machine–Settings–Network.
  4. Ensure the 'Adapter 1' tab is selected.
  5. Ensure 'Enable Network Adapter' is checked.
  6. You'll see the words 'Attached to'. There, select 'NAT'.
  7. Ensure that the blue, drop-down arrow by the word 'Advanced' has dropped down to show you the advanced settings.
  8. Click the 'Port Forwarding' button.
  9. Click the green icon, bearing a plus sign, whose tooltip is 'Adds new port forwarding rule'.
  10. Find and select the newly-created row.
  11. In the 'Name' column, type 'guestssh'.
  12. Ensure 'Protocol' is 'TCP'.
  13. In the 'Host Port' column, type your inbound local port.
  14. In the 'Guest Port' column, type '22'.
II. Set up Windows Firewall to allow the desired SSH connection, by following the steps in this post to create the new firewall rule. In particular:
  • Name it 'VirtualBoxSSHInPort' followed by the port number.
  • Under 'Edge traversal', ensure 'Block edge traversal' is selected.
  • For the path to the receiving program, use the path to the VirtualBox executable (on your host system).
III. Determine the Internet Protocol (IP) address of your VirtualBox host as viewed by its active router. Here's how:
  1. In your VirtualBox host's system tray, click the icon of the active router.
  2. Make sure the drop-down arrow by the words 'Wireless Network Connection' is selected, so you see a list of routers.
  3. Find the name of your active router in the list.
  4. Right-click that name.
  5. Click on 'Status'.
  6. Click the 'Details' button.
  7. In the 'Property' column, find the words 'IPv4 Address'.
  8. Read across to the 'Value' column.
  9. Note its four, dot-separated numbers. That's the IP address of your VirtualBox host, in the LAN provided by its active router. And for your SSH connection command it will be your target IP address.
In order to allow SSH connections to your VirtualBox guest, the VirtualBox software does Network Address Translation (NAT). So, BTW, your VirtualBox guest will report that you are logged in from some other LAN (with another IP address), not from your active router's LAN. The foreign port number will be different, as well.

IV. Now you can test the availability of your inbound SSH connection.

By default, to log in, SSH detects your local username and tries to use it.

Typical Windows usernames begin with a capital letter, yet typical GNU/Linux usernames begin with a lower-case letter. Therefore SSH's default username likely will fail. So instead (from Windows), the SSH command to access your VirtualBox VM is:
$ ssh {lowercase username}@{target IP address} -p {host port}
Since my name (and Windows username) is Mark, I enter:
$ ssh mark@{target IP address} -p {host port}
Alternatively, instead of logging in, you can run a single command (per these tutorials) and retrieve its output to your local, non-SSH computer—e.g.:
$ ssh mark@{target IP address} -p {host port} cat some-file > here
Or, you can use SCP.

Copyright (c) 2015 Mark D. Blackwell.

Wednesday, July 29, 2015

GNU nano on Windows with UTF-8 and color, howto

Ever since the day I first installed the Debian GNU/Linux distribution, I've been using their default text editor, called GNU nano.

I quite like GNU nano. It can edit multiple files at once, and it's extremely simple to use.

Since I like GNU nano's features, I'd like to use it whenever I'm (forced to be) on Windows as well—for instance, in Git Bash.

More broadly speaking, if installed on Windows, GNU nano might be a good bridge to help users in adapting to the UNIX command line, whenever they have a task requiring that. (Then at least the editor will be familiar.)

Currently the GNU nano editor's website says its latest Windows build is version 2.4.2 (of GNU nano). The download directory informs us this was last modified on 2015-07-05. Its README.TXT says `this version of nano for Win32 systems was compiled using...cygwin and PDCurses 2.4.'

Also, however, this GNU nano build was compiled with option `--disable-utf8' (as the command `nano --version' reveals).

At present, Windows (even XP SP3) is pretty thoroughgoing in its use of UTF-8. Because some of my projects need UTF-8, I decided to look into how I could work around this problem.

Ultimately, I extracted nano.exe from the up-to-date version (2.1.0-1) of Cygwin. That, as well as copying just a few other files from Cygwin, created a standalone GNU nano which works fine (without the bulk of Cygwin) on my Windows box—and it displays UTF-8. (BTW, I use several Windows computers; I haven't installed Cygwin on all of them.)

Note: you must set the following Windows environment variables (but you can change the `en_US' part if you like):
  • LANG   :   en_US.UTF-8
  • TERM   :   cygwin
The necessary files copied from Cygwin are just:
  • bin\cyggcc_s-1.dll
  • bin\cygiconv-2.dll
  • bin\cygintl-8.dll
  • bin\cygmagic-1.dll
  • bin\cygncursesw-10.dll
  • bin\cygwin1.dll
  • bin\cygz.dll
  • bin\nano.exe
  • lib\terminfo
  • usr\share\misc\magic
  • usr\share\misc\magic.mgc
  • usr\share\terminfo\63\cygwin
Place these in the same-named folders under your `nano' program folder and enjoy.

If you want syntax highlighting, pick up all the syntax highlighting files as well:
  • usr\share\nano\*.nanorc
Though you might run it from cmd.exe, GNU nano can do color-highlighting of syntax nevertheless. You must set this Windows environment variable:
  • HOME   :   %HOMEPATH%
Download the latest Win32 distribution from GNU nano's download directory (see above). Extract nano.rc (the GNU nano configuration file) and move it to %HOMEPATH%\.nanorc. Keep the line endings of this file as LF only.

Uncomment any (or all) of the GNU nano configuration file's lines containing `include ...' in order to make it pull in the various files above, which you desire. They define the particular sets of syntax which GNU nano will highlight.

The extension of the file you're editing usually determines which `*.nanorc' syntax file GNU nano will apply. (A regexp atop each syntax file determines this.)

To highlight trailing spaces (often disliked by git—the version control software), you might find it useful to append usr\share\nano\default.nanorc with:

      # Trailing whitespace
      color ,blue "[[:space:]]+$"

If you want to make tabs and spaces visible whenever you type Alt-P, then uncomment and change the `set whitespace' line in %HOMEPATH%\.nanorc to:

      set whitespace "»·"

Also, Lubomir I. Ivanov reports he has made a build for Windows of GNU nano 2.2.6. In addition to `--enable-utf8', he compiled with `--enable-extra' obtaining GNU nano's experimental features such as undo. He added a customized Windows command console as well, so his build may be even better.

Copyright (c) 2015 Mark D. Blackwell.

Friday, March 20, 2015

All good-sounding, choral 13th chords

Here is a PDF of all good-sounding choral 13th chords (excluding transpositions) along with a MIDI. It contains 203 chords in an extreme choral range: F2 to A5, sorted in an order useful for music composition purposes.

This list also contains about fifteen chords which don't sound as good. However, I didn't detect a pattern I could use, in order to remove them automatically.

I removed all chords containing:
  • Minor seconds;
  • Minor ninths;
  • Tritones;
  • Two consecutive major seconds;
  • More than two major seconds;
  • Major seconds starting lower than F3 or higher than F4;
  • Gaps greater than an octave which resume higher than F4.

Copyright (c) 2015 Mark D. Blackwell.

Tuesday, March 17, 2015

Greek language history

Some time ago, I took notes on an interesting book about the history of Greek: The Greek Language, B.F.C. Atkinson, 1931.

My notes touch on:
  • Greek's linguistic sources in other cultures.
  • A history of pitch accents in Greek.
  • The Septuagint translation (into Greek)'s impact on (Greek) vocabulary and modes of expression.
  • Linguistic and stylistic currents (from the Septuagint and Aramaic) in the New Testament.
  • A comparison of Plato with the (Greek) New Testament, regarding each's linguistic impact.
  • Greek and English linguistic histories compared.
  • Linguistic change depends upon political and social development.
The notes: page 1, page 2, page 3.

Copyright (c) 2015 Mark D. Blackwell.

Saturday, November 8, 2014

Justorum animae - Stanford, C.V. - select performances

Using Spotify, I selected IMHO the best available performances of "Justorum animae" by Charles Villiers Stanford:   :)

These really are inspiring, don't you think?

Most transporting—so, shouldn't be ignored—are these gems:   :)
  • Choir of St John's, Elora
  • Choir of Truro Cathedral
  • District Eight Vocal Ensemble
  • Salt Lake Vocal Artists
  • University of Utah Singers

Copyright (c) 2014 Mark D. Blackwell.

Monday, October 20, 2014

Why I enjoy Evensong

I enjoy Evensong, because weekly for about a year I volunteered (in former days) as an Evensong singer.

This was at The Church of St. Michael and All Angels, directed by the excellent David Riley. That church (in Baltimore, MD) no longer does Evensong, though.

Apparently, they had an ironclad budget for only the music director's part in this (perhaps from a donation), although absolutely no congregation members ever attended (!) that I know of. So, the singers' experience was all fun, performing only for the aesthetic sense of the director.

We (music students) rehearsed a different musical Evensong setting every week during the hour before, and thereupon immediately went "on stage." We even had a countertenor.

Whoever might appear got to sing, so we did so completely for our own pleasure. Most of us attended consistently.

We covered quite a variety of Evensong settings and always (each time) enjoyed an after-party at a Chinese restaurant. :)

So, that's indeed why I enjoy Evensong.

Copyright (c) 2014 Mark D. Blackwell.

Thursday, October 16, 2014

Violoncello piccolo & alto violin

A "violoncello piccolo" is a form of violoncello, akin to the cello da spalla (also called viola da spalla).

"A whiny beginning of the [Bach] 6th [cello] suite’s Praeludium (notably less securely played than what came before and after – where there were only a handful of squeaks and slips present) betrayed a few problems, not the least of which might have been the uncomfortably high register in which the suite lies for the cello, an instrument it was not written for. Most cellists use a smaller cello with an additional E string for the performance, which is akin to the baroque violoncello piccolo that these pieces were probably written for."


"Yo-Yo Ma, The New York Album...Release date: September 20, 1994...

"Béla Bartók (1861-1945) Concerto for Viola and Orchestra, Op. posthumous...

"Perhaps in Bartók's mind the draft of the Viola Concerto truly was complete. Nevertheless, the posthumous task of deciphering, arranging, filling out and orchestrating the thirteen extant pages of sketches proved to be [a] formidable one. At the [Bartók] family's request it was undertaken by Tibor Serly (1901-1978), the Hungarian-American composer and violist...

"Serly actually prepared a cello arrangement of the concerto simultaneously with the "original" viola version...Yo-Yo Ma originally intended to perform (and record) this cello version...but he was dissatisfied with the registral displacement and discovered that he could play the solo at its original pitch on the alto violin (or vertical viola), a large "viola" fitted with a long endpin and held like a cello. This instrument, part of a set of eight "violin analogues" designed and made by Carleen Hutchins at the suggestion of composer Henry Brant, is intended to carry the tonal characteristics, projection, and balance of the violin sound into the viola range."

— from the album's original liner notes—on p. 205 of


Copyright (c) 2014, 2015 Mark D. Blackwell.

Tuesday, September 23, 2014

Visual project design & reporting & Pivotal Tracker with add-ons


Some business owners wish to see diagrams which can explain the software structure of a project visually. In those cases, UML is a good choice:

The following (kinds of) UML diagram are useful for that purpose:


Often, business owners are attracted to the tool, Visual Paradigm. Unfortunately, it is quite expensive.

The tool itself isn't web-based, but the company (free of charge) offers VPository, cloud storage for developers working collaboratively.

IMO, a download for each user is fine in itself if the project data is shared.

Its Professional Edition is the minimum practical level to obtain the features which business owners often are interested in: Requirements Gathering ("uexceler"), Task Management, and Wireframes.

Regarding Visual Paradigm's cost factor, they levy a surcharge to receive bug fixes for their software. (Like all software, I suppose it's buggy.) Therefore, currently the Single Seat License for the Professional Edition is really $838.50 per person (= $699 + $139.50). Floating Licenses—for transient project contributors—are $1,090.00 each (= $908.50 + $181.50. All prices are in US dollars.).

Maybe using Visual Paradigm is really taking things too far.

Basecamp can maintain a project glossary as a versioned, editable file.

For most projects, the database schema diagram can be auto-generated (at least once) and stored in Basecamp.

Perhaps User Stories, and images for each wireframe block, can be tied together in some easy fashion (see "Add-ons adding pictures to User Stories", below).


I came across this list of tools similar to Visual Paradigm. Of them, the following might be useful:


Because Pivotal Tracker is quite successful (or popular), people have contributed quite a large number of add-ons:

Add-ons adding pictures to User Stories:

Add-ons adding User Stories from plain text:

Add-ons dumping User Stories:

Add-ons for bugs:

Add-ons for reporting:

Add-ons for testing:

Add-ons liaising other sites with Pivotal Tracker, also with Basecamp:

Add-ons liaising with Cucumber:

Add-ons liaising with GitHub:

Add-ons liaising with Redbooth:

Add-ons liaising with Redmine:

Other relevant add-ons:



Track Duck (highly popular) allows people to add comments to any website, after it automatically takes a screen shot.

Track Duck integrates with Pivotal Tracker and Basecamp, etc.

With it, one easily can add (one or multiple) images to Pivotal Tracker User Stories, and also create images for Basecamp. But see other "Add-ons adding pictures to User Stories", above.

Reviews of Track Duck:

Copyright (c) 2014 Mark D. Blackwell.

Thursday, July 10, 2014

Rondo and ritornello, Must All Be Veiled

(From a letter to a friend:)

I think my use of the term, "ritornello" was incorrect, after you (as I recall) correctly described the form of my anthem, Must All Be Veiled as a "rondo."

As support, below are some descriptions of rondo and ritornello which you might enjoy reading from Theodore M. Finney's 1935 (rev. 1948) work, A History Of Music:

On p. 88-89, in a section entitled "Musical Forms" of a chapter entitled "The Beginnings of Secular Music" which covers the 1000s through the 1200s:

"[Troubadours, et al] made the first distinct beginnings of purely musical form...From the time of the Troubadours until the present, the words aubade (alba), serenade (serena), pastorale, canzone (canzonetta), carol, rondo, and ballad (ballata) are constantly to be met as titles of short compositions...[I]n at least one case, that of the rondo, the basic idea of an important musical form was present.

"The rondo as we now know it depends for its structure upon the reiteration, after digressions, of the beginning subject matter. Its ancestor is the Troubadour rondet de carol, a dance song in which, as its name implies, the dancing chorus sang a refrainlike strophic song between the repetitions of which solo verses were sung and danced. The formal principle of repetition after contrast, which here becomes evident for the first time, was destined, after later tonal discoveries had enlarged and better defined musical resources, to become all-important in musical structure."

I see the above structure, called rondo or rondet de carol, contains an identical repeating element.

On p. 118-119, in a section entitled "The Madrigal" of a chapter entitled "Ars Nova [New Technique]" which covers the years of the early through mid-late 1300s:

"Another important fourteenth-century form was the madrigale or mandriale. The madrigal was a secular composition which spread during the fifteenth and sixteenth centuries to the whole of Europe and became, with the motet, one of the two great choral forms. At the time of its first appearance in Italy it was an exceedingly simple structure consisting of two main portions. One part was composed for several stanzas of text and the other part, called the ritornello, using new music and a different rhythm, came immediately after each stanza. This form will be seen to be closely related structurally to the older Troubadour rondet de carol, mentioned in Chapter 8 [quoted above]. It may be diagrammed as follows:

"Stanza A, Ritornello B, Stanza A, Ritornello C, Stanza A, Ritornello D.

"The fourteenth-century Italian madrigal is important not only as the beginning of an important choral form, but as a connecting link between the older rondet de carol and the later rondo."

I see the above structure diagram of a Trecento madrigal includes multiple ritornellos, which differ (musically) each time.

On p. 364, in a section entitled "The Rondo" of a chapter entitled "Musical Form At The Death Of Bach: 1750":

"The rondo form, an A B A C A structure, was often combined with the characteristic rhythmic procedure of a dance..."

I see the above structure, called rondo, contains an identical repeating element.

Finally, Wikipedia on Ritornello says:

"A ritornello (Italian; 'little return') is a reinviting passage in Baroque music for orchestra or chorus. The first or final movement of a solo concerto, concerto grosso, or aria may be in 'ritornello form', in which the ritornello is the opening theme, always played tutti, which returns in whole or in part and in different keys throughout the movement. In these visits to different keys, ritornello form differs from the rondo.

"The final section of a fourteenth century madrigal had previously been called the ritornello and a similar technique had been employed by Giovanni Gabrieli in his 16th century motets. The instrumental interludes in early Baroque operas were also termed ritornelli.

"Ritornello construction faded with the advent of the new sonata form but received renewed interest in the 20th century."

I see this distinguishes a ritornello, which changes key, from a rondo, which does not.

My piece does not change key, so I think you are right to call it a rondo. :)

Also, in using a rondo form, I had intended to produce an antique feeling.

In this, my purpose was to express the ever-presence of a certain problem which George Herbert and I described. This problem, of miscommunication between expert speakers and ordinary listeners, has existed always.

As usual in creativity, my impulse to express this fact arose preconsciously—in other words, it felt right, somehow. :)

Ars_nova – Wikipedia
Madrigal_(Trecento) – Wikipedia
Ritornello – Wikipedia
Rondeau_(forme_fixe) – Wikipedia
Rondo – Wikipedia

Copyright (c) 2014 Mark D. Blackwell.