Review of Garmin eTrex Venture HC for Language Documentation

In a recent (2010-2011) Language Documentation Project we decided to also collect GIS data (GPS Coordinates), about our consultants (place of origin and place of current dwelling), about our recording locations and for Geo-tagging Photos. We used a Garmin eTrex Venture HC to collect the data and then we compared this data with GIS information from Google maps and the National GIS information service. This write up and evaluation of the Garmin eTrex Venture HC is based on this experience.
Continue reading

OS X Error -36

I had an OS failure while I was in Mexico. I managed to reinstall the combo update and things started working again. However, some of my big files (movies) will not copy, Time Machine fails, Some PDFs are now failing to copy. It always comes back to a -36 Error. I cannot find the error report for this online. It seems to be some sort of I/O error. I left a comment over on this blog.

prompt%> mv /Users/phil/Desktop/movie.avi .

I tried the command line mv command and the command line told me Input/Output error.

Failed mv

Failed mv

But I can play the file on my harddrive. – I have the same error if I try to copy the file to somewhere else on my internal harddrive.
Using OS X 10.6.5 on MBP 15″ moving the file to a WD My Passport via USB. The file in question is a .mts movie file. I can move other .mts movie files which were made with the same camera, at the same time, and are in the same folder to the external hardrive.

Error -36

Error -36

I can’t figure out why I have this error or how to solve it.

Finding that Apple command symbol

I have always wanted to be able to type the ⌘ symbol for various reasons, including writing tutorials, but I have not know how to access it through my keyboard. A few, general, related notes:

  1. There is a nice wright up including some history on the Command Key, ⌘ on wikipedia.
  2. How Apple Keyboards Lost a Logo and Windows PCs Gained One
  3. PopChar is an application which helps users find obscure characters.
    PopChar

    PopChar is a utility for helping users find the Characters they are looking for

    This functionality is built in to OS X with Character Viewer, though it is likely that PopChar extends the user experience in some way.
    CharacterViewer-with-highlight

    OS X Character Viewer

    Shiftkey-in-characterViewer

    Shift Key in Character Viewer

  4. This discussion on the Apple Forums talks about a way to put these symbols in Pages’ auto correction so that Pages will auto correct a set of characters typed to the symbol desired. I have seen this used in MS Word too.
  5. A table of Unicode characters corresponding to Macintosh keyboard symbols, as they commonly appear in menus.
  6. The Next two Links are more detailed but like the above.

  7. Special Key Symbols
  8. Apple Keyboard Symbols
  9. Marginally relevant:

  10. Multi-stroke Key Bindings
  11. Keystroke mapping explained by SIL’s NRSI.

It is unicode point 2318 (the html hex code is ⌘ ) and so you can find it in the character palette under:

  • Code Tables>Unicode>2300>2318
  • or you can go into

  • All Characters>Symbols>Technical Symbols

.

Apple ⌘ symbol

Apple ⌘ symbol

There are a few other ways to get at it, but that should do it for you.

On OS X, if you switch your keyboard to Unicode Hex Input, then holding down opt allows you to type the four digits for a unicode symbol and get the ⌘ (2318).

The Alt/Option Symbol has also been elusive. It can be fount at Unicode point 2325. U+2325.

Alt Key U+2325

Alt Key U+2325

Unicode and Hex Keyboard symbols
⌘ – ⌘ – ⌘ – the Command Key symbol
⌥ – ⌥ – ⌥ – the Option Key symbol
⇧ – ⇧ – ⇧ – the Shift Key (really just an outline up-arrow, not Mac-specific)

⇥ – ⇥ – ⇥ – the Tab Key symbol
⏎ – ⏎ – ⏎ – the Return Key symbol
⌫ – ⌫ – ⌫ – the Delete Key symbol

Network Needs for Poly-lingual Language Documentation Project

Network Diagram

Mephaa LangDoc Project Network Diagram

The diagram above roughly illustrates our network setup. This set-up might be typologically rare in terms of language documentation field stations for several reasons. But we had reasonable power (both in quality and quantity), though there were some power outages. And we had high-speed internet.

In terms of network set up there was the need for an internet direct out, so that we could have a team network, and then a separate network for language consultants, who would bring their own computers to have a “drop box with us”. To fill this need we could open our network to each of the consultants or we could use an outside service like Dropbox. – I am not sure why we did not use DropBox. Eventually we did use google spread sheets for collection word frames. Our consultants might have been atypical in that they also had their own computers and had some familiarity with computer use.

