Category Archives: Uncategorized

Odds and Sods

Apple Fall 2016 Product Announcements

Are the  Apple product extravaganzas vaguely creepy? It seemed if you were a presenter you had to be a gray-haired guy wearing a rumpled denim shirt. We are so excited.   The new Home button!  The special adapter for plugging your old earphones into the Lightning port! Everything is so awesome. Each tiny incremental change is touted like a family FaceBook update.

We wanted a refreshed MacBook (four years old). We got Pokemon on the iWatch.

Biggest news was probably the upgraded camera on the iPhone.

Upgrade to Quickbooks 2016

We have upgraded our QuickBooksPro 2014 to QuickBooksPro 2016. There doesn’t appear to be any major changes from an installation standpoint.  The main steps include:

  1. Purchase Quickbooks Pro 2016 3-user license through TechSoup. The result of this purchase process is that you receive a unique license ID number.  You’ll need that number plus the “product ID” number to complete installations on each machine.
  2. Download Quickbooks Pro 2016 to each workstation.
  3. Download Quickbooks Pro 2016 to the “server”  Our server is a re-purposed  Windows 7 workstation with a shared folder for the Quickbooks data files.  When you use the Quickbooks installer on the server,  choose “Host the company file on this machine, but access it from Quickbooks on other machines”
  4. Copy the company data file to the shared folder on the server.
  5.  Run the Database Manager on the server, to make the file available to the workstations.
  6. Open the file on the workstation(s).
    A few more hints on configuring the server are located here.  Don’t forget the AntiVirus!


PCI compliance.

If you take credit cards and handle the actual card data, then you may have already been prompted to certify that you are in compliance with the PCI security standards. This requires a yearly questionnaire and a quarterly scan of your public IP addresses. You can get started by doing free scans from HackerGuardian. If this works for you and you need to continue with scanning you can get a 3 year subscription via TechSoup for $67.00.

MailClark: Use Slack for Customer Support

One thing that is pretty wonderful about Slack is the number of integrations available. We have integrated Trello, Google Calendar, Dropbox and Google Drive with our Slack installations. Now a new one has presented itself that allows you to create what I would call a “threaded customer support system”. This appears to be ideal for relatively low-volume eMail support. Here’s how it works:

Hire a Mail Clerk, (named Clark).

The key is a terrific application called MailClark an email bot for Slack. If you have worked with Slack at all, you know about the “slackbot”; an artificial intelligence “user” which you can communicate with to perform various tasks, or to get help on Slack. (Think Siri for Slack). MailBot is a similar “bot” but one that allows you to send and receive eMail directly to and from Slack channels.

Adding MailClark to Slack adds a new user called @mailclark, and provides you with an intermediate email address that includes your team name and the channel that you are going to use for inbound questions.  So, for example if your Slack team name is  “tfnphelpteam”, and you have a Slack channel called “grantsupport” you will get an email address of

Emails sent to that address will show up in the techsupport channel showing the complete email address of the sender and a reply button. Screenshot_071416_110006_AM.jpg

If I click on the reply button, MailClark will create an entirely new Slack channel for the conversation, including the original query.  This channel will be named similarly to the original (inbound) channel, but will be randomized for the individual. The channel will show up with unread messages…  and you can then click on the channel to reply to the original question.


The crux on the replies is that you need to follow the your reply with @mailclark send on its own line at the end of the message.



What’s cool, is that any subsequent emails to or from this person will stay in the channel, so that you have a threaded discussion of an entire conversation. This is the equivalent of a “trouble ticket” system like ZenDesk.

Of course isn’t a particularly intuitive email address for help. So, we created our own own google eMail address, something like (not a real address!) which then gets forwarded to the MailClark address.

Odds and Sods

Random Tips

  • Panic in the ranks! This is not the first thing you want your users to see in the morning as they attempt to log into to complete a grant application:
    The table "{{settings_global}}" for active record 
    class "SettingGlobal" cannot be found in the database."

    After some poking around it turns out we were out of allocated disk space on the Linode.  df -m showed 100%. I think this was related to a backup and restore that I had done a day earlier; which preserved the old image as it copied a new version  to the same allocated disk space. The actual error was returned by LimeSurvey, which was reacting to a system 8 error generated by mySQL.

  • Trying to see the analytics for a link?  Just append a plus sign ‘+’ to the link. This will show the statistics for the link instead of what the link points to.

Stuff I’d Like to Try Out

Two “glue” programs that process something in one program, based on a trigger that is set in another program.

Two forms program that make web forms.

Links of Interest

50 tools for project management. (from Zapier)

Apple Downsizes. New iPad Pro and iPhone


Apple is holding its March announcement, and it is an odd mixture of a sort of fashion runway theme, snake oil salesmanship, and religious revival. It was a bit disconcerting to see CEO Tim Cook slavering over the new colors for the watch bands for the iWatch. The whole presentation seemed to have a sense of desperation.

