Blog

Social Networking at the Office

In mid-January Facebook hit the headlines with (and receivedĀ decidedly mixed reviews on) the announcement of their ā€œFacebook at Workā€ offering,
which is essentially a walled-garden version of Facebook with access restricted
to those in your company. Aside from that important distinction the list of
features seems pretty much on a par with the larger Facebook we all know.

With this product offering Facebook joins an enterprise
social network marketplace that already contains some big names: Microsoft,
IBM, Cisco and SAP amongst them.

I can see the benefits of these platforms in terms of
collaboration, messaging, and the like ā€“ but Iā€™m certainly glad that my
responsibilities donā€™t include the realization of those benefits for my
company. The scope of the behaviour change required to make the most of those
tools falls into the category of ā€œculture shiftā€ in my mind, and that stuff is simply
not where my expertise lies ā€“ itā€™s a task that goes way beyond technology and
business process folks like I.

image

Where I work, weā€™re now on our second enterprise social
network. Weirdly, the first one hasnā€™t actually gone away ā€“ everyone has simply
stopped talking about it (and we all stopped using it long ago). The
implementation of the first one ā€“ I feel ā€“ was probably driven by technology
folks. I say that because from a technical perspective it works great, but
nobody ever told me what it was for. Apparently Iā€™m not alone in my confusion,
because it never really saw any significant usage.

Things are looking a little better for the new one. For one,
itā€™s integrated into our enterprise learning environment. At first that seemed
weird to me, but now that I think about it that makes perfect sense: learning
and development in the modern enterprise is increasingly something you do at
your own pace (to a certain extent), in your own office with the door closed
and headphones on. Itā€™s crying out for something to bring back some of the
social aspects that are lost now that technology has begun to make
classroom-based training sessions a thing of the past, and I hope our training
teams pick up this ball and run with it. Additionally, thereā€™s a movement
underway to build on our corporate culture and do a better job of leveraging it
for the benefit of our customers. Open, social communication that transcends
our geography is an important part of that cultural evolution too. The time is
right, then, for a platform to make this happen.

Nevertheless, people were burned by the failure of our
previous platform to gain traction, and thereā€™s a healthy amount of skepticism
out there. Again, nobody has really told me what the new platform is for or
given me examples of how I could use it to my benefit.

A quick conversation with my boss about this last week
brought me to an important realization. Why am I waiting around for someone to
tell me what this platform is for? Iā€™ll decide what itā€™s for! Iā€™m even starting
to think the lack of guidance and instruction might be a deliberate choice made
in the interests of organic growth and buy-in fuelled by self-realization
(although, frankly, I still think itā€™s the wrong choice if thatā€™s the case).

I plan to encourage my team to shift some of our non-time
sensitive group communication out of Outlook and into the social space, and I
sincerely hope it catches on. I think that would be a good starting point for
us, and as I said at the top, I really do see the benefits of a platform like
this. Iā€™m putting my own skepticism firmly aside in the interests of trying to
steer my group toward the realization of those benefits that this platform
could represent. Weā€™ll see how it goes!

Hopefully I wonā€™t be around to see the
introduction of a third enterprise social network. I wonā€™t be so generous if I
am.

Blog

Browse Anonymously with a DIY Raspberry Pi VPN/TOR Router

So, after last week’s post about preparing my Raspberry Pis for my whole home audio project, I had three Pis that should have been set up properly, but weren’t working very well – and the culprit was the USB WiFi dongles I was using.

Happily a stumbled upon the article linked above, and it solved the issues I was having!

Surf the Internet securely with your very own portable WiFi VPN/TOR router. You can configure a Raspberry Pi with Linux and some extra software to connect to a VPN server of your choice.

I didn’t follow all the steps because they’re doing something different to me, but there is some commonality and, crucially, the article folks are using WiFi adapters with the same chipset that mine have. Step four shows you how to download and compile a version of hostapd that’s built especially for them and works well. I’ve updated my previous post with these steps.