Single FLEx Datastore for all languages

MicrosoftSQL Server for running FLEx on the Network. This is achieved through running XP in a virtual machine via Virtualbox on the OSX Server. We have multi-able entry points of data to the “FLEx System”. We also did not completely solve the network access to the data bases. That is one person could access the database at a time with write access. Since this project the current version of FLEx has moved from a MicrosoftSQL Server Backend to an XML backend. But perhaps what would have been better was to use FLExBridge or LiftBridge.

Server and data store Backup

Best practice for backup calls for a three way backup plan.

  • An onsite backup.
  • An “across town” backup. Where a (at least weekly) backup is held by a friend or colleague across town.
  • And an out of country back-up.

This three way backup is to:

  1. Protect from mistakes or equipment failure.
  2. Protect from theft.
  3. Protect from catastrophic events.

Our onsite backup was handled by Time Machine.

We would switch out our Backup drive every week and give it to a colleague across town.

We attempted to use KKoncepts for our offsite backup. (KKoncepts did not work out because it was based on a simple rsync script and every time we tried to re-organize folders in our corpus it would try and re-sync all of the Gigabytes of data which lived under the folders.) The DropBox service is much more efficient and looks at the block level (inside the file) and only updates things that have changed. It then looks at the tree structure and mirrors what is currently on the clients computer, rather than re-uploading the content.

Not yet well defined are the network settings needed to run WindowsXP in the virtual machine, OS X, and Windows 7, establish a DNS server with AirPort Extreme.Note: Although the title/URL says “Multi-lingual” this is to be understood that multiple languages are being documented. The term poly-lingual also fits this particular project because the language of communication and authorship was Spanish, yet many of the network issues were resolved in English.

Chronicles of DNS & Sub-Domains on OSX Server

The Intended Setup:

