Category Archives: Education

Doing IT at Home: Good Documentation

One of the most rewarding home IT projects that I have done was to implement a system for “home documentation.”  In a business environment documentation is critical to nearly any process or department.  At home, documentation is critical too but often overlooked or approached from a completely different perspective than it is in a business, but there is no need for this.  Many people resort to special tools, iPhone apps or physical pen & paper notepads to address documenting things around the house.  I propose something far more enterprise and elegant.  A wiki.

Wikis have been around for some time now and nearly everyone is familiar with their use.  At its core a wiki is just a web-based application.  Wikis come in many shapes and forms and with varying degrees of complexity and run on different platforms.  This makes them very flexible and applicable to nearly anyone, regardless of what kind of systems you run at home.

Using a wiki for home use becomes very obvious quite quickly once the project is underway.  Documenting bills, accounts, purchases, home repairs, part numbers, service schedules, insurance information and your home network, of course, all make perfect sense and are easy to do.  The wiki does not need to be large, just big enough to be useful.  Mine is certainly not sprawling but all of my important data is housed in one, convenient place and is text searchable.  So even if I don’t know how I organized something, I can just search on it.  All of my important data is there, in a single place, so that I can look it up when needed and, more importantly, my wife can look it up and update it when needed.  It allows for simple, reliable collaboration.  And I make mine available from inside or outside the home, so I can access my information from work or while traveling.  That’s a functionality that traditional home documentation systems lack.

While there are many wikis available today, I will mention three that make the most sense for the vast majority of people.  These are DokuWiki, MediaWiki and SharePoint from Microsoft.  DokuWiki and MediaWiki have the advantage of running on UNIX so can be deployed in a variety of situations for low or no cost.  They are free themselves. DokuWiki shines in that it needs no database and uses nothing but the filesystem making it incredible simple to deploy, manage, backup and restore.  It is nothing more than a set of text files and a small PHP application that writes them.  MediaWiki is, by far, the most popular wiki option and, like DokuWiki, is an PHP application but is backed by a database, normally MySQL, making it more complex but giving it more power as well.  Many people would choose MediaWiki to use for home (as do I) because it provides the most direct experience for the largest number of businesses.  SharePoint is free if you have a Windows Server and is much more complex than the pure wiki options.  SharePoint is an entire application platform that also includes a wiki as a part of its core functionality.  If you are looking to move more heavily into the Microsoft ecosystem then using SharePoint would likely make the most sense and will provide a lot of additional functionality like calendaring and document storage too.

Running a wiki can help give meaning to a home web server.  Instead of sitting idle it can house important applications and really be used regularly.  While not a massive project having a wiki at home could be an important step to giving meaning to the home IT environment.  IT at home often suffers from lacking direction or purpose – implementing systems only like a lab and lacking real world use.  Like the PBX example in an earlier article, a home documentation wiki can give your network meaning and purpose.

Doing IT at Home: The Home PBX

I am often asked what projects I would recommend for someone to do at home to get more IT experience and I am often at a loss to come up with anything very interesting that is both educational and could actually prove practical in a daily use kind of way.  Having home IT projects that are actually used, day in and day out, really changes how projects are approached making them a little bit more like production systems with real users using them, performance mattering and ongoing management an important consideration.  Over the years I have discovered a few home IT projects that really make sense in a “more than just a lab for learning purposes” kind of way.  One of the best is running your own PBX to replace your home telephone.

Today, home telephones are becoming less and less common, partially because their traditional functionality has been widely displaced by mobile phones and partially because the legacy telephone system, even when delivered over VoIP, is rather archaic.  But in business, telephony is taking off as modern VoIP PBXs add new functionality and lower costs.  This is one place where treating your home like a business can really pay off.  People who have moved to mobile phones only will likely have noticed a few problems with that model.

Why mobile phones don’t replace home phones?

  • Mobile phones are attached to a person rather than a place.  The concepts behind using each are different.  Reaching a person is far more useful, but both have their uses and special functions.
  • Mobile phones are highly dynamic.  They turn on and off, they roam, they leave the country, they lose signal, they lose power, they get lost.  Home phones are highly static in comparison.
  • Mobile phones require one line per person, a home phone can provide many extensions from one line or number.
  • Home phones systems can offer redundancy or failover.
  • Home phones can be used remotely, over the Internet, from anywhere without needing to arrange international calling ahead of time, or at all.
  • Home phones can offer features like conference rooms, ring groups, queues, etc.