Now that I have networking all set up I’ve taken a couple of extra steps:

  • I set up passwordless ssh between the three Pis. This isn’t required for my solution per se, it just makes things easier.
  • I used sshfs on pi #1 to connect it to my existing home server, and mount the folder that holds all my music.

I’m excited to move on to next steps! The prep work was necessary, but it didn’t make for an especially interesting blog post because it’s all a bit dry.

Keep following my #RPiWHA Hashtag! The next installment will be more interesting, I promise. We’re going to get some actual music playing!

Browse Anonymously with a DIY Raspberry Pi VPN/TOR Router

Blog

Raspberry Pi Whole Home Audio: Preparation and Networking

At the start of the month I announced my plan to try and build my own whole home audio system using a handful of Raspberry Pis to act as the player and audio
receivers. Iā€™ve received
all the stuff I need
now, and Iā€™m ready to get to building!

The first thing Iā€™m doing is preparing the Pis and setting
up networking. Next Iā€™m going to install audio playing software with a
web-interface on Pi number one, and thirdly Iā€™ll adjust the setup so that this
player sends itā€™s audio to the other two Pis (the receivers) instead of
outputting it directly to its own speakers. You can follow the whole journey by
following the #RPiWHA
Project
hashtag right here.

Installing Raspbian

Raspbian is the Raspberry Piā€™s recommended operating system.
Thereā€™s plenty of guidance online on how
to install it
, so I wonā€™t reiterate the whole process here. When I ran
through Raspbianā€™s initial setup options on first boot I set my location,
timezone and keyboard layout (in Internationalisation Options), set the memory
split to 16mb for graphics (in Advanced Options ā€“ we can set this low because
we wonā€™t even be connecting a display) and finally expanded the filesystem
(right from the main menu).

Minimizing SD Card Access

The Pi has no power button. If itā€™s plugged in then itā€™s on,
and you turn it off by pulling the plug. Iā€™ve read online that if the power is
pulled while the system is in the process of writing to the Piā€™s SD card (which
is the only storage the system has) this can cause problems and possible
corruption.

Linux systems do a lot of logging, most commonly to the
folder /var/log. They also write stuff about running process to the folder
/var/run. To minimize writes to the SD card, weā€™re going to mount these two
folders in memory instead of on the card. Another cause of frequent writes is
that linux systems store the time that a file was last accessed, so even if weā€™re
just reading a file the system is actually writing back to the disk to update
the time that the file was accessed. Weā€™re going to change that behaviour too.

To make these changes, weā€™re going to edit the file
/etc/fstab so that it looks like this:

proc            /proc           proc    defaults          0       0
/dev/mmcblk0p1  /boot           vfat    defaults,noatime  0      2
/dev/mmcblk0p2  /               ext4    defaults,noatime  0      1
none            /var/run        tmpfs  size=1M,noatime   0       0
none            /var/log        tmpfs  size=1M,noatime   0       0

The first two lines havenā€™t changed, but on the third line
weā€™ve added the flag ā€œnoatimeā€ to indicate that we donā€™t want to store the
timestamp that the file was last accessed. The fourth and fifth lines are
entirely new, and these create 1mb partitions in RAM to house the /var/run and /var/log folders respectively.

Setting Up Networking on Pi #1

The next step was to connect one of the Pis (and only one)
to my existing home WiFi network. To do this I plugged in one of my USB WiFi
adapters and modified the /etc/network/interfaces file to include the
following:

auto wlan0
allow-hotplug wlan0
iface wlan0 inet static
wpa-ssid MyHomeWiFiName
wpa-key-mgmt WPA-PSK
wpa-group CCMP TKIP
wpa-pairwise CCMP TKIP
wpa-psk MyHomeWiFiPassword
address 192.168.1.71
netmask 255.255.255.0
gateway 192.168.1.254
dns-nameservers 192.168.1.53 192.168.1.254

Your setup will probably be slightly different, but
essentially this connects to my home network, gives the pi a static IP address
(192.168.1.71 in my case) and defines my two DNS servers.

You may be wondering why Iā€™m only doing this on one of the
Pis, given that they all need to be connected together. The reason is that this
first pi (the player) is ultimately going to be sending audio out over the
network as multicast packets. In other words, this data goes to every device on
the network whether they want it or not.

The problem is that this is a lot of data flowing around, and
a typical home WiFi network struggles under the load of it all. My solution is
to have two WiFi networks. The one weā€™ve set up above will connect us to the
internet (for streaming audio services) and other stuff on my network (like the
fileserver where my music collection lives), but weā€™ll use a second, separate
WiFi network to send the multicast audio to other Pis.

Letā€™s plug in a second USB WiFi adapter to the first Pi, and
make some more additions to the /etc/network/interfaces file:

auto wlan1
allow-hotplug wlan1
iface wlan1 inet static
address 192.168.5.1
netmask 255.255.255.0

This section is pretty minimal as you can see, but itā€™s
setting a static IP address on the second wireless interface. The important
part is that this uses a different subnet to the other WiFi network (in my
case, 192.168.1.x is my existing network, 192.168.5.x is the dedicated network
for the Pis).

This section of the /etc/network/interfaces file is so short
because this Pi is going to act as a wireless access point that the others will
connect to. To set this up we need an additional bit of software, called
hostapd. Because I’m using WiFi adapters based on a Realtek 8188 chipset, I had to download and compile this myself – the version found in the debian software repositories wouldn’t work for me:

wget https://github.com/jenssegers/RTL8188-hostapd/archive/v1.1.tar.gz
tar -zxvf v1.1.tar.gz
cd RTL8188-hostapd-1.1/hostapd
make
sudo make install

Then edit the file /etc/hostapd/hostapd.conf to change the following three lines:

interface=wlan1
ssid=PiWHA
wpa_passphrase=mySecurePassword

Finally, start the service and add it to the boot autostart services for future:

sudo /etc/init.d/hostapd start
sudo update-rc.d hostapd enable

Setting Up Networking on the Other Pis

We want the other Pis to connect to the wireless network
hosted by Pi #1. To do so, plug one USB WiFi adapter into each and modify the
/etc/network/interfaces file on each to reflect the following:

auto wlan0
allow-hotplug wlan0
iface wlan0 inet static
wpa-ssid PiWHA
wpa-key-mgmt WPA-PSK
wpa-group CCMP TKIP
wpa-pairwise CCMP TKIP
wpa-psk mySecurePassword
address 192.168.5.2
netmask 255.255.255.0

The important point here is that the IP address for each
must be unique, and must be on the same subnet (192.168.5.x) that we set on the
first Pi.

Setting Up Time Synchronization

The Raspberry Pi has no real-time clock, and instead it gets
the time from internet time servers at boot. Having the time synchronized on
each of our Pis is going to be important to make sure that they play music in
sync. Only the first Pi has a connection to the wider internet though, so we
need to take some additional steps. On Pi #1, edit the file /etc/ntp.conf and
uncomment (or add) the following line:

broadcast 224.0.0.1

This tells the pi to broadcast a time signal out onto the
network using a special multicast IP address that the other Pis will listen
for.

On the other Pis edit the same file, but uncomment (or add)
the following lines:

disable auth
broadcastclient

We donā€™t need to tell the other Pis which multicast IP
address to listen for ā€“ they already know as part of the NTP protocol.

And Weā€™re Done! Or Are We?

That was a lot of setup work, but we should now have our Pis
setup and networked together, with our player device having an additional
connection to the wider internet.

The thing isā€¦ I donā€™t. The setup is all correct, but the
cheap USB WiFi adapters I bought from China donā€™t properly support access point
mode. Sometimes things work, sometimes they donā€™t.

Iā€™ve read that I can download driver source-code from the
adapterā€™s manufacturer and compile the driver myself, so Iā€™m going to try this
before I go further.

Blog

If you’re a regular reader you may or may not have already guessed that I typically write these posts in advance and then set them to publish on a schedule. It’s not really a hard and fast rule, but if I have a couple of posts to publish in a week then I’ll usually schedule them on a Tuesday and a Thursday at the start of the workday here in the Mountain timezone so that they catch the end of the workday in Europe.

The reason I mention this is because the post I published yesterdayĀ ā€“Ā Voicemail: A Beginner’s GuideĀ ā€“ was actually written last Sunday before I left for my business trip. As it turns out it was extremely prophetic because I spent Tuesday and Wednesday with other leaders from my workplace talking about our culture and how we become better at leveraging the values we already hold, ensuring that the work we do for our internal customers (all my customers are internal) translates correctly and has a positive impact on our end-user customers.

The session was excellent and hugely valuable, and I’m not doing it justice in my description.

I mention it mostly because the overuse of email and the underuse of the phone became something of a common theme, as did intentionality and using your own behaviours to drive the right behaviours in others.

Great minds think alike, hey?

Blog

If you’re a regular reader you may or may not have already guessed that I typically write these posts in advance and then set them to publish on a schedule. It’s not really a hard and fast rule, but if I have a couple of posts to publish in a week then I’ll usually schedule them on a Tuesday and a Thursday at the start of the workday here in the Mountain timezone so that they catch the end of the workday in Europe.

The reason I mention this is because the post I published yesterdayĀ ā€“Ā Voicemail: A Beginner’s GuideĀ ā€“ was actually written last Sunday before I left for my business trip. As it turns out it was extremely prophetic because I spent Tuesday and Wednesday with other leaders from my workplace talking about our culture and how we become better at leveraging the values we already hold, ensuring that the work we do for our internal customers (all my customers are internal) translates correctly and has a positive impact on our end-user customers.

The session was excellent and hugely valuable, and I’m not doing it justice in my description.

I mention it mostly because the overuse of email and the underuse of the phone became something of a common theme, as did intentionality and using your own behaviours to drive the right behaviours in others.

Great minds think alike, hey?

Blog

Voicemail: A Beginnerā€™s Guide

This week Iā€™ve been travelling for work. I left Calgary early Monday morning, and I returned home late last night.

On Sunday night as I was preparing for my trip I briefly considered setting an ā€œout of officeā€ email alert and changing my outgoing voicemail message to advise people of my unavailability. I quickly dismissed this plan though, for the simple reason that I really wasnā€™t all that unavailable. Sure I was away from my physical desk in Calgary, but I rarely work from there anyway. And sure my calendar was full, but thatā€™s not unusual either. Setting up unavailability alerts would have been a misuse of the tools available to me.

As I was thinking about all this, it put me in mind of a post I wrote about seven months ago titled Weird Workplace Etiquette. In it, I complained about the fact that nobody just picks up the phone and calls me without first sending me a message (or worse, booking some time in my calendar) to ensure that Iā€™m going to pick up the phone and talk to them.

Now that Iā€™ve had some time to think about it, the reason seems obvious to me. We can lay blame firmly on voicemail. Subconsciously or otherwise people hate it, because everybodyā€™s had a bad experience with it. Think about how it normally goes between a couple of busy people ā€“ you leave a voicemail for me in which you ask me to call you back, I call you back and get your voicemail, and so it continues ad infinitum.

Happily, this is pretty easy to fix in my opinion, and the ROWE course I took not too long ago teaches us the way: itā€™s merely a matter of breaking some bad voicemail habits that almost everyone has. Even more happily, you (mostly) donā€™t need other people to read my advice ā€“ you only need concern yourself with what you do. If you do it right, others should fall into line.

Read on to get started!

Everything starts with your outgoing voicemail message. What does it say now? I assume itā€™s something along the lines of ā€œIā€™m sorry Iā€™ve missed your call, please leave me a message and Iā€™ll get back to you.ā€ To be blunt, thatā€™s not good enough.