We want to be able to run the OSX provided Wiki, Calendar and Blog features of the WebService. In addition we want to also run Mercurial (http://mercurial.selenic.com/) and RefBase (http://www.refbase.net/).
We want to run:

  • OSX services at mephaa.xyz
  • Mercurial at: hg.mephaa.xyz
  • Refbase at: ref.mephaa.xyz

These sites are for our work group only, they need not be accessible to the outside world. But if in the process we can make our setup of such a nature that an invited guest could collaborate with us on our project and view our workgroups’s collaboration area that would be ok. We will be using the MacPorts version/method of running mercurial.
Aside: Since I originally started out to resolve this challenge I have acquired mephaa.org, as a real registered domain.

Network layout:

Network Diagram

Mephaa LangDoc Program Network Diagram

We have a dynamic IP from our neighbor’s router. (We share the line and they are up stream. That is just the way things work in this location in Mexico. They are in turn connected to the ISP.)
The connection from the neighbor is hardwired to the WAN port on the Airport Extreme. The Airport Extreme is using NAT & DHCP (see settings below). I have 9 machines connected to the Airport. One of which is the MacMini server. It is the only one that is hard wired to the Airport. The rest are laptops that connect wirelessly.
The MacMini is assigned a stable IP address by the Airport Extreme based on its MAC address. The IP address for the server behind the firewall: 10.0.1.5.

The Settings on the AirPort Extreme:

The Challenge: As I presented it and discussed it on apple’s forums, on Nov. 20th.

Status: (Nov 20th)

We do not have an outside domain name that we have purchased. We just are using the name of the computer as it was set up during the install of the OSX.

I have the Wiki, Calendar and Blog features running at macminimarlett.local.
I can type macminimarlett.local in any web browser on the server side of the Airport Extreme and access the OSX provided WebServices (aka the wiki, blog and calendar.)

I would like to make the mercurial repository available at: hg.macminimarlett.local
I would like to make the refbase instance available at: ref.macminimarlett.local
These “additional” websites are hosted on the same machine as MacMiniMarlett.

§1. So What must I do to get hg.macminimarlett.local to resolve at all to anything?
§2. So What must I do to get hg.macminimarlett.local to resolve to my mercurial instance?

Currently I can not get hg.macminimarlett.local to resolve at all. “Safari can not find the server”. But browsers do find macminimarlett.local.
This leads me to think that it is a problem with my OSX server settings not with my install of Mercurial.

Suggestions offered on the 20th:

  1. Do not use .local.
  2. Do not use .private.
  3. Change the domain to something other than the computer name.
  4. Computers on the LAN can find macminimarlett.local because of bonjour. Not because of any special DNS entry.

We dropped the .local and the .private and switched to mephaa. instead of using macminimarlett.. I left the macminimarlett. zone in the DNS records just incase. This leads us to the server settings on Nov. 21st.

To this point I had been assuming that .private in the DNS registry was being translated to .local in the bowsers. This was an errant assumption.

Server Settings: Nov 21st

MacMiniMarlett DNS Settings

Suggestions received from John on Nov. 21st:

Your DNS is incorrect. Run the terminal command:
sudo changeip -checkhostname
You need to get this sorted out because it effects a lot services.

Here’s the crash course version: the . (period) at the end of the domain name means it is a full qualified domain name (meaning that it is real domain that real people use, like google.com.) also the primary domain record should be like this macminimarlett.com. Or macminimarlett.private. Or macminimartlett.local. (beaware that Microsoft Server 2008+ is droping .local support and you need a real domain name and public IP/dedicated IP – which means using .local isn’t future proofing).

One thing to know, the primary domain record doesn’t have to be a fully qualified domain, but it should be as everything is heading that way in the future.

At the moment your server is thinking the macminimarlett. And mepaa. Are the .com part of the domain name.

Yeah there will be a lot of confusion in the mepaa domain record as there isn’t any reverse mapping for it. And the cname record is at the .com level (layer 1) which won’t resolve very well for clients.

Next, what is the forwarder settings set to? These should be set to the ISP DNS and then to the router (you can add as many DNS servers as you like for redundancy).

What is doing DHCP to the clients? What DNS are they getting? The clients need to know where your subdomains are in the network. For example if a pc is typing in hg.macminimarlett (which is a bad idea – it should be hg.macminimarlett.private or something like that) then the pc client checks the DNS server for which server (IP address) has the subdomain hg.macminimarlett – but if the DNS server doesn’t have a record of hg.macminimarlett then the DNS server will reply with not a real address (because it doesn’t know who that is).

Regards,

Nov. 22nd.

I now realize that the syntax of my DNS entries (when and only when I am not using a registered domain name) need to be:

  • For a Zone: <Some Name>.<Something Unique>.
  • Where the above corresponds to the following: (domain name level).(TDL level).

  • For the domain root, which is an entry in the zone: <Some Name>.<Something Unique>.
  • Where the above corresponds to the following: (domain name level).(TDL level).

  • For a subdomain, which is also an entry in the zone: <Some Name>.<Some Name>.<Something Unique>.
  • Where the above corresponds to the following: (subdomain prefix).(domain name level).(TDL level).

My current entries in my DNS are not set up this way. I need to change them. Before I do that I should likely run the changeip -checkhostname as suggested by John.

I ran sudo changeip -checkhostname
And this is what I got:

changeip Results

Now my question is: is this message saying I need to run this again? What am I to do with the results of the message from changeip? I read the Manuals but that did not yield any profound insights.

I added .private to all the DNS records in the DNS service, in order to fix the syntax of the DNS records as indicated by John. After that I ran changeip again. It now shows that there is nothing needing to be changed. I think this part is now resolved.

Resolved changeip Results

Now this is what the server settings are (Noon 22nd) :

Aside: I corrected a spelling error in the DNS Records where mephaa was mispelled as mepaa. All the records now read with the mephaa spelling, as indicated in the second picture.

I got hg.macminimarlett.private to resolve from the server to a test index.html page on the server. But I could not get it to resolve from a client on the network.

  • Is this because I have the wrong type of records?
  • Is this because I am not passing the DNS records to where the clients are looking for the records?
  • How do I pass these DNS entries to my clients?
  • Is this something I have to enter in the Airport Extreme? If so which entries on which lines?

Airport Extreme TCP/IP

From Camalot via the Apple forum post:

A hostname is a record of a host within the domain. For example, hg.macminimarlett.private is the hostname for the host hg within the macminimarlett.private domain.

I don’t see anything in the Server Admin titled “hostname”… There is one thing under the Primary zone that says “hostname” but what should this be set to? the IP of the computer on this LAN?

Server Admin doesn’t know what additional hostname you want for your domain. It’s up to you to create them. You create additional records (either ‘A’ records (Alias) for physical machines, or ‘CNAME’ records for additional hostnames that you want to map to an existing machine.

§7. Ok so in what manner do I add hg.macminimarlett.private. to that zone? Do I add it as a CNAME, as a secondary zone, as a Machine (A) recored?

In this case it sounds like you want to add three records to your existing zone.

One A record for your server (call it whatever you want, but server.macminimarlett.private seems to make sense). Give this the IP address of your server.
Two CNAME records – one for hg and one for ref that both point to server.macminimarlett.private.

Now you’ll be able to resolve all three hostnames, and they’ll all point to the same physical IP address. From there it’s just Apache’s configuration telling it how to deal with the different requests.

From John:

Yeah there will be a lot of confusion in the mepaa [sic] domain record as there isn’t any reverse mapping for it. And the cname record is at the .com level (layer 1) which won’t resolve very well for clients.

Next, what is the forwarder settings set to? These should be set to the ISP DNS and then to the router (you can add as many DNS servers as you like for redundancy).

What is doing DHCP to the clients? What DNS are they getting? The clients need to know where your subdomains are in the network. For example if a pc is typing in hg.macminimarlett (which is a bad idea – it should be hg.macminimarlett.private or something like that) then the pc client checks the DNS server for which server (IP address) has the subdomain hg.macminimarlett – but if the DNS server doesn’t have a record of hg.macminimarlett then the DNS server will reply with not a real address (because it doesn’t know who that is).

I am not sure what is giving DNS to the clients. I did have to put something (I think it is the IP of my neighbors router, see the image above) in the DNS settings of the Airport Extreme in order to get the Internet to be passed to the clients. So what I did was put the internal IP address of the MacMini Server in the DNS field on the Airport Extreme. I also found this interesting: http://www.dyndnscommunity.com/questions/4567/custom-dns-with-subdomain-and-airport-extreme

It seems that an AirPort Extreme will always identify itself as the DNS server. If I want the network to look for a DNS server elsewhere. Then I need to follow one of these options: http://discussions.apple.com/thread.jspa?threadID=121990, http://wiki.amahi.org/index.php/Airport_express or http://discussions.apple.com/thread.jspa?threadID=2288123&tstart=0. (Restart might be required. Also I might be looking for something called “split horizon DNS”.)

http://www.dyndns.com/support/kb/apple_airport_with_custom_dns.html
http://www.dyndnscommunity.com/questions/1087/apple-airport-does-not-create-global-dynamic-hostname-in-custom-dns-zone

SSH, Unix commands & RegEx

This summer I am sitting in on a computational linguistics course. It is the first instruction I have had about UNIX. Pretty Awesome.
This has required me to do some googling looking from terminal commands.

This is kind of a sketch of where I have been.

UNIX:
http://www.osxfaq.com/Tutorials/LearningCenter/

SSH:
http://kimmo.suominen.com/docs/ssh/
http://ss64.com/osx/

TERMINAL:
http://homepage.mac.com/rgriff/files/TerminalBasics.pdf

grep:
http://www.thegeekstuff.com/2009/03/15-practical-unix-grep-command-examples/
http://en.wikipedia.org/wiki/Grep
http://www.computerhope.com/unix/ugrep.htm

Regular Expressions:
http://www.zytrax.com/tech/web/regex.htm
http://www.regular-expressions.info/tutorial.html
http://gnosis.cx/publish/programming/regular_expressions.html

RegEx and Unicode:
One of the issues that I have had with RegEx has been what is a natural class? i.e. [A-Z], [A-Za-z], [0-9], etc. As a linguist I deal a lot with IPA characters, subscripts, superscripts, unicode, and diacritics. How am I to define a natural class with these? Can I define a natural class based on the phonology of the language?

So I did some more searching:
http://unicode.org/reports/tr18/
http://unicode.org/reports/tr18/tr18-5.1.html
http://icu-project.org/docs/papers/iuc26_regexp.pdf
http://courses.ischool.berkeley.edu/i256/f06/papers/regexps_tutorial.pdf
http://wapedia.mobi/en/Regular_expression?t=5.

RegEx+PERL+Unicode:
http://perldoc.perl.org/perlretut.html

PERL:
http://www.enginsite.com/Library-Perl-Regular-Expressions-Tutorial.htm
http://www.cgi101.com/book/connect/mac.html
http://www.mactech.com/articles/mactech/Vol.18/18.09/PerlforMacOSX/index.html

Python:
http://www.amk.ca/python/howto/regex/

SSH and Terminal

I used an ssh connection from the Terminal today for the first time!

Picture of Apple Terminal

Terminal

I feel like a real man now.
I needed to transfer a 106MB folder from one subdomain to another subdomain on my DreamHost webserver. It has been my experience that whenever I copy or move folders with a lot of sub-folders that something(s) do(es) not get copied all the time or all the way. So I needed to archive my files and move them as a single object. But I do not think it is possible to zip files with an FTP client (at least not with Interarchy). For a solution I turned to ssh and a lot of googling.

So to ssh into my webhost I had to enable a user from the DreamHost panel.

Picture of  panel to Enable ssh for user on DreamHost.

Panel to Enable ssh for user on DreamHost.

User Account Type Page at DreamHost

User Account Type Page at DreamHost

Second image from another tutorial.

Then I had to open terminal and create a key. I found some sensible directions in the knowledge base.

    To generate a secure public/private key pair to log in securely, and without a password (if you want):

  • In Terminal type: ssh-keygen -d
  • Hit the “enter” key three times.

    Replacing “username” and “yourdomain” with your FTP username and your-domain,

  • copy & paste/type the following into Terminal:

    ssh username@ftp.yourdomain.com 'test -d .ssh || mkdir -m 0700 .ssh ; cat >> .ssh/authorized_keys && chmod 0600 .ssh/*' < ~/.ssh/id_dsa.pub

  • Press return/enter key again.
    Wait for it to ask for the Password:

    Enter the password of the FTP user who's username you inserted in place of the example USERNAME@ftp.yourdomain.com above.
    If it asks you for the password multiple times, type in the same correct password each time.

    Then you will be at the root in your Terminal window.

  • type: ssh username@ftp.yourdomain.com
  • You're logged in!
    Now any time you want to log using SSH you can just repeat
    ssh username@ftp.yourdomain.com
    from the command line (Terminal), no need to repeat the other steps.

So from here on I was in my webhost but still didn't know how to get around. Evidently I needed to use long paths so $ cd /home/username/directory would move me from directory to directory. I could not just $ cd /directory.

Once I was able to get to the directory I needed to archive, I still needed the archive commands.

I thought I wanted to use zip as my archive utility. The zip command to do that would be:
$ zip -r folder.zip folder
Though my friend Daniel said that I might should have used tar gunzip tar.gz instead of using the zip command: "Zip compresses each file separately and then archives. Tar+gzip or tar+bzip2 archives first and then compresses."

The commands to use the tools Daniel suggested would be like the following:

tar+gzip
$ tar -cf blah.tar folder/
$ gzip -9 blah.tar

gzip compressed tar I guess this is a combination of the above two commands. Not sure. Didn't try it.
$ tar czvf folder.tgz folder

bzip2
$ tar jcvf filename.tbz folder

After the file was compressed I used Interarchy to move the single zip file to its new location. I also needed to unzip the file. (I also read this.)
To unzip the file I navigated to the directory where the file was located and then used this command:
$ unzip folder.zip folder
I had to use the long path too. So it was really:
$ unzip /home/username/directory/folder.zip folder

What a sense of accomplishment!

Merging iLife Libraries

The Problem:
One user on in a small business / family network can’t use (with metadata) all the media in a colleague’s or family member’s iTunes or iPhoto Library.

In our family there are three Macs (2 everyday machines and a server). On many work and personal tasks we function as a small workgroup. Unfortunately iTunes and iPhoto do not facilitate the sharing of media libraries (or for that matter the merging of media libraries). For instance, my wife had her own music and photo collection before we got married. Now if I want to browse that collection from my machine, there is iPhoto & iTunes sharing. But I can not add tags or other metadata to photos on her Mac. I can not create smart folders which we both can use.

iTunes
For our music we moved my collection to the Server and made it like a “media center”. When we get new music we add it to the server. If we want a copy on our own machines we pull it as needed. i.e. for an iMove project. This solution has not allowed my wife to add her collection to the server, nor has it solved the manny duplicates which exist because we like many of the same songs. Now I have found a solution to this: PowerTunes.

iPhoto
Now the same problems exist for our photos. However, there is no real advantage (or software) for hosting the family photos on our sever. But we still need to define a photo capture strategy.

  • When we take new photos, to which computer are we going to download the photos?
  • Where will we have the master library?

I don’t have a complete solution to our photo capture, retention and access needs but iPhoto Library Manager is the only software out there that will let us maintain the metadata and merge our iPhoto Libraries. However, This is a fantastic first step strategy:

  • Consolidate the iPhoto Libraries.
  • Designate an computer to be the Master Library holder.
  • Share that iPhoto library across the network.
  • Back that computer up.