Blog

Technology, for Process’ Sake

On Monday, a new piece of technology will launch at work. It’s a tool I both designed and built, and I’m extremely proud of my work.

The tool itself is web-based. It lives on aĀ SharePointĀ server, is written in HTML with a healthy dollop ofĀ jQueryĀ and theĀ SPServicesĀ library thrown in for good measure.

It took some effort to build it, and I think the approach is a good one because on the back-end it makes good use of SharePoint’s functionality, but the front-end is completely custom with in-line error checking and user interface customizations that go far beyond what could be accomplished with SharePoint alone.

But that has nothing to do with why I’m proud of my work.

I’m also not especially proud of the project management stuff I did to bring this all together. It’s not that it was bad work, but my tool ran the risk of butting heads with a six sigma project that somebody else was running. They were basing a certification on their work, so I agreed not to implement anything until they were done. I thought I’d sequenced my work correctly, but when their three week pilot turned into a seven month pilot, I had nothing to do but wait.

To understand why I’m proud, we need to step back a bit.

The tool I’ve developed replaces another tool that was previously in use. It was also web-based, and it was owned by our organization’s IT team. As best as I can tell it was introduced in 2002, and in the eleven years since it launched we’d noticed a few niggly errors. We had a list of changes we wanted but this was minor stuff, the tool was used only by a select group of staff, IT resources are a hot commodity, and this was basically a priority for nobody except me. It’s at that point I decided my approach would be to build a new tool myself, from scratch. By going to all that trouble though I was opening up a whole new world of opportunity, and why waste it by reinventing the wheel? I wanted a smarter approach. And I had one.

I gathered together a group of SMEs from the handful of teams that used the tool day in day out – the people that had their hands on it every day – and booked a full day in their calendars to go through a kaizen event. We spent the morning mapping current state processes on the wall, writing out steps on post-it notes as we went and sticking them up in the relevant places.

By the time our lunch arrived this was done, and what I already knew was now abundantly clear to everyone else in the room. Our process was built around the tool that IT had delivered to us, eleven years prior.

After lunch I ran through a five minute PowerPoint I’d put together about muda, and we began unceremoniously ripping post-its off the wall, eliminating wasteful steps from the process. By the time we were done we had a vastly simplified, lean process mapped out. The kaizen participants surprised me more than once, coming up with things I would never have thought of on my own, changing the order of steps to support their ideal workflow, and eliminating hand-offs that I had thought might be sacred cows.

The tool I’ve built is only subtly different from what I was envisioning before the kaizen, but those subtle differences add up to a huge impact, and that’s why I’m so proud of my work.

It would have been all too easy to skip the kaizen and work from the already documented, well established business processes we had in place. What we’d have ended up with is a tool that looked prettier than the one that came before it, functioned better, and supported our processes beautifully. I’m fairly sure everybody would have been pleased with the outcome, and nobody would have stopped to think about whether or not the business processes were right to begin with.

What we have instead is, I think, a game changer – at least within the scope in which the tool and processes operate. We have re-engineered, optimized, lean processes along with technology that supports them but doesn’t define them. Management are happy because we’ve eliminated waste they hadn’t realised was there, on a scale they hadn’t imagined. The staff are happy because they’re empowered. Not only do our new processes support that, eliminating hand-offs and re-work that were only included to begin with in order to check the output of a group of people who were already perfectly competent, but also because they now have processes and a piece of technology that were designed and defined for them, by them.

That’s why I do what I do, and that’s why I’m proud of my work.

Blog

Living in a ROWE

So, itā€™s been a little over three months since I posted my original thoughts on ROWE, and with several of my colleagues away today at a ROWE learning session with Jody Thompson now seems like as good a time as any to follow up.

What ROWE means to each of us is a highly person thing ā€“ and so it should be ā€“ but during the past months I’ve developed a much clearer picture of what ROWE means to me. I wonā€™t bore you by documenting how I spend a typical day because the whole point is thatā€™s a detail for each of us to figure out on our own, but I’ve settled into something of a routine that I think works best for me. I believe Iā€™m more productive as a result. I didn’t feel stressed before so Iā€™m not sure Iā€™d say that ROWE has helped in that regard, but I would say that ROWE has helped me drive an internal focus on whatā€™s really important ā€“ I now do whatever it is thatā€™s the highest priority for me in any given moment. If itā€™s 10am on a Tuesday then thatā€™s usually a work related task, but if it isn’t and itā€™s more important to me to spend time with my girlfriend or take some me time and watch a movie then I donā€™t feel guilt about doing that either.