Firstly, youā€™re not sorry youā€™ve missed somebodyā€™s call. You were busy doing something more important than picking up the phone, and thatā€™s OK! Apologising for it is a meaningless platitude and everyone knows it, but more importantly it sets the wrong tone for what weā€™re trying to accomplish. Youā€™re a (wo)man of action, not the kind of person who spews forth wet apologies for failing to be idly sitting around by your phone when somebody somewhere kind of vaguely hoped thatā€™s what you might be doing. If anything, you should apologise when you are available to answer the phone!

Instead, your outgoing voicemail message should reflect that yes, you were too busy to take the call and also yes, youā€™re too busy to engage an endless game of phone-tag. Instead of asking callers to leave you ā€œa message,ā€ be specific about what youā€™re looking for from them.

ā€œYouā€™ve reached Jason. Please leave a message detailing how I can help you and by when you need a response, and Iā€™ll get back to you as appropriate.ā€

The same goes for when youā€™re leaving a voicemail for somebody. Just because their outgoing message is vague doesnā€™t mean the message you leave for them should be too. Think about how you want somebody to react when they listen to your message. Do you want them to immediately get to work on what youā€™re asking of them, or do you want them to have to call you back and speak with you first so they can find out what you needed? Tell them what you want, and tell them to get back to you once they have it!

Iā€™ve been using these tips for a little while now and I have to say theyā€™re working well for me. Voicemail is a vastly improved experience as a result ā€“ although itā€™s still under-utilised, because people still do all they can to avoid using the tool at all if they can at all help it. Most people never even get to hear my outgoing message and come to the realisation that Iā€™m changing their lives for the better.

Regardless, the more I think about it the more I think I may actually kick things up a notch. Long-time readers may recall another post on this blog from the distant past in which I talked about how people (me) canā€™t possibly hope to read, understand and respond to every email they get in as timely a fashion as they might like. Email, in a typical workplace (certainly in mine) is a vastly overused tool. Voicemail, though? Thanks to everybody shying away from it, a voicemail is out of the ordinary and will get somebodyā€™s attention. If I can do voicemail well, it could become a fantastic method for making my messages to people a higher priority than everyone elseā€™s.

All Iā€™ll have to concentrate on is not using it for evil.

Blog

The Punctuation Guide

About a month ago I posted about The Data Visualisation Catalogue. If you have data to visualise, hit up this website, tell it what you’re trying to show, and it will suggest some appropriate chart/graph types.

Today I’ve come across another single-purpose website that I think is great, and it’s audience is intended to be a little more general than people who want to visualise their datasets.

It’s The Punctuation Guide!

When I discovered it I fully expected not to learn anything new, merely to receive confirmation that my use of punctuation was already top-notch.

I was, of course, incorrect.

Check out the site to see what you’ve been doing incorrectly your whole life! One word of caution: the guide is intended primarily for writers of American English. There’s a page that explains the main differences between that and British English. Here in Canada you should probably be doing something in-between the two, but if you’re looking for specifics I’m the wrong person to ask.

Blog

A little while ago I wrote about the Whole Home Audio project I’m planning, which will be a DIY effort based on several Raspberry Pis.

Well, good news! All the stuff I’d ordered has arrived, and I’m nearly ready to get started. Here’s what you see in the picture:

  1. 3x Raspberry Pi Model B+
  2. 3x Raspberry Pi Enclosure (Black)
  3. 3x Dual USB Power Supply
  4. 5x MicroUSB Cable
  5. 5x USB WiFi Adapter (I need four, but I accidentally ordered too many)
  6. 5x Samsung Class 10 8GB MicroSD Cards
  7. 2x Powered HDMI to VGA Adapter, with Audio Out
  8. 1x USB Wireless Mini Keyboard & Touchpad

Not all of this stuff will make it into the project, but I bought it so that I can use the Pis as media playing devices (running Kodi) that I’ll attach to the bedroom TV and the projector if things don’t work as planned.

I bought the keyboard because it would be useful in that regard, and I got the HDMI to VGA adapters because my projector doesn’t have an HDMI input at all, and the bedroom TV doesn’t have one spare. I’d read online that these things draw quite a bit of power – possibly too much for the Raspberry Pi’s HDMI output to reliably supply – which is why I went for a powered model, and why I picked power adapters with two ports each.