Building a PBX at home can be very low cost while providing a lot of functionality that traditional phones and mobile phones fail to provide.  I, myself, am very glad that I have a home phone still but was disappointed that I was paying so much for such limited functionality using a traditional carrier.  Even after moving to a pure VoIP carrier I was still paying more for my phone at home than the office paid for multiple business lines.  And an idea was born.

There is always more than one way to skin a cat and there are many PBX products that one could use for a home project of this nature.  Far and away, though, the most popular will be a flavor of Asterisk, the free, open source, enterprise voice switching system.  And within the Asterisk family, Elastix is the obvious choice for a project of this nature.   Not only does this give a good opportunity for learning a very popular telephony system but a good use for production management of CentOS (Red Hat) Linux as well.  Another option would be 3CX on Windows, for example, but this is more limited and requires more licensing but depending on your career path this may make equal or better sense for you.

Having a true, enterprise PBX in your home can serve many needs, all of which play wonderfully into expanding a professional portfolio and as running a home PBX remains rather an exclusive endeavor it is an ideal talking point for an interview.  Having a PBX means that all of the control usually reserved for a business is now available at home such as having extensions for each family member (kids want their own lines, no problem), conference room(s) for family meetings (a la Skype but easier, especially for family members dialing in from traditional phones or mobile phones,) ring and hunt groups for handling complex calling situations (just the parents, or just the kids,) flexible voicemail options, detailed call reporting, household paging systems, extension to extension calling, remote extensions (whether for family members when they are out of the house or extended family who just want an extension on the system for unlimited, free calling around the family), video phones, overhead paging (front door announcement system, perhaps,) and multiple shared lines for easy efficiency.  All of this for almost no cost.

A PBX is a great resource to be virtualized, especially if you are running Linux.  A PBX uses effectively no resources when idle and very little when active, even with several users.  This will easily be as small as the smallest web server that you are running at home.  And almost no storage is needed, only just enough to hold the voicemails and logs.  Ten years ago only paravirtualization could handle the needs of audio processing limiting you to Xen-based virtualization products only.  Today vSphere and HyperV join XenServer in being able to handle this workload without breaking a sweat (others will work too.)  So whatever virtualization you are using at home will work just fine (you may run into issues if you are using Type 2 virtualization like VirtualBox.)

The only actual expense for a home PBX, and truly even for a small business, is the cost of the trunk that brings in the connection to the public switched telephone service (the thing that provides the phone number.)  A typical home telephone service might cost $20 – $50 / month, even without a single call being made and no services more than a simple phone line, even when using VoIP.  There are some exceptions, but very few.  For my own home PBX project I selected a commercial VoIP carrier that gives me four lines in a single SIP trunk for $11/mo – everything included like unlimited incoming minutes, the DID (the phone number) and the only thing that is extra is outgoing minutes, which are super cheap.  My phone bill rarely tops $13!  That’s pretty amazing considering I turned off a single line $35/mo service and now have all of those features of a PBX and a pretty amazing talking point.

If you are looking for an interesting project that will do wonders for your resume while actually adding some practical value to your home a PBX may be a great place to start.

IT Roles: Productivity and Availability

As IT managers we face the need to deal with two very different types of technical professionals.  These two types of professionals are separated, not by their personality types or working styles, but by the very nature of their job roles.  Understanding the unique needs of these two job types is critical in effectively managing technical workers, but few IT departments truly take the time to understand and appreciate the nuances inherent to these two different job roles.

The first type, and by the far the best understood, I will call the “engineer.” This engineering role encompasses a massive array of job functions ranging from software developers and designers, architects, system engineers, network engineers or anyone whose primary function is to creatively design or implement new systems of any sort.  The term engineer is a loose one but is relatively meaningful.

