Friday, June 17, 2016
Google Celebrates "Lady Day"
The women of Google have come up with a clever, tongue-in-cheek way to raise awareness about gender equality after an investor made a sexist remark at the company's annual shareholders meeting last week.
As my daughter grows up, I have become more and more aware of the issues women face in the workplace. Please read the Business Insider article about Google's Lady Day for the full story.
Wednesday, May 04, 2016
Spam iCloud Calendar Event Ads
Arggghhhh, now some waste of skin has figured out how to spam people by sending iCloud calendar invites to random email addresses. I just got an ad for Ray-ban sunglasses in my calendar. I like to refer to Spam that's sent by real people to the wrong address as "Spork." I'm not sure what to call this new type. Maybe "Spam Lite" or "Spam Singles"--both of which are real things BTW. Ya, Spam Singles sounds good, but moving on...
Thanks to user duozmo on stackexchange.com for the solution. To prevent this type of spam:
Log into iCloud on the web, open your calendar and go to ⚙ > Preferences. Under Advanced, you’ll find an option to receive calendar invitations by email instead of straight into your calendar.
This should allow you to delete calendar spam like regular email spam.
The other annoyance is that you can't delete or modify these since only the organizer can do that. To remove any spam you get this way.
1. Open the Calendar app from your Mac (not the iCloud web interface)
2. Create a new calendar (e.g., called "Junk")
3. Right-click the spam event and choose the Calendar option. Select "Junk" from the list of calendars and the malicious event will be moved.
4. Delete the Junk calendar entirely (without notifying).
Tuesday, April 26, 2016
Chromebooks to run almost every Android app?
From the article, "Chromebook users will soon get access to the 'more than a million' games and apps on the Google Play Store."
This would be huge. I've already written about how much I enjoy my Chromebook, but having full access to the massive Google Play store would be unbelievable. As more and more software is written in app form, 'old school' operating systems are becoming less and less relevant. ChromeOS is a fantastic bridge between having to do everything on a tiny screen and running a heavy O/S on a larger machine.
Wednesday, March 30, 2016
Why I Switched from Apple Music to Google Play Music

Fortunately, just like my previous switch, there is a way to get my playlists over to the new platform. To copy playlists from Apple Music to Google Play Music, I'm using STAMP.io. Although it seems to have the same issue I encountered in the last move--not choosing the same recording of the songs--it's certainly better than redoing all that time intensive work of creating the lists. The premium version costs a few dollars, but it's worth it.
So why go through the hassle of switching streaming services again? Here are the "why not" reasons:
- The cost is the same for the family plan, so price isn't an issue.
- I can copy over my playlists (with a bit of clean up required)
- I thought Apple Music would work seamlessly with iTunes. For example, I expected to be able to freely mix my content from iTunes and the streaming service. That's not the case. There appears to be no synergy there.
The deal breaker was the flexibility of Apple Music--or rather, the lack of flexibility. I simply cannot use Apply Music on enough devices in my house. Here are the devices/options I tested:
- Windows PC: works via iTunes
- MacBook: works via iTunes
- iPhone 6: works via Apple Music App
- iPhone 3 (my daughter plays with it): no app, does not work at all
- Android Tablet (Kindle Fire): no app, does not work at all
- Nexus 5x: works via Apple Music App
- Chromebook: does not work at all
Obviously, some of these are more important than others, but the fact remains that Google Play Music works fine on every one of these devices. Furthermore, it does not require any install to run on a PC/Mac/Linux/ChromeOS browser; I really miss the web listening experience that I had with Rdio and I want that back. In the end, it was an easy decision to make the switch and go Google.
Saturday, February 06, 2016
Google Drive API JavaScript App Running in App Engine
Why would you want to do this? It's great to be able to create your app that uses the Google Apps APIs, but even better is to host that app within the Google App Engine so that you don't have to worry about maintaining any of the infrastructure that runs your app. You also get the benefit of sophisticated App Engine features such as performance scaling.