I’ve also read that fast MicroSD cards will greatly contribute to the Pi’s performance and that Class 10 is highly recommended. I also read that some Samsung Class 4 or 6 cards have better real-world performance than some of the Class 10 cards out there. I pushed the boat out and got some Class 10 cards from Samsung.

Follow the #RPiWHA Project hashtag on this blog to keep track of my progress. Next week I’m away travelling from work, but I’m excited to get started and start building, so it won’t be too long until the next update.

Blog

A little while ago I wrote about the Whole Home Audio project I’m planning, which will be a DIY effort based on several Raspberry Pis.

Well, good news! All the stuff I’d ordered has arrived, and I’m nearly ready to get started. Here’s what you see in the picture:

  1. 3x Raspberry Pi Model B+
  2. 3x Raspberry Pi Enclosure (Black)
  3. 3x Dual USB Power Supply
  4. 5x MicroUSB Cable
  5. 5x USB WiFi Adapter (I need four, but I accidentally ordered too many)
  6. 5x Samsung Class 10 8GB MicroSD Cards
  7. 2x Powered HDMI to VGA Adapter, with Audio Out
  8. 1x USB Wireless Mini Keyboard & Touchpad

Not all of this stuff will make it into the project, but I bought it so that I can use the Pis as media playing devices (running Kodi) that I’ll attach to the bedroom TV and the projector if things don’t work as planned.

I bought the keyboard because it would be useful in that regard, and I got the HDMI to VGA adapters because my projector doesn’t have an HDMI input at all, and the bedroom TV doesn’t have one spare. I’d read online that these things draw quite a bit of power – possibly too much for the Raspberry Pi’s HDMI output to reliably supply – which is why I went for a powered model, and why I picked power adapters with two ports each.

I’ve also read that fast MicroSD cards will greatly contribute to the Pi’s performance and that Class 10 is highly recommended. I also read that some Samsung Class 4 or 6 cards have better real-world performance than some of the Class 10 cards out there. I pushed the boat out and got some Class 10 cards from Samsung.

Follow the #RPiWHA Project hashtag on this blog to keep track of my progress. Next week I’m away travelling from work, but I’m excited to get started and start building, so it won’t be too long until the next update.

Blog

I’m Back!!

Did you miss me?

Hopefully you didnā€™t even notice I was gone, but two days ago Tumblr terminated my account, removing this blog and Shrapnel from the internet. I immediately contacted support as directed and heard back from them yesterday evening: my account had been closed for contravening Tumblrā€™s community guidelines in relation to spamming and affiliate marketing.

I replied to make the point that at no point have I engaged in spamming or affiliate marketing, and apparently someone there agreed because I am now back online. The issue, as it turns out, was that my two Tumblr blogs were sending visitors back to jason.jnf.me (where I had a script that presented the blog content in a subfolder, integrating it into the site to a much greater degree than a separate domain would).

In the short-term Iā€™ve removed the redirect by simply resetting my blogā€™s theme to the default, and Iā€™ll take some time on the weekend to restore the look and feel I had previously, and probably give each of them a custom subdomain.

In the longer term, I think itā€™s time to start looking for an alternative blogging platform. When it seemed as though all the content I had on this blog had disappeared I was extremely disappointed. I run my own server, so I probably shouldnā€™t be relying on third-party services anyway.

The obvious suggestion would be to install WordPress, and while that would work great for my blog content I think Iā€™d have a hard time implementing some of the other site pages on that platform. What I want is a CMS (to give me the ability to quickly and easily manage and edit content) that lets me build custom bits and pieces (like my feed page) on top of it. Iā€™ve chosen PyroCMS. Itā€™s built on the CodeIgniter framework that Iā€™ve previously used which should make for relatively easy extensibility. Itā€™s going to take me some time, but Iā€™ve installed it on my development server to start getting my hands dirty. Iā€™m just happy Iā€™m back online and I donā€™t have to spend this weekend trying to rebuild.