Incredible!, Awesome!, Epic!, Incredibly!, Biggest!, Unbelievably Thin! I keep thinking there should be a way to lend a greater aura of dignity to the whole proceeding, but always end up feeling a little queasy.

They are even claiming that  your iPhone will help you sleep better.

Two interesting segments of the presentation revolved around a new iPad and health-related software.

  1. The Health App is a dashboard for health data which consolidates health data from other sites and devices. There was discussion of ResearchKit, which uses the iPhone as a data collection device for research data, and a new framework called CareKit, which delivers.
  2. iPad. A new iPad Pro with a 9.7 inch display. They are saying they are targeting Windows users. There are over 600 million PCs in use today that are over 5 years old.  The iPad solves problems that you never knew you had. There is an available smart keyboard, and the Apple Pencil. The cameras have been upgraded to a 12 megapixels, and the ability to shoot 4K video. The front camera is 5 megapixels. Starting at $599 at 32GB, If you add an Apple Pencil, and a smart keyboard, the cost will approach a thousand bucks.

Outside of these two announcements there was the aforementioned discussion of new fabrics, styles and colors for the Apple Watchband, an upgrade to Apple TV, and upgrades to a few of the apps on IOS 9, including the lame Notes and News apps, and a new smaller iPhone. All this is accompanied by polite applause and accompanying whoops.

LimeSurvey: Reset User Names and Passwords

We use LimeSurvey for receiving grant applications. These applications sometimes take a while to fill out, and the applicants have the opportunity to save an existing application with a name and password for re-use later.

Once they save, the LimeSurvey server will send them an eMail with their name and password, and a link to get back into the existing application to continue working.

Inevitably, people forget their name and password, or misplace the email.

Incredibly, even after all these years, LimeSurvey doesn’t have a one-click solution for fixing the problem at the administrator level  or  a “forgot your password?” link on the login screen.

So, this becomes a tech support issue, and significant time sink.  The only solution that I know of is for the administrator to go into the database  back-end which stores all of the LimeSurvey tables, and reset the user’s password to a known password.  Here is how I do this.

  1. Once contacted by a user in distress, I search the listings to find their application, and view the contents.  If there isn’t any significant work done there, (i.e. they have just started the application), I’ll delete it and have them create a new one.  Otherwise,  I will note the eMail password and the user name.
  2. I then SSH into the mySQL back-end (or whatever database you are using).
  3.  mysql -pmypassword
  4. use limesurvey;
  5. select scid, identifier, access_code, email from lime_saved_control;
    This select statement displays the list of all the LimeSurvey users. Scanning this list, you’ll find your user’s email address or name.  You can then isolate that particular record by repeating the query with a where clause.
  6. select scid, identifier, access_code, email from lime_saved_control where scid=’81’
    The result record will look something like the following:
  7. Note in the diagram above the field names:
    identifier = the name under which the user saved their application
    access_code = a hash value of the password that they used.
    These two items are what the user needs to be able to go into their existing grant application.
  8. You could run the hash through a reverse hash calculator to recover their existing password. However, I prefer simply to  put in a new password:
    update lime_saved_control set access_code = MD5(‘12345′) where scid=’81’;
  9. At this point I can send the user an eMail  message showing what name the application was saved under and the new password of 12345.

Naturally this solution is fraught with danger…. so I’d recommend that you rehearse this procedure on your installation.

10 Ideas for New WordPress Users

Our team implementing a WordPress site, and as experienced web-site developers, but as newish WordPress users, we’re starting to develop a list of best practices that we either should have done earlier or are actually doing.

  1. Know the difference between, the online free WordPress hosting service,, the site hosted by the producers of WordPress, and your own independently hosted WordPress site.
  2. Much of the flexibility in modifying themes and the availability of themes require an independent WordPress site. Third-party plugins are not available on a site.
  3. With a site, your site will be named as a subdomain of an additional charge, you can have your own domain name point to your site. As an example, I created a site called  I then purchased the domain name and pointed it to the blog.
  4. Once you have chosen a theme, be sure to create a child theme based on that theme, and then make all modifications in the child theme. The reason for this is that when the main theme is updated by the developer and then updated on your site, the main theme is overwritten and reinstalled. Your child theme will inherit the updates, but your own modifications and changes will remain untouched.
  5. Know the difference between themes, layouts,  widgets and plugins.
  6. Within a post,  some layouts have “formats”.  These are page styles, unique to each post,  i.e.  a post can have only one format. Formats include “aside”, “quote”, “status”  and a few others. Formats are a WordPress thing, a theme can choose to support formats or not.
  7. Use categories to group posts for navigation and searching. Best practice is to assign one category for a post. If your site has three different main types of information, then you might make three categories, and assign one of these to each post. For example, for a bike touring site, you might have categories like “routes”, “gear”, “stories”.
  8. You can also have sub-categories, especially if you have a more complex site.  For our bike site, we might split up “routes” by region; “north-east”, “north-west”, “south”, “central” and under the category of gear, we might include “bikes”, “luggage” and “camping”.  If you assign a sub-category to a post, then it will automatically appear under the main category when the user searches by category. Best practice is to assign only the subcategory the post.
  9. Tags are another way to classify a post, and a post can (and maybe should) have multiple tags assigned to it. Since a tag is similar to a category, (they are both just a snippet of text which describes the content of a post), a tag shouldn’t duplicate the category, You can also use popular tags which will enhance the ability of your post to be found in Google searches.
  10. There is a lot of support for WordPress in the community. WPBeginner and Smashing Magazine are two places to start.