Most crucially (and unexpectedly to me) what ROWE has given me is increased confidence in myself and my approach to my work. Previously when I received an email asking me to help with something they believed to be ā€œon fireā€ I would jump on it, probably to make myself look good, and I could end up filling my entire day with little items of that type. Now I stick to my own priorities and help with others when I have time to. This sounds like a bad thing and that I’ve made myself into less of a team player, but as it turns out that really doesn’t seem to be the case. I donā€™t mean that I stick stubbornly to the plan I formulated my day first thing that morning ā€“ I allow my priorities to shift and I react to whatā€™s going on around me ā€“ but in my (admittedly still limited) new-found experience things that are ā€œon fireā€ never turn out to be as important as they first appeared and taking some time to gather my thoughts before taking action almost always leads to a better approach to a problem anyway. In a nutshell, it turns out Iā€™m most effective when I concentrate my efforts on big things that are important rather than small things of questionable priority. Of course this seems obvious when I articulate it in this way but for some reason it just wasn’t clear to me before I made a conscious effort to embrace the ROWE guideposts.

The largest contributing factor to the success of ROWE from my personal standpoint is by far the support of my leaders. Not only do they talk about supporting ROWE, but I see from their actions that this is true and, more than that, theyā€™re embracing the same methods of thinking about their work that I am.

The largest challenges represented by ROWE are, for me at least, still the technology ones. I’ve never wanted my organization to provide me with a cellphone, but now I find myself envious of those that have one because they can step away from their computers without cutting themselves off from the world of work. That being said, I’ve come up with the best solutions I can on my own ā€“ I have lync on my personal phone, I’ve changed the settings on my voicemail so that I get an email alert to my personal phone if somebody leaves me a message and my outgoing message now advises and lets callers press 0 to try reaching me in a location independent way. I achieved this by getting a new phone number especially for the purpose from a third-party provider. When you call it my desk phone, cell phone and home phone all potentially ring simultaneously, and I can configure the exact behavior from a control panel online. I updated the phone number listed for me in the corporate directory to this new one. The ability to check my work email from wherever I happen to be is really the only thing missing.

And I still fall down at “every meeting is optional.” I get the concept, but it’s going to take quite some time for me to buy in to that one, I think.

Blog

Initial Thoughts on ROWE

Along with a few of my colleagues I’ve recently started reading ā€œWhy Works Sucks and How to Fix It.ā€ Iā€™m only a few chapters in, but I wanted to share my initial thoughts, get peopleā€™s input, and also post something I can return to once I’ve learned more to see if/how my initial observations change.

  • Matt introduced me to ROWE through the 13 guideposts. My first thought was that I already work that way to a certain extent, but that some of the guideposts were just unrealistic andĀ didn’tĀ really apply to theĀ real world. Not true. The guideposts are deliberately big and bold and shocking but none of the concepts that embody ROWE are new ideas ā€“ I donā€™t recognize the ā€œcorporate Americaā€ that the book describes because thatā€™s just not where I work. The more I think about it though the more partly embracing ROWE seems harder than jumping in with both feet. Clearly I work somewhere in between the corporate America embodied by the BestBuy of old and a full ROWE, so whereā€™s the line I canā€™t cross? Nobody knows.
  • Thereā€™s a lot thatā€™s attractive to me about the idea of a ROWE, and one of the key things is the ability to get up in the morning and have the freedom to decide whether Iā€™m going to go into the office or not. Maybe I do, or maybe I work from home, or maybe I check my email, organize my thoughts about my ongoing tasks and then head to my desk later once traffic has died down. A full ROWE might offer me yet more options (maybe I just donā€™t work at all that day), but I probably already have the freedom to make the choice as I described it. Little doubts about whatā€™s acceptable and whatā€™s not usually get me in the car and out the door to sit in traffic for 35 minutes though.
  • I have a good work/life balance now and I donā€™t feel stressed about my work, but if for some little reason Iā€™m slower in the morning and later than usual leaving the house, I do feel anxious about it. The reality is that nobody notices if I get to my desk 10 minutes later than I did the previous day, and even if they did they probably wouldn’t make an internal judgement about it, and certainly wouldn’t vocalize a judgement in the form of sludge. My colleagues just aren’t like that, so why do I feel that way?
  • …Because the biggest barrier to a ROWE right now isn’t my boss or my colleagues, but itā€™s internal to me. I could probably go grocery shopping on a Wednesday morning if I wanted to. As long as I wasn’t skipping any prearranged meetings to do so then frankly I doubt anyone would even notice. I donā€™t do it because it doesn’t feel right.
  • Iā€™m not good at not working. Sometimes I need the clock to tell me I’ve done enough that day. Sometimes I need my boss to make me leave. When my workload is less, Iā€™m good at finding work to fill my time. This stuff is more than busywork (or at least I like to think so) ā€“ there really is some value to it. The biggest thing Iā€™d have to work on in a ROWE would be not burning myself out by working all the time.
  • I donā€™t have a company provided cell phone. I can sign in to Lync on my personal phone and I do, but if Iā€™m away from my computer I canā€™t get my email, and if Iā€™m away from the office I donā€™t get calls from people who phone the number thatā€™s listed for me. I have my personal cell phone number listed in the corporate directory to help with this and I have my desk phone set up to send an email notification to my personal email address (which I get on my cell) if someone leaves me a voicemail, but Iā€™m strongly in favour of implementing a BYOD (bring your own device) policy that would let me get my work email on my personal cell and forward calls from my desk to whatever number I choose. The technology is already there, someone just has to turn it on. My desk phone can forward calls, but policy says Iā€™m only allowed to forward them to a corporately-provided cell phone. The app that makes corporate phones secure is available for my Android device. I tried downloading it and signing in, and I got a message that said my device met security policies, but my login ID wasn’t enabled for mobile email. The end result being that if I want to go and do some work-related thinking in a park then I need to either make myself unavailable to my colleagues or find a park with WiFi and take my laptop. So I donā€™t do either, and I stay at my desk.
  • Half way through chapter one of the book I was struck by a desire to unset my alarm clock that wonā€™t go away. If learning more about ROWE results in me pushing for changes in my working environment, this will probably be my primary motivation. Despite my assertion that I have a good work/life balance I finish most weeks tired and in need of the break the weekend represents, and to me personally my alarm clock embodies the reason for this. I try and organize my time so that nothing needs to be done on Friday afternoons, because by then Iā€™m tired and itā€™s not my most productive time. Which really leads to another key point about ROWE: I donā€™t do stuff on Friday afternoons unless I need to. Why are Monday mornings any different?
Blog

Rescroller

This has been bothering me for months, but I’ve only just got around to doing something about it. If you use Google Chrome and hate the stupid thin-style scrollbar in recent versions then this extension is one way to fix it.

Rescroller

Blog

Reverse SSH Tunnelling

I have two servers. One is a rented VPS that I use to host web stuff, and the other is a server here at home that mostly holds files and downloads torrents, but also acts as a web server for development stuff. Both of them run debianĀ with lighttpd taking care of serving web content on the VPS and apache doing the same job on the home server.

Since it houses all my documents, I used to use AjaXplorer to let me access them from anywhere, with a dynamic DNS that points to my home IP and a CNAME record on my domain that hides my dyndns hostname for the sake of making things look pretty.

Before I moved into my current apartment and shaw was providing my internet this all worked great, but when we moved to where we are now 9 months ago we switched internet providers to telus because our building provides free internet and TV with them (side note: if telus isnā€™t free for you theyā€™re not worth it).

With internet from telus, everything stopped working.

A little bit of googling quickly revealed that telus block port 80 on residential internet connections to prevent their customers from running a web server. I opened up port 8080 on the firewall and ran the web server on that port instead, but for reasons I never took the time to understand itā€™s always been terrible. 90% of the time the setup doesnā€™t work, and even if it does I hate having to specify a non-standard port in the URL anyway.

My plan for a while now has been to come up with a better solution that involves using the VPS as a proxy to route traffic to the home server through some kind of tunnel. Initially my plan was to look for something similar to hamachi to take care of the tunnelling bit so that the home server could be reached without having to worry about the firewall or NAT on our home router, but after doing some reading this week it turns out thereā€™s a much simpler and easier solution! SSH can set up a reverse tunnel out of the box – meaning the home server can initiate a connection to the VPS that results in a port on the VPS being forwarded to a port on the home server. This is important because the home server isnā€™t easily accessible to the internet at large (thanks to NAT, dynamic IP addressing, and telus blocking things) but the VPS is. The VPS wouldnā€™t be able to easily initiate a connection to the home server, but the home server will always be able to initiate a connection to the VPS! Hereā€™s what I did:

  1. Set up passwordless SSH from the home server to the VPS
    For me this was already done, but itā€™s a crucial step. If the home server requires a password to connect to the VPS then itā€™s going to be impossible to set things up to work automatically. I followed a Password-less logins with OpenSSH guide that I found through a simple google search.
  2. Temporarily open the reverse tunnel by using the following command on the home server:ssh -R 8080:localhost:80 vps1.example.com

    You can search online if you want to better understand the syntax, but essentially what Iā€™m doing here is forwarding port 8080 (an arbitrary choice) on vps1.example.com (the VPS) to port 80 on localhost (the home server). Iā€™m not specifying a username because I have identical accounts set up on both servers, but if your setup requires you to specify change vps1.example.com to [email protected].

  3. Point the (sub)domain you want to use (for me itā€™s files.example.com) to the VPS, and set up the web-server on the VPS as a proxy to forward the connection to port 8080.For lighttpd I followed the relevant documentationĀ (I also had to enable the mod_proxy module) and my configuration line looks like this:

    $HTTP[ā€œhostā€] = ā€œfiles.example.comā€ { proxy.server = (ā€œā€ => ( ( ā€œhostā€ => ā€œ127.0.0.1ā€, ā€œportā€ => 8080 ) ) ) }

    Youā€™ll also need to make sure that the web-server on the home server is prepared to accept traffic for files.example.com

At this point I gave everything a quick test and it all worked great. Yay! However closing my ssh terminal connection to the home server also closes the tunnel. There are a few ways to get around that, but thatā€™s not our only problem here. The ssh tunnel may get disconnected for any number of reasons (if either server loses internet connectivity, is rebooted, general internet weirdness, the list goes on). Thereā€™s a tool available that solves all these potential pitfalls though, and itā€™s called autossh.

Autossh monitors an ssh connection and restarts it if it goes down for any reason. Itā€™s available in the debian repositories, so I installed it on the home server.

  1. To setup the same tunnel we did in step two using autossh, the command looks like this:autossh -M 29001 -f -N -R 8080:localhost:80 vps1.example.com

    Again I wonā€™t detail out all the command options, but theyā€™re to peruse on the autossh website or in the man page. The result running this command is that our tunnel is set up in a persistent way – if the connection is broken for some reason autossh recreates it. We can also log out of our terminal session on the home server without the tunnel being disconnected.

  2. The final step I took was to automate creation of the tunnel. I could have written in init.d script but a better solution is to put a script in /etc/network/if-up.d. This way whenever the network interface comes up on the home server the tunnel is created. The only additional consideration here is the user. Passwordless ssh is set up under my user account not as root, so I want the script to open the connection with my user account too. Hereā€™s my very simple script:#!/bin/sh
    su -c ā€œautossh -M 29001 -f -N -R 8080:localhost:80 vps1.example.comā€ Jason

Done! Now I have a persistent ssh tunnel forwarding port 8080 on the VPS server to port 80 on the home server, and lighttpd acting as a proxy on the VPS to forward traffic for the relevant subdomain to that port, and visiting files.example.com in a browser works again, despite telusā€™ best efforts to stop me.

Blog

Checking Out

Self check-out machines are weird here. They have the same software as they do in Canada, so the look and feel is the same, even the phraseology used when they speak is identical. But they talk with a British accent. Itā€™s strangely disconcerting.

Is this how Canadians feel when they talk to me?

Blog

MightyText

I send a lot of text messages, but when Iā€™m at home Iā€™m often working at my computer rather than being attached to my phone. Today I downloadedĀ MightyTextĀ from theĀ Google Play storeĀ (itā€™s free), and I love it!

Thereā€™s a chrome extension available which pops up a little message in the corner of the screen whenever you receive an SMS, and you can click it to reply. You can also initiate a new message by clicking the appā€™s icon at the top of the chrome window.

This wouldnā€™t normally be enough to prompt me to write a blog post, except for one thing – the pop up appears on my computer two or three secondsĀ beforeĀ my phone makes the text alert noise. How is that even possible?