The second type of technology worker role can be generically referred to as the “support” role.  Support professions might include helpdesk, systems administration, desktop support, network monitoring, command center, etc.  What separates support professionals from engineering professionals is that they are not tasked with creative processes involving new designs or implementations but instead work with existing systems ensuring that they run properly and get fixed quickly when something is wrong.

It goes without saying that no one real-world human is likely to ever be completely in only one category or the other, but almost all job functional in IT focus very heavily upon one or the other.  It is pretty safe to assume that almost any role will be exceptionally weighted to one role or the other.  It is very rare for a single position to be split evenly between these roles.

Where this identification of roles comes into play is in knowing how to measure and manage technical staff.  Measuring and managing engineers, from a very high level, is quite well understood.  The concept of productivity is very simple and meaningful for engineering roles.   The goal of managing an engineering person or team is to allow and encourage that role to output as much creative design or implementation as possible.  The concept of quality exists as well, of course, but we still can think generally about engineering roles in relatively concrete terms such as number of functions written, number of deployment packages produced, size of network designed, etc.  Metrics are a fuzzy thing, but we at least have a good idea of what efficiency means to an engineer even if we cannot necessarily measure it accurately.

Support roles do not have this same concept.  Sure you could use an artificial metric such as “tickets closed” to measure productivity in a support role, but that would be very misleading.  One ticket could be trivial and the next a large research challenge.  In many cases there may be no tickets available for a long time and then many arrive at once that cannot be serviced simultaneously.  Productivity is likely to be sporadic and non-sustainable and, ultimately, not at all meaningful to measure.

Engineering positions earn their keep by producing output effectively over a rather long period of time often even spanning into months and years for large projects.  The goal, therefore, with engineering positions is to provide an environment that encourages sustainable productivity.  It is well know that engineers will often gain productivity by working shortened or alternative hours, taking regular vacations, etc.  Not only does this often increase productivity but often greatly increases the quality of the output as well.

Support positions earn their bread and butter by “being there” when needed.  If a support person is attempting to work at maximum efficiency there is a natural implication that there is a continuous backlog of support issues awaiting the support team’s attention and that there are many people requiring support who have to wait for it in order to form a queue.  By having a queue always in place this also means that support personnel are continuously taking work off the stack instead of resolving live items – either ignoring high priority items or being regularly interrupted – causing continuous context switching which significantly reduces the ability to efficiently handle the queue – whose entire purpose for existing was to create the appearance of artificial productivity in the first place.

Support roles are “event driven.”  I like this terminology because I think it most accurately describes the mode in which nearly all support professionals work.  Whether an event is generated by a phone call, an instant message, an email or a ticket it is an “event” that kicks off the transition of the support person from idle to action or, in some cases, from a low priority item to a high priority item.  One way or another, an event represents a “context switch” for the support professional.  Without an event there is nothing for a support professional to do.  Even if the “event” is represented by a ticket queue or an email backlog it is still a form of event.

Having a truly efficient support desk requires careful management of the event process.  Having a never ending queue of support issues is exhausting for the support professionals and it also means that no amount of staff is ever in an “idle” state awaiting high priority items.  Because of this, high priority items are either not addressed as quickly as they should be or else in-process items are neglected.

Understanding the event driven nature of support staff is critical to understanding how to approach the management of these teams.  There are no simple answers, and metrics of support staff are often even more meaningless than those of engineering staff – so use with extreme caution, but by empathizing with the support role we can begin to see where our role as a support manager plays into the bigger picture of supporting and promoting the support team members.

The most important concept, from my experiences, is providing a good flow of the interrupts going to the support team.  Often support teams are handling a number of different avenues for support, such as email and telephone.  Restricting and funnels events to appropriate channels is critical.

The problem with telephones is that they are aggressive and demand an immediate context switch whether the recipient is idle or if they are currently supporting the most critical production outage in corporate history.  The person calling is guessing that their immediate need outweighs the current needs of whomever the support person is currently supporting.  Telephones cause this problem everywhere that they are used.

