Author: jaywll
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
Instructions
First, enable developer tools in Outlook:
- Open Outlook 2013
- Click File
-> Options -> Customize Ribbon - 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:
- Navigate to the Developer tab on the ribbon, and
select Visual Basic - In the Visual Basic for Applications window,
click Insert -> Module - Copy the code from below, and choose File -> Save, or click the Save
icon - 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:
- Open
Outlook calendar - Click
New Appointment - Click
File -> Options -> Customize
Ribbon - In
the right-hand pane, select the Appointment tab and click New Group - Select
the New Group (Custom) item and click Rename - In
the Display Name box, enter Forward
Control. Click OK - In
the left-hand pane, select the Choose Commands From: dropdown and select Macros - Select
Project1.DisableForwarding and click the Add
>> button between the panes - Select
Project1.EnableForwarding and click the Add
>> button between the panes - In
the right-hand pane, select Project1.DisableFowarding and click Rename - In
the Display Name box, enter Disable
Forwarding. Click OK - In
the right-hand pane, select Project1.EnableForwarding and click Rename - In
the Display Name box, enter Enable
Forwarding. Click OK - 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.

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!
Late Night Links – Sunday May 10th, 2015
Itās late night links time again! Yay!!
- Cyanide & Happiness #3915: Double Crossed
- WTF Josh
We have a guy on my team at work named Josh. Thereās also a guy named Josh at the branch I sometimes work out of. Are all Joshes like this? - May the Fourth Be With You
- Swarm 2.3 Feels Like The Old Foursquare, Looks Way Better
I like that some of the gamification features of old are coming back. - The Swedish King Gets Some Swedish House Mafia for His 70th Birthday
- Calgary-Glenmore Tied After All Polls Tallied
This stuff is fascinating to me, the process that follows all this. - Ex-Skypers Launch Virtual Whiteboard Deekit
This looks interesting. Although Iād be more interested if it were baked into Skype / Lync. I donāt need extra tools. - Age-Appropriate Condoms
- Weāre Truly in Historic Times
- See How Your Web Site Looks on Different Screen Resolutions
There are many tools for this kind of thing, but itās valuable to do nevertheless.
And weāre all done for another week! Until next time.
[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.
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!
TorrentApp
I have a small app on my computer that I wrote myself. Itās
small and simple, and itās the default application for opening BitTorrent files on our computers. When I
download one of these files the app takes the file and moves it to a folder on
the server. This folder is watched by my torrent
client of choice which runs on the server and immediately starts the
download when it sees the file.
The app then pops up a notification to the user to ask if
they want to be directed to the deluge web interface to see the download
progress.

I rewrote the app about a year ago. The original version was
written in RealStudio but the
location of the watched folder and the URL for Delugeās web interface were
hard-coded in: a reasonable design decision given it was just a small app for
only my use one, but still a poor one ā when a change I made to my network
configuration required me to adjust these variables I no longer had a copy of
RealStudio available.
I wrote a new version in Visual
Basic 2010 Express, and this time I did a little extra work to take the
configuration variables out of the source code and put them into an .ini file.
Why am I telling you all this?
Well, not that I think youād need the app, but I have today
made the source code
(and the compiled executable, for good measure) publicly available on my brand
new GitLab account!
Iāve been using Git for a while (and Iāve written about it once
or twice
before), but I really havenāt been taking advantage of its featureset.
Iām working on something right now thatās big and complex
and I value having version control and branches to work with. I already have
Git installed on my server (both my home server and my public webserver), but
Iāve downloaded a windows Git client
to compliment that setup and opened a GitLab account to use as an external
repository and a means to eventually make a finished product public.
Why have I chosen GitLab over the more ubiquitous GitHub? GitHub makes you pay to host a private
repository, and I want somewhere where I can both host code thatās a work in
progress (and not ready for public distribution) and distribute completed code
thatās ready for download, public review and maybe even improvement by the
wider community. GitLab gives me free private repositories for
partially-completed things that I can later make public once Iām ready to.
Iāve already created a couple of public repositories, mostly
to test the platform out, and TorrentApp is one of them.
So use it if itās a tool that might be useful to you,
improve upon it if you have the expertise, and send me a merge request so I
can incorporate your changes into the code!
Late Night Links – Sunday May 3rd, 2015
The bad news is that the weekend is nearly over and we all have to go to work tomorrow, but fear not, friends, for this is a happy side effect of this predicament: itās late night links time again!
- LGās Posh Watch Urbane Arrives at Googleās Store for $349
I definitely like that the trend in smart-watches is that theyāre getting more stylish and watch-like, even if it does mean that Flo is more and more likely to want someone to get her one. Talking of which… - Itās a Though Life
- How To Install Windows 10 IoT On Your Raspberry Pi 2
I donāt know that this will ever be especially useful to me, but itās still cool that it can be done. - How Old Do You Look? Microsoft Build a Robot That Tries to Guess Your Age
This was news when I first read about it, but a few days have passed now and Iām sure this isnāt the first youāve heard of it because itās taken the internet by storm since then. I look 38, BTW. - āOK Google, Shazam This Songā
I wonder if this also works from my watch? Anyone know? Maybe I should just try it. More coverage here. - Ken M… Trolling the Internet Softly Yet Skillfully
This is always entertaining. More Ken M here.
And thatās it for another week, folks! Have a good one, Iāll see you soon.