Hosting with Linode

Let us sing the praises of Linode, a provider of cloud-hosting for Linux-based applications and web sites. At work we’ve had two of these for a year, and they just work, exactly if the servers were sitting in the next room, except that they provide a slick management interface, and you can mix and match among different disk sizes, RAM, processors, redundancy, and various flavors of Linux. Access is via their web site, or via a secure terminal session.

Here’s a shot of the backup screen, (click to enlarge).

 The Linode-provided backup is great for basic backup. It makes backups on a weekly and daily basis. It also has a provision for a snapshot, which is a great way to back up the server before doing upgrades. Full details are on their web site, including the costs, which are a few dollars per month depending on the size of the Linode.

There are some limitations…for example with MySQL database transactions. Linode recommends that you perform a data dump of your MySQL data so that the dump files get backed up.

File Management in Powershell

I’m looking to do the following in Powershell

1. Is a file that exists in a source folder more recent than a file in a target folder?
2. If it the file is more recent…copy it to the target folder, but before copying…
3. Back up the current version in the target folder, by appending a date to the file name.

Does a file exist?

test-path <filename>
This returns TRUE or FALSE if the file exists. If the file is in the current folder, then you can just list the file name, otherwise, the full path has to be included.

What is the file’s date and time?

The file date and time are properties of the file name, obtained via the Get-Item cmdlet.  We can assign these to a variable. Here I will compare file dates between two files that have the same name, but reside in different folders, one located along the default path, and one located on drive W.

$Sourcedate = (Get-Item w:myfile.csv).LastWriteTime
$TargetDate = (Get-Item myfile.csv).LastWriteTime
If ($Sourcedate = $Targetdate) {"True"}
If ($Sourcedate -lt $Targetdate) {"True"}
If ($Sourcedate -gt $Targetdate) {"True"}

Note (rather irritatingly….) that the usual comparison operators are different in Powershell.

=  -eq Equal
<> -ne Not Equal 
>= -ge Greater than or equal 
>  -gt Greater than
<  -lt Less than 
<= -le Less than or equal


Back up the target file

Having determined that the source file is newer than the target file, we now want to back up the target file, incorporating the date within the renamed filename.


Since we’ve used the functions for this in another post someplace,..

$ShortDate= $SourceDate | Get-Date -UFormat %Y%m%d

This returns the date in a short form:


Now append the date to the filename

Rename-Item myfile.csv $newfilename

This results in a file name of:


Now we can do the copy from the source folder to the target.

Copy-Item  w:myfile.csv





Sharing QuickBooks 2014

Having recently converted from Peachtree to QuickBooks, we wanted to add an additional person on QB so that both our accountant, and our CFO could work in QB at the same time. We started out sharing the data file from the CFOs computer, but that bogged things down.

The solution is a “server”….  which runs the QuickBooks Database Manager program.  We repurposed an older but reliable HP workstation by installing a fresh copy of Windows 7.  Then, we ran the QuickBooks installation program from their support  link.

While it looks as if you are installing the full QuickBooks program, an initial screen asks what kind of installation you want:

  • Use QuickBooks on this machine, and access a company file stored elsewhere on the network 
  • Use QuickBooks on this machine and host the company file for others on the network 
  • Host the company file on this machine, but access it from Quickbooks on other machines 

By choosing the hosting option, the installation program will install the QuickBooks Database Manager program only, on your server machine.


Assuming you are not on a domain network, (i.e. your users’ machines are set to be a workgroup) you need to create user accounts on the server machine which match the Windows 7 user accounts that users use to log into their personal workstations.  This will allow people to connect to the server machine using their usual account name, without having to enter it a second time.

Set up the data folder 

Create a folder on the server machine to hold the QuickBooks company file. Copy the company file into that folder.

This needs to be  a shared folder on the network. The QuickBooks file doctor program will turn on folder sharing, and make the folder accessible. Download and run this program on the server.


At this point, you have the company file loaded on the server. Now, run the QuickBooks database manager program.  This will ask you for your company folder so it can find the company file.
Note that the database manager runs as a background service,  so you can exit the program, and the file will still be available to the network.

Now you can go to each workstation, and access the file over the network. I edited the opening QuickBooks screen to show just the networked copy of the file. The next time the user starts QuickBooks, it should automatically open the file without requiring a Windows network log in. Of course, the QuickBooks log in is still required.


Using the database server does not require a QuickBooks user license. You can safely move a company file to a server, and have the same number of users access the file. 

Details at: