Web Conferencing

We recently went through an evaluation of web conferencing or webinar software. There is considerable overlap between applications for videoconferencing and webinar software. However, most webinar software includes the components below, sometimes as extra-cost add-ons, and sometime including in the full bundle, or “pro” version.

Typical increments are 24, 100, and 500 participants. “Meetings” are usually limited to around 24 participants. “Webinars” can go up to 100, 500 and above.  Some vendors have a free version for three or four participants. and many vendors have initial 30-day trials that don’t require a credit-card

Platforms:
In addition for desktop applications that run on Windows and Macs, many vendors have apps for IOS and Android. Some newer programs are HTML5 only, and require only a modern browser. Older programs may install various plugins and additions such as Flash, Java or Silverlight to help with video and audio conferencing. In general these seem to work OK, but it is an extra step that is required before attending the webinar, Inexperienced users may require support to get plugins installed.

Before the Webinar

Assuming that you aren’t having a spontaneous web meeting, many packages allow you to schedule a webinar and have people pre-register to attend. The package may send out eMail invitations, or at the very least, you can obtain a unique Url to copy and paste into an email invitation sent from your own eMail account. If the package allows registration, then you can see how many have registered, and their locations and email addresses.

The Toolbox

Screen sharing:  Display a screen, an application, or a window interactively to show how to use a program. You may also be able to have another person share their screen with the full group, or have them control your screen.

Presentations: Display a presentation using PowerPoint or KeyNote.

Videoconferencing: Allows the presenter to appear full-screen or, when showing a presentation or whiteboard  to appear in a shrunken window in a corner.  Some software allows for several videoconferencing streams simultaneously, to give a CNN effect.

YouTube Videos: Choose a YouTube video and play it within your webinar.

Chat Window:  This is helpful if people need to alert the technical team if they are having  problems. Chat is also a way for people to ask questions of the presenter, and provide commentary on the presentation. Chats can also be restricted to the presenters only, or to one-on-one conversations.

Whiteboard: Allows you to annotate and draw on either a blank white board, or on an existing document. Never used it myself.

Other considerations.

Audio: Most webinar applications have some provision for people to talk and listen via a separate voice line. This is especially helpful when he voice-over-ip audio is substandard; people will tolerate problems with the video or presentations, but most of us have a much lower tolerance for problems with the sound. External voice integration varies from vendor to vendor, with some plans including a custom toll-free number for each of your presentations. Payment can also vary; sometimes the participant has to pay, at other times you do, or it may be free.

Recording:
Some programs include recording as part of their functionality. With others, it is an add-on. Personally I watch many webinars as recorded events, as I’m unable to watch them in real-time, and often don’t find a live version to have any added value over a recorded version.

And the Envelope Please!
Because we use GotoMeeting on a regular basis, we decided to stick with it, so chose GoTo Webinar, the extended version of GTM for up to 200 participants. We already know how to use it, and it appears to be pretty reliable. During testing we found some webinar software not to be as reliable as we might have hoped, with problems related to screen-sharing or audio.

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.

Set default text editor in Ubuntu

I was looking at our crontab on our backup server. This server is an Ubuntu 12.x LTS machine, and the logs for this were being sent to my predecessor, and I wanted to change the eMail address. The usual procedure is to run the following command to see and edit the contents of the crontab file:

crontab -e

This brings up the crontab file for the root user.  Crontab is probably for another day, but basically the script shows a MAILTO address that I wanted to change.

MAILTO=”myusername@mydomain.org”
# Edit this file to introduce tasks to be run by cron.
#  m h  dom mon dow   command
0 23 * * * rsync -avz root@192.168.214.71:/opt/mysql_backup/ /backup/hive
0 18 * * * /backup/scripts/rsync_agave.sh
0 17 * * * /backup/scripts/rsync_basil.sh
0 1  * * * /backup/scripts/rsync_mysql1.sh
0 4  * * * /backup/scripts/rsync_mimic.sh
0 2  * * * /backup/scripts/rsync_petal2.sh

Running the crontab-e opens up the file in the default editor. Well, I didn’t even realize I had a default editor on this machine, and the file opened in vim, which is an archaic program, beloved by Unix freaks.  I prefer the nano editor, especially because I don’t use a text editor much, and I know how nano works.

After some digging it appears that the default editor is set as an environment variable specific to the user.  It can be changed by running the following command:

export EDITOR=nano

You can view your current environment variables, by typing

printenv

There will be a line similar to

EDITOR=nano 

In Ubuntu, you can also use the following command: 

sudo update-alternatives –config editor

This will bring up a list of editors from which you can choose your favorite.

Slack for Non-Profits – EMail is Obsolete!

Back in February I wrote about using Slack for our non-profit organization.  I’ve since introduced this to another organization that I’m a board member for, and it appears to have really taken off for this other group. One thing I hadn’t mentioned last time was the Slack for Non-Profits program, which provides all of the benefits of a paid Slack account to a qualifying non-profit for free. These include:

  • A fully searchable archive with unlimited messages
  • Unlimited external integrations
  • Simple usage statistics
  • Custom message retention policies
  • Guest access
  • Premium support
The first point I should emphasize is that even if you don’t qualify for the non-profit program, Slack is still highly useful. In particular, we were looking for the ability to invite users to our Slack board, without having those users be able to see the entire list of channels. For example,  here is our channel list.

You’ll note that this full list includes the standard default channels, “general”, and “random”.  All of the other channels are related either to committees, or for planning of upcoming events.  The committees include:

  • board
  • fundraising
  • publicity
The planning channels include
  • 2015_fall_concert
  • 50th_anniversary 
  • auditions_2015fall 
You may have gathered that our group is a music group.  We’re actually a semi-professional choral group of 36 acapella singers that sing five centuries of choral music.  
The calendar channel is a special channel. This is an integration which displays calendar events that are entered into our organization’s Google Calendar. You’ll note that the non-profit plan includes “unlimited integrations”. (The free plans include 10 integrations). Integrations are a whole separate discussion, but briefly, they allow events and information from other applications to appear (be copied to) a Slack channel and vice-versa. I’ve used this especially for integrating Trello project management boards with Slack channels. So, for example, I may have a Trello board for a particular grant application, and have additions and changes in the Trello board appear within the fundraising channel. 
Ok.  Back to the other enhancements. An advantage of the non-profit plan is that we’ll be able to create a channel for, say the Concert Committee, and invite all the members of that committee to the channel. Those members can be restricted so that they can’t see the board channel, or indeed any other committees that they aren’t a member of. This is great for us…as we’ll probably end up having channels for each committee, as well as an AllMembers channel for everyone who sings with us.  
The other major advantage of non-profit status is that you can use the enhancements for no cost. I was interested to see that the Slack crew said if we had an actual paid account, we’d be spending US$640.00 per year, and that is just for our current subset of our full membership, (basically the board of directors). By the time we add our committee channels and the rest of our members, we’ll be getting the equivalent of at least double that amount. Not bad for a few minutes of filling out the application.  
What are you waiting for?  Apply for a Non-Profit Slack account now.  You’ll need a 501c(3) letter, testifying that you are granted non-profit status.

And I’d love to hear how you are using Slack in your non-profit; send a note or leave comments. 

FileZilla

I have taken over our webmaster’s job, following the departure of that esteemed and highly valued person a week or so ago. We are going to miss him in ways that we haven’t even figured out yet.

I’m scrambling to find out everything that the webmaster does…and finding that his tool set was basic in the extreme; roughly a text editor and and the superb open-source FTP program called FileZilla. With these two tools, he maintained two major web sites, and several minor mini-sites, built on-demand web pages for special projects, ran our DNS, managed our open-source survey system called LimeSurvey, did our analytics and search-engine-optimization (SEO), slung PHP code like a master, and managed a series of third-party advertising tiles and several mailing lists.  Whew!  

Odds and Sods – The Coffee Conundrum

We recently stopped subsidizing coffee at work. No longer does the Staples Guy, or the W. B. Mason gal, or Mr UPS come in with their merry cart with a variety of K-cup packs… Hawaiian Blend, Breakfast Blend, Nantucket Blend, spreading cheer to all before him.

Coffee supplied by the organization was in the form of Keurig K-Cups that contained brand-name coffee from Green Mountain Roasters, Starbucks, Pete’s, etc. We also would have a smattering of more exotic K-cups, such as green tea. This is not unlike almost every other office in the U.S. at this point.

As a person whose existence depends on this vital substance, this has been an interesting exercise. I’ve believe that I was placed on this earth as a vessel to take coffee as a raw material and convert it into software, so it was a bit of a wrench. I’ve been trying to figure out what to do next, now that I’ve been thrown back on my own resources.

I usually start my day at home with a mug of freshly ground Vermont Coffee Company coffee. This is a fair-trade coffee that costs about $13.00 per pound.  I calculated that one mug costs about 40 cents. (which doesn’t include the cost of the filter). It is delicious. 
The cheapest Keurig coffee is about 55 cents per cup. A quick check at the mall showed Staples selling a pack of 18 for $9.99 for Starbucks cups. The Christmas Tree Shop had similar prices but with really dodgy brands. To be fair, my shop was subsidizing my coffee habit at 4 or 5 cups per day; call it $2.75 or so, or almost $14.00 per week.

Once I started doing long divisions, I also found the following:

Premium tea bags – Bigalow or Twinings English Breakfast comes in at about 14 cents per cup. (assuming the hot water is free. We actually get heated spring water out of our cooler, so maybe it would be another penny for the water, call it a total of 15 cents).

Cheap(ish) white wine, a Chardonnay or Pinot Grigio costs from $7.00 to $9.00 per 750ml bottle. I can get about 5 glasses per bottle, so my wine consumption comes in at $1.40 – 1.80 per glass.

Boxed tomato soup from Pacifica is $4.00 per package. I can probably get 3 servings out of a pack, at $1.33 each.

So, apart from tap water, which tastes fine around here… tea seems to be a pretty cost-effective beverage, especially compared to wine or coffee when consumed in the office. It also makes you wonder about the 500% markup for beverages consumed elsewhere. At our Starbucks, a Grande Pike is $2.15. Most restaurant wine is $6.00 to $8.00 per glass.

So, I’m going to try to really like tea.

But,  why stop here?

My round-trip commute is around 30 miles. Gas now costs $2.75 per gallon, and I get 50 mpg on my old Prius. So, I’m spending $1.65 on gas per day.

Unless I take my bike in which case the commute is $0.00. But then, Ben and Jerry’s premium ice cream is on sale at $2.75 per pint.  I can get two to three servings per pint. Add the hot fudge and and walnuts..  and … never mind.  

Powershell: Get Computer Configuration

I’m a great fan of the Belarc Advisor. This system profiler gives you an extensive inventory of just about anything you need to know about your computer. One exception is the kind of memory that is installed. (It will tell you how much is installed, and how many free slots you may have if any). The free version of Belarc is for personal use only; use on a corporate, educational or corporate network requires a license. So, it may be of interest to look at Powershell’s capability for returning information about computers.

My use-case is memory information.  I’ve got a slow machine that I think may be slow due to the fact that it only has limited memory. Of course, you can find the amount of installed memory of a machine using the Control Panel ->System applet.    Screenshot_060915_090137_AM

The down and dirty about the memory can be obtained by querying the Windows Management Instrumentation (WMI), a database of objects which are related to the Windows operating system. To restrict this to a memory query, you simply specify memory object.

Get-WMIObject CIM_PhysicalMemory

To make a long story short, this call will provide a host of information abou the physical memory chips that are installed in the machine. You can restrict the information by choosing which of the fields you actually want to see, by putting the call in the form of a SQL query.

This call duplicates the line above….returning everything available about the installed memory.

GetWMIObject -query "Select * from  CIM_PhysicalMemory"

This call returns a subset of the memory information. First the select statement gets all of the memory attributes (fields), and then the output is piped to the Format-Table cmdlet, specifying just the fields we want to appear in the table.  The -auto attribute will format field widths of the table, so the information for each record appears on one line.

Get-WmiObject -query "Select * from CIM_PhysicalMemory" | 
Format-Table name, capacity, datawidth,speed, manufacturer, devicelocator, partnumber -auto

Screenshot_060915_094312_AM

Caveat: Everything above was run on my Windows 7 machine. I also tried running this on the Windows 10 preview running in a VirtualBox VM, and didn’t get any response. I don’t know if this is related to Windows 10,  the fact that it is still a preview…  or that it is running in VirtualBox.

References & Thanks:
http://www.computerperformance.co.uk/powershell/powershell_wmi_memory.htm
https://msdn.microsoft.com/en-us/library/aa394347%28v=vs.85%29.aspx

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.

myfile.csv
myfile0150505.csv
myfile.csv_5150505

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:

20150505

Now append the date to the filename

$newfilename="myfile_"+$ShortDate+".csv"
Rename-Item myfile.csv $newfilename

This results in a file name of:

myfile_20150505.csv

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.

Networking

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.

Finalizing

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.

Licensing

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:
https://support.quickbooks.intuit.com/support/Articles/HOW13004

Powershell: Search and Replace in text files

Searching and replacing within Powershell, seems a little awkward.

To do a search and replace, use the –replace parameter of ForEach-Object, with two attributes, the first being the thing to search for and the second being the replacement.

Get-Content -path ./NGA_Tracking.csv | ForEach-Object {$_ -replace ‘Tracking’, ‘TrackNum’}

You can do a series of these in a single set of piped commands….

Get-Content -path ./NGA_Tracking.csv | ForEach-Object { $_ -replace ‘Tracking’, ‘TrackNum’ `
    -replace ‘X’, ‘Y’ `
    -replace ‘A’, ‘B’ } |
Set-Content $mynewfile

In the case of a text file, each object being modified in the For-Each loop is a string terminated by a newline.

The good news is that there is full support for regular expressions, so if you know how to deal with those, they can be incorporated within the -replace mechanism.

I guess I’m still looking for something a bit more friendly for casual use, Wouldn’t it be nice, for instance to have something like Get-Content $myfile -replace ‘X’,’Y’.   Well, we actually can do this:

(Get-Content ./NGA_Tracking -raw) -replace ‘Tracking’, ‘TrackNum’ | out-file ./NGA_Tracking -Encoding utf8 

If you don’t put the parentheses around Get-Content $filename -raw you generate an error. The parentheses read the entire file into memory as an object, which can then take the -replace parameter. The -Encoding parameter is there to make sure the characters are all read correctly in subsequent uses of the file. (took lots of experimentation and blood on the floor, but that it what worked.)

The effect is the same, when the file name is replaced.

$Myfile = ‘./NGA_Tracking.csv’
(Get-Content $MyFile)  -replace ‘Tracking’, ‘TrackNum’ | Out-File $MyFile -Encoding utf8

But, if you create an object then it works.

$Myfile = Get-Content ‘./NGA_Tracking.csv’
$Myfile -replace ‘Tracking, ‘Tracknum’ 

Text to HTML

As we start fiddling with text files, the question comes up regarding the creation of html files.  There is a Convertto-HTML commandlet, which, on the face of it looks pretty rudimentary. But this TechNet article explains how to enhance things using styles.