Blog

How email became the most reviled communication experience ever

This is an interesting read.

At Google I/O in 2009 Google introduced Google Wave, a re-imagining of email. I still maintain this was a much better tool for business communication than email is. The product was killed off only about a year later. Wave had some great technology, but Google failed to even try to sell it to the enterprise. Ultimately the problems Wave solved werenā€™t technical ones, they were business ones.

That all being said, is the way to solve the current problems with email overload really to replace it with a different tool? I donā€™t know the solution, but I certainly agree thereā€™s a problem.

How email became the most reviled communication experience ever

Blog

Hacking a Raspberry Pi into a wireless airplay speaker

jordnburgess:

The raspberry pi is fully functional credit card-sized computer that is cheap enough ($25) that it can be used just for a single purpose. With this hack the computer imitates an airplay speaker, making it possible to send songs over to an old stereo wirelessly from your phone.

The Raspberry Pi generated massive hype in nerdy circles this summer when it came out and weā€™re beginning now to see some amazing hacks from this tiny computer now.

Iā€™ve had mine for a few months now but I hadnā€™t got around to using it yet. So Iā€™ve now decided to try to make something that Iā€™ve wanted for a while: a product to bring my good but dated speaker system into the 21st century by enabling wireless streaming of music to it.

A possible way to do this would be to buy an Airport Express or an Apple TV and connect the audio out to the stereo. But then I would feel like overpaying for features like video streaming or wireless routing that wouldnā€™t be used. Besides, those products cost around Ā£80. Airplay enabled speakers cost Ā£200 at the low end. This raspberry pi creation should easily come in under Ā£30.

Hereā€™s a video of it in action.