The steps in the Drive V3 quickstart (https://developers.google.com/drive/v3/web/quickstart/js) will get you most of the way, but with a few changes, you can serve the app from the Google App Engine, which is super powerful and a more modern mechanism for running a web application.
One thing you'll have to change is the URL that your client ID will accept. The quickstart expects you to host and run the app on your local machine, and therefore use http://localhost as the URL. You can enter that when you work through the tutorial, but you'll have to change the URL for "Authorized JavaScript origins" later to the URL for your particular app. However, you won't have that URL until you try running your app from the Google Cloud Shell.
Your client ID should look something like this (I've edited it so as not to disclose my client ID):
111111-gchjkdptqt15lp89s229jo8h25omel4e.apps.googleusercontent.com
Here are some notes to clarify how to get the quickstart running in Google App Engine from the Google Developer Console:
- You'll likely want to create your own GitHub repo and clone it to your local machine.
- When you get to the step in the tutorial, you can connect your app project to your new Git repo. You'll have to authorize Google App Engine to use your repo. By connecting the two, it is super easy to manage (and even edit) your code from within the Google Developer Console.
- Create the sample file (with code provided) in the local repo and push it to master that is synching with GitHub.
- Don't forget to change your client ID in the sample code: var CLIENT_ID = '
'; - Once you have everything ready. Make sure you have your new quickstart project selected and then open the developer cloud console. The console is a Linux based shell.
- Change directory (CD) to the src directory for your quickstart project.
cawood@definite-destiny-999999:~$ cd src/definite-destiny-999999/master
- Start a web server using Python to host your application: python -m SimpleHTTPServer 8080
cawood@definite-destiny-999999:~/src/definite-destiny-999999/master$ python -m SimpleHTTPServer 8080
- Open the Web preview from the console window in port 8080. When you navigate to the quickstart.html file, you will get the URL you need to add to your client ID credentials. The Web preview option is in the top-left corner of the cloud console.
- Find your client ID in the credentials section of the dev console and edit it to add the URL you just opened in web preview. (To stop the app (quit the web server), press Ctrl+C.)

Note: I do not cover deploying your app for production use. Perhaps that can be a future post.
Note: If you've made a change and pushed it from your local machine, but the file isn't updating, try closing and reopening the console. I've found that it doesn't pick up changes to the files unless I do this.
I've made the project public on GitHub: https://github.com/stephencawood/WebHelpEditor/tree/master/WebHelpEditor
Wednesday, January 13, 2016
I AM CARDBOARD VR Url Not Recognized Setup Error
For Christmas, I picked up a Google Cardboard viewer. It's the easiest (read: cheapest) way I know to get a virtual reality headset for home use. When I co-wrote Augmented Reality: A Practical Guide for the pragmatic programmers (in 2006), headsets for augmented reality or virtual reality were expensive and bulky.
That certainly has changed. Google cardboard devices are literally made of cardboard. There are lots of choices. I got the I AM CARDBOARD® 45mm Focal Length Virtual Reality Google Cardboard. So far, I'm impressed with the inexpensive device. Enabling clicking in the virtual user interface by moving a magnet on the side of the device is ingenious.

Unfortunately, I quickly ran into a problem with the set up. When asked to use my phone's camera to grab the QR code on the cardboard, I received the error "URL not recognized" or "Problem in parsing the Url." QR codes represent a URL and if that URL changes, they can break. The solution was to find the manufacturer's website and search for a QR code there. In this case, I found a working QR code for the I AM CARDBOARD. Now I'm looking forward to trying out more of the apps with my daughter.

BTW: from the site -- "Calibrate your VR headset using the QR code found in this listing images. To do so, open the Google Cardboard app, select "Configuration" menu option, click on "Switch viewer" and scan the QR code."
Friday, December 04, 2015
My Brother's D&D Kickstarter Campaign
The World of Myrr is a Kickstarter campaign that my brother put together. It's a detailed and play tested campaign world for Dungeons and Dragons Fifth Edition
If you know any D&D fans, let them know this new campaign is out there.
He even gave me credit in the video for helping with the World of Myrr Wordpress site and various other technical questions. :)
Monday, November 16, 2015
Aquatic Informatics Named to Deloitte Technology Fast 50
Tuesday, October 06, 2015
Copying Playlists from Rdio to Apple Music
Move to Apple Music allowed me to export a copy of my playlists (in XML), then upload the playlists I want into Apple Music. It also provides a list of the songs it couldn't find on Apple Music. In my case it was over 200, but when I checked into it, it turned out that most of the songs are available on Apple Music, they're just listed differently (e.g., the same song on a different album version). Be aware, iTunes will actually refuse to sync a playlist if there's a song included that can't be found, so you'll have to check them once you have finished the import.
Tuesday, September 08, 2015
Araxis File and Directory Comparison Utility
Free tools such as KDiff will perform a differential analysis on files and even show exactly which lines have changed. However, KDiff doesn't provide any ability to separate the changed files from the ones that don't need to be translated again. Fortunately, there is another application called Araxis Merge (Windows and MacOS supported) that does allow for this ability. At the time of writing, it's $129 for one standard licence.
Like Kdiff, you can run a recursive directory diff to find all the changes in all the files. However, once you have done your folder comparison, you can also select all the altered files (using Select Rows > Selected Changed) and copy them to a new "specified folder." Using this method, I was able to grab all of the XHTML files that have changed since we last did a complete document translation.
Note that this method DOES NOT copy new files. You will need to go through manually and copy the files that have been added. These files appear green in the Araxis folder comparison view.
Tuesday, August 04, 2015
DocBook 5 Install and Setup for Windows
Currently, I only want to set up DocBook to publish HTML--I may be adding PDF later. Finding the installation and set up instructions for DocBook on Windows was not easy. I discovered a couple of old (and short) versions of this and that's where I started.
Unlike most Windows applications, there is no installer for DocBook. Installing is the same as downloading the executables (and other files), copying them to the location you want and then adding that location to your Windows Path. The Windows DocBook setup essentially has three pieces:
- DocBook DTD (optional)
- DocBook XSL stylesheets
- Tools:
- libxml2
- libxsl
- iconv
- zlib1
Unzip the folders and copy the files to c:\windows or another location that's in your Windows path. I prefer to copy them somewhere else (e.g., C:\docbook and add that directory to the path variable):
B. LIBXML2: I downloaded libxml2-2.7.8.win32.
If you want the newer libxml2 kit to convert your XML to HTML, you can get it from:
ftp://xmlsoft.org/libxml2/win32/64bit/, or ftp://xmlsoft.org/libxml2/win32/. But I'd try to get the old one working first. I haven't bothered to upgrade.
C. ICONV: I download iconv-1.9.2.win32
D: ZLIB1: I downloaded zlib-1.2.5.
After grabbing the tools, make sure you set up your Windows Path Variable. To set up the path for my system, I appended this: C:\docbook\libxslt-1.0.9-bin\bin;C:\docbook\libxml2-2.7.8.win32\bin;C:\docbook\iconv-1.9.2.win32\bin;C:\docbook\zlib-1.2.5\bin;
Once you have the tools installed. Run this command: xsltproc -version
The results should look something like this:
stephen.cawood@OLIFANTS /s/GitHub
$ xsltproc -version
Using libxml 20708, libxslt 10126 and libexslt 815
xsltproc was compiled against libxml 20706, libxslt 10126 and libexslt 815
libxslt 10126 was compiled against libxml 20706
libexslt 815 was compiled against libxml 20706
And the successful output should like like the image below.
To add a CSS stylesheet to your HTML output, use a command similar to this:
stephen.cawood@OLIFANTS /c/docbook
$ xsltproc --output outputFile.html --stringparam html.stylesheet help.css /c/docbook/docbook-xsl
-1.79.0/html/docbook.xsl testDocBook.xml
Note: If you want to build PDFs, you'll need to download and install FOP for Windows.
References:
Wednesday, July 08, 2015
Office 365 Message Shows Openness at Microsoft
Why isn't my Office 365 app launcher working as expected?
If you're using Internet Explorer when you visit a team site or other SharePoint Online page in Office 365, the app launcher may not show customizations you've made, like resized tiles or apps pinned to the navigation bar.
What can you do?
## Try this first! Use a different browser. We recommend using Microsoft Edge on Windows 10, and if you don't have Windows 10, try using the latest versions of Mozilla Firefox or Google Chrome.
Everyone has been hacking on IE forever, but to see this level of openness from Microsoft itself is quite telling. Yes, they're promoting Microsoft Edge, but nothing wrong with that. There was a time when people at MS were saying silly things like "don't call it a bug, it's an unintended feature." I was at an event when Steve Ballmer called out that behaviour and told the audience to be open with customers. "If it's a bug, call it a bug." That was around 2002. It's good to see the openness continues.
Friday, June 12, 2015
Error Starting Ubuntu Desktop on Chromebook After Upgrade
Unfortunately, the version of Ubuntu installed was 12. As fun and nostalgic as that was, I immediately set about upgrading to the latest stable build. Running the upgrade was simple enough.
sudo apt-get update sudo apt-get upgrade sudo apt-get dist-upgrade sudo apt-get install update-manager-core sudo do-release-upgrade
Everything worked at first, I even went through the process of installing some applications such as Gnome Terminal, Gimp and Git (Crouton installs the minimal release--so barely any applications). However, I ran into a snag when I rebooted. The sudo startunity command would fail with a nasty message.
...
[ 727.514] (WW) The directory "/usr/share/fonts/X11/75dpi" does not exist.
[ 727.514] Entry deleted from font path.
[ 727.514] (==) FontPath set to:
/usr/share/fonts/X11/misc,
/usr/share/fonts/X11/Type1,
built-ins
...
727.526] (EE) Segmentation fault at address 0x0
[ 727.526] (EE)
Fatal server error:
[ 727.526] (EE) Caught signal 11 (Segmentation fault). Server aborting
...
[ 727.526] (EE) Please also check the log file at "/tmp/Xorg.crouton.1.log" for additional information.
[ 727.527] (EE)
I prefer the Unity desktop, so that's the one I had originally installed. To work around the error, I reinstalled Unity using the same command in the original setup article:
sudo sh ~/Downloads/crouton -t unity.
Wednesday, May 27, 2015
The Secret Sabbatical
With extensive use of examples from the humanities, the book discusses the "loss of imagination" that is currently rampant in most organizations... and more people's lives.
From the website:
"This is the Book with the secrets of The Secret Sabbatical. Up to now this material was only available in one-on-one Course sessions for those asking “What Should I Do With the Rest of my Life?”
Developed over 10 years the Course has been fine-tuned for executives, surgeons, architects, research scientists and other professionals. Now you can read the notes from that Course, which are arranged in a clear sequence that covers how to find your own answer in the needed depth."
Wednesday, April 22, 2015
5 Tips to Make SharePoint Easier for Non-SharePoint People
#1 Simplify Versioning
A quick and easy way to help your users avoid pitfalls is to simplify the version settings for their document libraries. You may have some complicated process in mind that requires specific settings, but if that process is confusing your users, you should consider simplifying the version options. For example, if you don't need versioning, just turn it off completely. If you don't need minor versions, turn them off. People new to SharePoint usually don't know that there minor versions are only visible to them by default.One easy way to prevent conflicting changes is to enforce check out before documents are edited. This is a simple radio button in the version settings.
You would use this if you’re worried about your users making conflicting edits. Requiring that they check out documents before editing will eliminate the problem of conflicting changes, but you’ll need to educate them on checking in the docs when they’re done.
To add the column, go to the doc lib's settings page and find the "Columns" section. From there, choose the "Add from existing site columns" link and then select the "Checked Out To" column from the list.
#2 Add the “checked out to” Column
Since I just mentioned enforcing check-out before editing, the next tip has to be one of my favourites—adding the “Checked Out To” column to the default view. This simple change can make life so much easier for people new to SharePoint.
If you add this column to the default view, it's obvious to everyone which documents are checked out and who has them checked out.
#3 Show draft documents by default
Another option that is related to simplifying versioning is to show draft documents by default. This way you can allow people to see draft documents before they have been checked in. If a user sees a draft, he or she can talk to the person working on the document before making changes that would potentially conflict with the existing draft.
This saves lots of hassle because it's common for users to forget to check in new docs, or simply not understand why it has to be done before other people can see that a file has been added.
#4 Keep the permission model simple and manageable
#5 Show your users how to sync their document libraries to their local folders
Note: You may need to install the install the SharePoint 2013 OneDrive Pro client to get this to work.Many users feel more comfortable working in the Windows file system. They can do this with their SharePoint document libraries by choosing the "Sync" options or the "Open with Explorer" link. Once you have the SharePoint library syncing to a local folder, you can easily do things like paste files into the doc lib to upload them to SharePoint.
#6 Bonus Tip For Admins and Power Users
If you go to the library settings, you can use the "Managed checked out files" option to see all the checked out files and from there, you can even take ownership of them by choosing the "Take Ownership of Selection" option.This is great when a document isn't showing because it only has a draft version and you're not sure who has it checked out.
Tuesday, March 31, 2015
RabbitTxt Text Messages is My First App
I’ve been working with a friend of mine on a simple iOS app called RabbitTxt—you can grab it for free right now from the Apple iOS App Store. The idea is to enable quick, one handed, pre-canned text messages to people or groups. Basically, tap, tap, send. Or if you’re sending the same thing to the same person, just… tap.
The app will remember the last person (or group) you sent a message to and also which message you sent, so you don’t have to select them again.
Unfortunately, my grand idea of the fastest text/SMS messages possible ran into an iOS restriction. Once you tap “Send Text” in RabbitTxt, you’ll need to press send again when the iOS messenger app opens. Sadly, there’s nothing we can do about that. The fastest possible text message interface on iOS is… tap… tap… Shrug.
It was Pat’s idea to add the “Jazzify” feature and it’s pretty snazzy. This feature converts your text message into a flashing image. Perfect to get someone’s attention.
Thursday, February 26, 2015
Fairchild TV Interview about the Vancouver Tech Scene
I was recently interviewed by Fairchild TV (a national Chinese language station) for a segment about the Vancouver tech scene.
If you’re interested in the story, here are links to the video. Note that it’s a Cantonese language station.
(You can download the video if you find it's playing too slowly on the site.)
Part 1:
http://www.fairchildtv.com/newsarchive_detail.php?n=27&topic=375&episode=690
Part 2:
http://www.fairchildtv.com/newsarchive_detail.php?n=27&topic=375&episode=691
Friday, January 23, 2015
Interview for Elements Academy of Martial Arts
Update: Some of their posts have been removed during spring cleaning I assume.
Monday, December 08, 2014
Chromebook 2 Feedback and Review
In general, I'm still thrilled with the machine. It's an inexpensive computer with a full laptop typing experience. The audio and video are good, the battery life and charge times are fantastic, and so much is available via web apps these days that I can almost use it for everything. I also like that the operating system is simpler than a traditional desktop O/S. For all the reasons I mentioned in my previous post (Why I Just Bought a Chromebook), I think it's a fantastic device and I'm recommending it to people.
My issues pretty much stem from the fact that Chrome OS has a tiny web app store at this point. There are two ways to fix these issues, either more web apps in the Chrome Web Store or enabling Android (Google Play) apps on Chromebooks. There are rumours of Google Play capability coming to Chromebooks, but I'm not optimistic that will happen on my Chromebook 2. However, I sincerely hope my pessimism is poorly placed.
Here are the main issues I've encountered:
1. GoToMeeting doesn't work (even the web version only allows you to listen--you can't share your video or talk). This is a deal breaker for using my Chromebook as my only computer. Whether it's GoToMeeting or WebEx, I have to be able to participate in meeting using the technology that my employer and customers are using. Yes, Google Hangouts and Sqwiggle work--that's great--but it doesn't solve the problem. (As I pointed out in my last post, I'm not trying to replace my phone with my laptop and I can actually use WebEx or GoToMeeting on my phone, so that mitigates this problem.)
2. Skype doesn't work. This isn't a work problem for me, so I'm putting it in a different point. I use Skype with family, so I want it on my laptop. (Again, I can use this on my phone.)
3. Torrent files. I'm working on this one, but I have yet to find a good solution for downloading files via torrents. There are apps in the Chrome Web Store, but I tried one and it just didn't work. I'll have to try another. There's one that costs a few dollars--I might have to resort to actually paying for an app.
4. Heat. I'm not actually using a thermometer, but the Chromebook feels hot to me when I'm using it on my lap. By comparison, my wife's MacBook Air doesn't seem to get as warm, but my old Acer laptop is actually hotter than the Chromebook.
5. Google Cloud Print. I was pleased to learn about the Google Cloud Print option. It allows me to print to a printer connected to another machine (because you can't install print drivers on Chrome OS). However, it simply doesn't work very well. My printer isn't that old (it's wireless), but printing with Google Cloud Print results in such bad results that it's almost useless. For example, it's common for my documents to print with the last few characters of every line cut off.
6. SD Card. This is a minor annoyance, but every time I open my Chromebook, I'm told to safely remove my SD card--not on reboot mind you, but literally every time I login. I don't want to remove the card and I shouldn't get that error all the time. I just ignore it, but I'm not the only one seeing this issue and I hope it gets resolved in an update.
Saturday, November 08, 2014
Why I Just Bought a Chromebook
But before I get to that, I think it’s important to mention that I took my time with this decision. What else did I consider? I weighed the pros and cons of many different options: MacBook Air, MacBook Pro, Windows laptop, Ubuntu laptop, Microsoft Surface, Windows tablet, Android tablet, and iPad. We already have a MacBook Air, Windows desktop and iPad in the house, so that also played into my decision.
1. Affordability -- Chromebooks are remarkably affordable. Unlike a MacBook Air, or a Surface 3, they're cheap. I bought my new Toshiba CB35-B3340 Chromebook 2 for $329.99. That's about a third of what I would have paid for the others. Even if it turns out that I don't like the Chromebook, I've made a small investment to find that out.
2. Getting my work done -- I don't care about brands very much and I'm not a zealot when it comes to technology. I just want to get my work done and spend more time with my wife and daughter. If I can do everything I need to do on the Chromebook, I'm happy. These days, I spend most of my time either in email and Word documents. I can use web versions of Outlook, Gmail and Word to do all that. If I need something else, I can remote into my Windows Server at home or my Windows desktop at work, or just use my Wife's MacBook Air. An obvious example is Visual Studio for coding. However, these is a web version that I can try even for that. I'm very curious what the dev experience will be like on a Chromebook.
3. I’m not replacing my phone -- While it's true the Chrome App Store doesn't offer the millions of apps in the iOS Store, or the Google Play store, or even the Windows App Store, that's not what I need in a laptop. I have my phone with me at all times and I don't need to send text messages or play Flappy Bird on my laptop. (BTW -- Angry birds is in the Chrome App Store)
4. ‘Traditional’ operating systems are too much work -- I was already thinking this way, but a few weeks ago, I picked up a Windows 8 tablet I use at work and found that it was running Windows Update. I just wanted to write a note in OneNote, and I couldn't because the operating system is huge and powerful and therefore takes time to update. This is just one example of the ways that large traditional operating systems (Windows, MacOS, Linux) are just too much work for my use case (see "Getting my work done" above). Chrome O/S is simple and I like the sound of that.
Update: Now that I have my Chromebook (I'm writing this update on it), I can say that I'm impressed. I ran into a minor issue during set up (Chromebook setup freezes at Determining Device Configuarion) but restarting was enough to quickly resolve the issue. Since then I haven't hit any hurdles and I'm really enjoying the experience.