Think about the last time that you were at a pizza parlor placing your order at the counter.  You waited in line patiently as each person was served.  You did the right thing.  You arrive at the front of the queue.  You begin to place your order when, the phone rings.  The person taking your order puts you on “hold” even though you are standing right there, picks up the phone, takes the order, hangs up and returns to you.  What this says is that the person calling, being the “squeaky wheel”, is more important to the restaurant than are the people actually in the restaurant.  This same effect happens on many support desks – in process work is interrupted by calls going to a group line or directly to the support person.  This is, at best, inefficient and at worst may disrupt critical support processes for highly critical issues.

So when thinking about how to manage IT professionals, think about the purpose of their role.  The goal of an engineer is productivity.  The goal of a support professional is availability.

IT in a Bubble

It is an old story in SMB IT, IT managers who get their start young, stay with a single company, work their way through the ranks and become venerable IT managers who have never worked outside of their current environment.  Just like the “good old days” when people stuck with a single company for their entire careers, this too sounds like a wonderful thing.  But IT has long rewarded “job hoppers”, those technically minded folk who move from shop to shop every few years.  The lack of direct upward mobility within single shops has encouraged this process – incremental promotions could only be found between companies, seldom within a single one.

Some people support and some people dispute the idea that there is value, or significant value, to be had by changing companies.  The idea is that by moving between environments you will glean techniques, procedures, processes and general experience that you will then bring with you to your next position – that you are a cumulative product of all of your past environments.  This concept, I believe, has some merit, moreso in technology than in other fields.

In technology fields, I believe that the value of moving between jobs, after a reasonable amount of time, is generally of much better value than is staying put.  The reason for this is relatively simple: Most small businesses lack an ecosystem of support and training for IT professionals. It is well known that IT professionals, working in small shops, lack the interaction with peers and vendors generally accepted as necessary for healthy professional development and which is common in enterprise shops.

An IT professional, after spending many years in a small shop, effectively all alone, tends to feel isolated lacking the professional interaction that most specialists enjoy.  Most small professional or artisan shops have a number of specialists who work together, share research and experience, are encouraged to work with competitors or vendors, to attend trade events, training, etc.  Few fields share the odd dispersion of IT professionals with only one or two people working together at any given company with little to no interaction with the outside world or with peers at other companies.

This isolation can lead to “IT insanity” if left unchecked.  An IT professional, working in a vacuum with little to no technical or professional feedback, will lose the ability to assess themselves against other professionals.  As often the sole provider of technology guidance and policy for potentially years or even decades, a lone IT professional can easily “drift off course” and lose contact and course correction from the larger IT field with only light guidance offered through the filtered world of vendors attempting to sell expensive products and services.

IT professionals suffering from “IT insanity” will often be found implementing bizarre, nonsensical policies that would never be tolerated in a shop with a strong peer-review mechanism, purchasing incredibly overpriced solutions for simple problems and working either completely with or completely without mainstream technologies – mostly dependent upon individual personality.  Partially this is caused by an increasing dependence on a singular, established skill set as the lack of environmental change encourages a process of continuing dependence on existing skills and procedures.

IT insanity will commonly arise in IT shops that have only a single IT professional or in shops where there is a strict hierarchy with no movement at the management ranks so that fresh ideas and experience from younger professionals do not feed up into the managers and instead established practices and “because I said so” policies are forced down the chain to the technologists actually implementing solutions.

This is not to say that all is lost.  There are steps that can be taken to avoid this scenario.  The first is to consider outsourcing IT – any shop so small as to face this dilemma should seriously consider if having full time, dedicated internal staff makes sense in their environment.  Looking for fresh blood is an option – getting IT professionals from other shops and even other industries can work wonders.  Some shops will even trade staff back and forth in extreme cases to keep from losing existing employees but seeking to “mix things up.”

Short of drastic measures such as changing employees entirely, non-IT organizations need to think seriously about the professional health of their staff and look to opportunities for peer interaction.  IT professionals need continuous professional interaction for many reasons and organizations need to actively support and promote this behavior.  Sending staff to training, seminars, peer groups, conventions, shows or even out as volunteers to non-profit and community activities where they can provide IT support in an alternative environment can do wonder for getting them out of the office and face to face with alternative viewpoints and get their hands on different technologies than they see in their day to day lives.

IT managers need opportunities to explore different solution sets and to learn what others are doing in order to best be able to offer objective, broad-based decision making value to their own organizations.