[youtube https://www.youtube.com/watch?v=S4opWFboWro?rel=0]

Keep reading

Blog

Raspberry Pi Whole Home Audio Updates

Itā€™s been a long time since Iā€™ve written about my Raspberry Pi Whole Home Audio Project.

Simply, thatā€™s because Iā€™ve hit a bit of a wall and Iā€™m especially busy with work right now so I havenā€™t been able to find the time to work my way around it.

The problem is that the USB WiFi adapters that I bought (for about $5 each) donā€™t perform well. They have signal strength issues, and while they do work and maintain a network connection, the poor signal strength means the connection isnā€™t fast enough to stream audio. There are plenty of other people out there having the same problem. You get what you pay for, I guess, and I need to buy replacement adapters.

Iā€™m also considering a change in direction. My original plan was to install mopidy on one of the Pis and use pulse audio to stream the output to the others.

Iā€™m considering instead installing TuneBlade on one of my Windows PCs. TuneBlade takes all the audio output from that computer and streams it using Appleā€™s AirPlay protocol. Iā€™d then install ShairPort on all the Pis to turn them into AirPort receivers.

What do you guys think?

Blog

Prevent Forwarding, Replying or Reply-All in Outlook

About a month ago I wrote a post that detailed how to prevent attendees from forwarding your Outlook meetings to other people.

Since then Iā€™ve expanded upon it slightly on my own computer: in addition to the option to prevent meetings from being forwarded, Iā€™ve added similar buttons to the new email toolbar that can prevent forwarding, replying or replies to all.

Preventing people from hittingĀ ā€œreply allā€ is sometimes a great tactic if youā€™re sending an email to particularly large group and you donā€™t want everybody to get caught up in any follow-up. By contrast, preventing replies (thus forcing people to use ā€œreply allā€ instead) is great if you want the opposite, and for everyone to be kept in the loop.

My previous post details the process of setting all this up, but below is the code for the four macros. The first disables forwarding, the second disables replies, the third disables reply all and the final re-enables all response options. By default, nothing is disabled on new items unless you hit the relevant button to run the macro.

Enjoy!

Sub DisableForwarding()
    ActiveInspector.CurrentItem.Actions("Forward").Enabled = False
    X = MsgBox("Forwarding of this item has been disabled", vbInformation, "Forwarding Disabled")
End Sub

Sub DisableReply()
    ActiveInspector.CurrentItem.Actions("Reply").Enabled = False
    X = MsgBox("Replies to this item have been disabled", vbInformation, "Forwarding Disabled")
End Sub

Sub DisableReplyAll()
    ActiveInspector.CurrentItem.Actions("Reply to All").Enabled = False
    X = MsgBox("Reply All has been disabled for this item", vbInformation, "Forwarding Disabled")
End Sub

Sub EnableAllResponses()
    ActiveInspector.CurrentItem.Actions("Forward").Enabled = True
    ActiveInspector.CurrentItem.Actions("Reply").Enabled = True
    ActiveInspector.CurrentItem.Actions("Reply to All").Enabled = True
    X = MsgBox("Forwarding, Replies and Reply All have been enabled for this item", vbInformation, "Forwarding Disabled")
End Sub
Blog

Project Management Proverbs

Itā€™s been quite a while since Iā€™ve blogged. Work has been especially busy for the past month or so, and as my calendar gets squeezed from every direction the first thing to disappear from it is the time to post here.

Thatā€™s unfortunate, and I must get better at it.

Anyway, a few weeks ago I came across a post elsewhere about project management proverbs, and some of them are certainly worth sharing.

One in particular caught my eye because my boss MattĀ recently welcomed his new son Jude to the world. I know that toward the end of his wifeā€™s pregnancy he was getting anxious, as Iā€™m sure any expected father would, and they wanted the birth to be sooner rather than later.

It takes one woman nine months to have a baby. The project management proverb I read reminds us that, despite conventional project management wisdom, the same result cannot be achieved in one month simply by impregnating nine women.

Other notable points:

  • The sooner you get behind schedule, the more time you have to make it up.
  • A badly planned project will take three times longer than expected. A well planned project only twice as long as expected.
  • The person who says it will take the longest and cost the most is the only one with a clue how to do the job.
  • If youā€™re six months late on a milestone due next week but nevertheless really believe you can make it, youā€™re a project manager.

More here!

Blog

Prevent Forwarding of Outlook Meetings

The ability to quickly and easily forward an Outlook meeting
to another recipient is an essential feature. Maybe you canā€™t make it and you
need to send a delegate. Maybe you identify from the invite that bringing along
a colleague whoā€™s a subject matter expert would be beneficial. There are
probably many other scenarios.

As a meeting organizer though, itā€™s possible that you donā€™t
want people to be able to forward your meetings. Perhaps the location you have
booked is of a limited size. Perhaps the meeting content is sensitive and
discussion restricted to a particular group. There are probably many other
scenarios for wanting to keep tight control over the recipient list too.

Well, good news! Iā€™ve recently discovered this is possible,
and with just a few lines of VBA you can create meetings that have the
ā€œforwardā€ button disabled. If a recipient wants to extend the invite to someone
else, they have to come back to you and ask that you do it for them.

Itā€™s worth pointing out right at the top that this technique
only works in the Microsoft Outlook desktop client. You have to be using it,
and so do the meeting recipients. If your recipients also have their
email/calendar available to them on another client (including mobile devices
and webmail) then
they can use the other client to
forward the meeting.

Itā€™s also worth pointing out that full credit for this goes
to user GranEYb
on Microsoftā€™s TechNet
forums
. I have merely tidied up his/her instructions, and turned them into
a quick screencast. The instructions are for Outlook 2013. I know the code also
works in Outlook 2010. I havenā€™t tested it with other versions. YMMV.

Screencast

[youtube https://www.youtube.com/watch?v=tuABYCg9iEw?feature=oembed&enablejsapi=1&origin=https://safe.txmblr.com&wmode=opaque&w=540&h=404]

Instructions

First, enable developer tools in Outlook:

  1. Open Outlook 2013
  2. Click File
    -> Options -> Customize Ribbon
  3. In the right-hand pane, place a checkmark next
    to the Developer group and click OK

Open Visual Basic for Applications and write the code:

  1. Navigate to the Developer tab on the ribbon, and
    select Visual Basic
  2. In the Visual Basic for Applications window,
    click Insert -> Module
  3. Copy the code from below, and choose File -> Save, or click the Save
    icon
  4. Close the Visual Basic for Applications window

The code:

Sub DisableForwarding()
    ActiveInspector.CurrentItem.Actions("Forward").Enabled = False
    MsgBox "Forwarding of this item has been disabled"
End Sub

Sub EnableForwarding()
    ActiveInspector.CurrentItem.Actions("Forward").Enabled = True
    MsgBox "Forwarding of this item has been enabled"
End Sub

Create the
buttons in Outlook:

  1. Open
    Outlook calendar
  2. Click
    New Appointment
  3. Click
    File -> Options -> Customize
    Ribbon
  4. In
    the right-hand pane, select the Appointment tab and click New Group
  5. Select
    the New Group (Custom) item and click Rename
  6. In
    the Display Name box, enter Forward
    Control
    . Click OK
  7. In
    the left-hand pane, select the Choose Commands From: dropdown and select Macros
  8. Select
    Project1.DisableForwarding and click the Add
    >>
    button between the panes
  9. Select
    Project1.EnableForwarding and click the Add
    >>
    button between the panes
  10. In
    the right-hand pane, select Project1.DisableFowarding and click Rename
  11. In
    the Display Name box, enter Disable
    Forwarding
    . Click OK
  12. In
    the right-hand pane, select Project1.EnableForwarding and click Rename
  13. In
    the Display Name box, enter Enable
    Forwarding
    . Click OK
  14. Click
    OK at the bottom of the Outlook
    Options window

All done!
If you wish, you can now hide the developer tab that we enabled with the first
three steps.

To use the
tool, create a new meeting invite as you normally would, but before hitting the
send button hit the Disable Forwarding button first. Recipients of your invite
will find that the Forward button is disabled.

image

Meetings do
not have forwarding disabled by default, but if you need to re-enable
forwarding for any reason then the Enable Forwarding button is your friend.

Enjoy!

Blog

[youtube https://www.youtube.com/watch?v=rodL7zcINJo?feature=oembed&enablejsapi=1&origin=http://safe.txmblr.com&wmode=opaque&w=500&h=375]

Just a couple of days ago I wrote a little bit about how cloud servers are such a commodity item now, easily created and destroyed.

Today I wanted a server to test out a new tool, but I didnā€™t want to risk there being any impact to any of my existing production servers. So I created a new one on Vultr. From the time I started to the time I had a running server was just over a minute, and I recorded a screencast.

When I was done testing a couple of hours later I destroyed the server. Total cost to me for this exercise was about $0.02, or it would have been were it not for the fact that Vultr gave me a $5 account credit when I signed up.

Itā€™s hardly riveting viewing, but itā€™s nevertheless amazing in its own way.

Blog

Server Commoditization

Iā€™ve had a personal website of one description or another
for a long time now. For much of that time, the site was hosted by renting
space on someone elseā€™s large server ā€“ so called ā€œshared hosting.ā€

The theoretical problem with this model was that the
serverā€™s resources were shared between all its users, and if one user chewed
through a whole lot of them then that left fewer available for everyone else.
Iā€™m not sure I ever actually experienced this (although Iā€™m sure it really was
an issue for web hosting companies to contend with), but the problem I did come
across was that to protect against this kind of thing hosts often put policies
and configuration options in place that were very restrictive. Related to this
is the fact that server configuration options apply to everyone with space on
that server, and theyā€™re not for individual users to control. A problem if you
want to do anything that deviates even slightly from the common-case.

The alternative to shared webhosting would have been to rent
an entire server. This was ā€“ and still is ā€“ an expensive undertaking. It also
was ā€“ and still is ā€“ far more power than I need in order to host my website.
Sure, itā€™s possible to build a lower-powered (cheaper) server, but the act and
cost of putting it in a datacentre to open it up to wider world mean that itā€™s
probably not a worthwhile exercise to do all that with low-cost hardware.

What seems to me like not very long ago, virtualization
technology took off and created a market for virtual private servers (VPSs).
This allowed server owners to divide their hardware up between users, but in
contrast to shared hosting each user gets something thatā€™s functionally
indistinguishable from a real hardware computer. They can configure it however
they wish, and it comes with a guaranteed chunk of resources: heavy usage of
one of the virtual machines hosted on the server does not negatively impact the
performance of any of the others.

This is the model under which my website is currently
hosted. Iā€™ve chosen a low-powered VPS because thatā€™s all I need, but recently
as my site has started to see more traffic it occasionally sees spikes in
incoming traffic that tax its limited memory and processing resources. I use CloudFlare as a service to balance this
out, mitigate threats, easily implement end-user caching policies and generally
improve speeds (particularly for those users that a geographically far away
from the server), but once my server resources are maxed thereā€™s nothing I can
do about it: my host has divided the server up into VPSā€™s of a predefined size,
and doesnā€™t allow me to grow or shrink the server along with my needs.

The new paradigm is an evolution of this. Instead of
dividing each bare-metal server up into predefined VPS chunks, each server is a
pool of resources within which VPSs of various sizes are automatically
provisioned according to customer requirements. Behind the scenes, technology
has grown to make this easier, especially when you scale the story up to more
than one bare-metal server. A pool of physical servers can also pool resources.
If a VPS hosted on one physical server needs to grow beyond the remaining
available resources of its host, it can be invisibly moved to another host
while itā€™s still running and then its resources expanded.

This new paradigm is the one I plan to move to. Led by the
likes of Amazon and Google and now followed in the marketplace
by lower-cost providers like DigitalOcean
and Vultr (likely to be my
provider of choice), servers have really become commodity items that can be
created and destroyed at will. You used to rent servers/hosting by the month or
year, now itā€™s by the minute or hour. Itā€™s common for hosting companies to
provide an API that lets you automate the processes involved ā€“ if my server
detects that itā€™s seeing a lot of traffic and is running low on resources it
could ā€“ with the right script implemented ā€“ autonomously decide to grow itself,
or maybe spin up a sibling to carry half the load. When things settle down it
can shrink itself back down or destroy any additional servers it created.

What a wonderful world we live in!