Newsgroups: comp.org.usenix,comp.unix.admin
Path: sparky!uunet!uunet!kolstad
From: kols...@uunet.uu.net (Rob Kolstad)
Subject: LISA V Admin Survey Results
Message-ID: <1992Jan8.170054.25118@uunet.uu.net>
Followup-To: kols...@bsdi.com
Keywords: administration, time, effort, summary
Sender: use...@uunet.uu.net (UseNet News)
Nntp-Posting-Host: rlavax.uu.net
Organization: UUNET Communications Services
Date: Wed, 8 Jan 1992 17:00:54 GMT

At the 1991 Large Installation system Administration V (LISA V) conference
(Sept. 30-Oct. 3, 1991, San Diego, CA), Jeff Polk and I distributed a
survey pertaining to the time expenditure of system administrators.  This
is the promised results and data from that survey.

I was able to glean 132 usable survey forms from the group.  From
doing so, of course, I learned much about what I *should* have done,
had I only known at the time.  Probably the most instructive part is
that my initial set of potential time sinks (shown here):
	Applications Install/Management
	Backup
	File/disk management
	H/W Install/Configure
	Management of subordinates
	Network Management
	Net H/W Troubleshoot/Repair
	Non-net H/W Troubleshoot/Repair
	System Software Troubleshoot/Repair
	Non-System-Software Troubleshoot/Repair
	Performance management
	Recover
	User Assistance & Training
	YP/NIS Management
should have included many more topics (see summaries below).

Many have speculated that backups take up lots of time, that hardware
requires the most, etc. etc. -- as if administrators were really
performing just a single task and that once we understood that task, then
we'd understand their job.

This turns out not to be the case.  Administrators report an
incredible variety of tasks (broken down into about 45 categories,
including miscellaneous).  I'm sure the survey would have yielded far
more interesting and accurate results if I had only included the 31
categories that were `write-in's -- then, the respondents would have
considered them and included responses.

It's important not too draw too many conclusions from surveys in general.
This survey was handed to about 400 administrators at the LISA V
conference.  One third of them (self-selected) returned the survey.

The average respondent claimed about 42.6 hours of work each week.  Some,
of course, claimed much more.  Some were only part-time administrators,
thus reducing the average.  I think that the summaries below are useful
moreso for their distributions than for the averages.

Probably the most interesting result is that *on average* administrators
spend over 25% of their time dealing with users and their applications.
See the histograms much later for details on some administrators (who
spend >75% of their time dealing with users).  This survey included
administrator managers who *never* see users.

Backup and restore is widely touted as a timesink for administrators.
Note that backups *average* 1.8 hours/week with 46 of 132 (~35%)
respondents spending 0 time on backups.

Password file & Yellow Pages maintenance totaled just 1.1 hours/week, on
average.  Password file maintenance was a write-in topic, unfortunately.
About half (72/132) of the respondents indicated 0 time on user-record
maintenance; the remainder showed a distribution skewed toward the low end
(31 <1 hour; 19 < 2 hours; 14 >= 2 hours) [combined Yellow Pages &
Password File maintenance].

The tabular results below show the number of respondents who answered
various numbers of hours per week for a given task.  The 0 column
indicates no reply or a reply of 0 hours/week (probably equivalent
since the totals work out reasonably).

The average is for all 132 respondents -- not just those who responded
with non-0.  I have sorted the output in decreasing levels of effort
expended.

Skip down a bit over 60 lines to see some histograms.
[Line 198 marks the start of the user:administrator ratio discussion].
[Line 250 marks the start of the data and programs in shar format].

  0 <=1 <=2 <=3 <=4 <=5 <=6 <=7 <=9 <=10 >10 AVG
 13   7  14  10  15  16   5   2   8   0  41  7.1 Dealing with users
 19  26  26  11  14  15   2   1   4   0  13  3.8 Applications
 56   9  25   4  10  11   0   0   3   0  13  3.3 Managing Subordinates
 20  17  35  15  13  17   1   0   3   0  10  3.1 System Software
 23  20  29  13  15  16   1   0   3   0  11  3.1 H/W Install/Configure
 35  31  26   7   2  14   1   0   2   0  13  3.0 Network Management
 17  28  37   9  11  19   1   1   3   0   5  2.7 Disk management
 30  20  32   9  13  15   3   1   2   0   6  2.7 Non-system Software
 35  46  31   4   3   5   0   0   3   0   4  1.8 Performance
 46  29  22  11   9   9   2   0   1   0   2  1.8 Backups
 43  29  30  10   7   8   2   0   0   0   2  1.7 Hardware
 47  43  18  11   4   4   0   0   2   0   2  1.4 Network Hardware
113   0   1   2   5   2   0   0   1   0   7  1.1 SW Development
 72  28  18   5   3   2   1   0   1   0   1  1.0 Yellow Pages/NIS

112   0   1   2   5   4   1   2   0   1   3  0.9 Reading
108   0   3   2   5   9   2   1   1   0   0  0.8 Meetings
 58  55  14   1   2   0   0   0   1   0   0  0.7 Restores
120   2   1   2   2   0   0   1   1   0   2  0.4 Miscellaneous
123   1   2   0   1   1   1   0   1   0   1  0.3 Evaluating products

125   1   1   1   0   2   0   0   0   0   1  0.2 Upper Management
127   0   1   1   0   0   0   0   1   0   1  0.2 Proposal writing
128   0   0   0   1   0   0   1   0   0   1  0.2 Policy issues

124   1   4   1   1   0   0   0   0   0   0  0.1 Dealing with Vendors
125   1   2   1   0   2   0   0   0   0   0  0.1 Personal Growth
126   0   4   0   0   1   0   0   0   0   0  0.1 Planning
126   3   1   0   1   0   0   0   0   0   0  0.1 Passwd file maint.
127   0   1   2   0   1   0   0   0   0   0  0.1 Documentation
127   1   0   1   2   0   0   0   0   0   0  0.1 Security
128   0   1   0   0   2   0   0   0   0   0  0.1 Sendmail
129   0   0   0   1   1   0   0   0   0   0  0.1 Customer service functions
129   0   0   0   1   1   0   0   0   0   0  0.1 DB maintenance
129   0   1   0   0   0   0   0   1   0   0  0.1 UUCP
129   0   1   0   0   1   0   0   0   0   0  0.1 EMail
130   0   0   0   0   0   0   0   0   0   1  0.1 Testing
130   0   0   0   0   0   0   0   1   0   0  0.1 Problem Solving

129   0   2   0   0   0   0   0   0   0   0  0.0 Reading news
129   1   0   0   0   1   0   0   0   0   0  0.0 Monitoring
130   0   0   0   0   0   1   0   0   0   0  0.0 Staff issues
130   0   0   0   1   0   0   0   0   0   0  0.0 Public Relations
130   0   0   1   0   0   0   0   0   0   0  0.0 Printers
130   0   1   0   0   0   0   0   0   0   0  0.0 Demonstrations
130   0   1   0   0   0   0   0   0   0   0  0.0 Ordering
130   1   0   0   0   0   0   0   0   0   0  0.0 Bind
130   1   0   0   0   0   0   0   0   0   0  0.0 FTP'ing files
130   1   0   0   0   0   0   0   0   0   0  0.0 Travel
                                            42.6 TOTAL

Relatively useless presentation of the `site statistics':
  2  25  23  16  15  11   9   7   6   7  10   5.2 Number of sysadmins
  7   1   1   0   1   1   0   0   0   0 120 338.0 Number of FTE Users
 37   0   6   2   2   4   0   2   1   0  77  75.7 Dataless Workstations
 61   4   6   0   5   6   1   1   1   0  46  31.5 Diskless Workstations
 29   3   3   1   7   2   2   4   4   0  76 403.3 Dataful Workstations
  4   8   8  10  10  12   1   7   5   0  66  18.7 Servers
 24   1  13   5   1   2   1   0   1   1  82 301.0 PCs
 27   8   6   1   3   5   2   0   0   0  79 182.8 Macs
  6   1   2   1   7   2   7   4   3   0  98  76.2 Server GB
 28  11   5   6   5   6   2   2   3   0  63  51.6 Workstations GB
125   0   0   0   0   0   1   0   0   0   5   2.3 X-Terminals

======================================================================
======================================================================

These few histograms show some of the distributions that are not
apparent from the tabular summary.  The scale includes the number of
people in each histogram bucket and, on the next line, the range for
for that bucket.  The means presented here are of the *non-zero*
entries, not all entries.

Skip about 45 lines to see the histogram for number of administrators/user.

----------------------------------------------------------------------

117 items; 0.5 -> 30; mean of nonzero entries= 7.83
Max bucket is 25; $#bucket is 14
      *                                        
      *                                        
   *  *  *                                     
   *  *  *                                     
   *  *  *                                     
   *  *  *     *                               
   *  *  *     *                               
   *  *  *     *                               
   *  *  *     *                               
   *  *  *  *  *        *                      
   *  *  *  *  *        *                      
   *  *  *  *  *        *     *                
   *  *  *  *  *  *     *     *                
   *  *  *  *  *  *     *     *           *  * 
   *  *  *  *  *  *     *  *  *           *  * 
  21|25|21|10|16| 4| 0|10| 1| 6| 0| 0| 0| 2| 2|
 0  2  4  6  8 10 12 14 16 18 20 22 24 26 28 30 31 
            --> Dealing with users <--
------------------------------------------------------------------------------
111 items; 0.1 -> 35; mean of nonzero entries = 4.44
Max bucket is 52; $#bucket is 14
   *                                           
   *                                           
   *                                           
   *                                           
   *                                           
   *                                           
   *                                           
   *  *                                        
   *  *                                        
   *  *  *                                     
   *  *  *                                     
   *  *  *                                     
   *  *  *     *                               
   *  *  *  *  *                               
   *  *  *  *  *     *     *              *  * 
  52|25|18| 4| 7| 0| 2| 0| 2| 0| 0| 0| 0| 1| 1|
 0  2  4  7  9 11 14 16 18 21 23 25 28 30 32 35 37 
               --> Applications <--
------------------------------------------------------------------------------

Management just loves to know how many administrators they should have
for their user community.  They wish that they could know the constant
(let's call it alpha) so that they can use the formula:

	#administrators = #users / alpha

to compute the number of administrators they need.

Unfortunately, as the histogram below shows vividly, alpha is not an
easily discernible constant.  The number of administrators required varies
with the services required of the administrators.  More services means
more administrators.  Less services; fewer administrators.  Of course,
sites breaking the 30-50 full-time-equivalent user barrier are finding
that they require at least one administrator just to keep things up and
running.

I removed some of the larger ratios from the histogram so that it didn't
have 100 of the respondents clumped at the left side.  The removed ratios
are shown.  One site claimed an 1800:1 ratio for users to administrators!
One would imagine that they provide less service per user than sites with,
say, a 10:1 ratio.

------------------------------------------------------------------------------
REMOVING ALL DATA > 100
98 items; 0.125 -> 100; mean = 89.7
Max bucket is 18; $#bucket is 14
         *              *                      
         *              *                      
         *              *                      
         *              *                      
         *              *                      
         *              *                      
         *              *           *          
         *              *           *          
      *  *        *     *           *          
      *  *        *     *        *  *         * 
      *  *     *  *  *  *        *  *         * 
      *  *  *  *  *  *  *        *  *     *   * 
      *  *  *  *  *  *  *  *     *  *     *   * 
   *  *  *  *  *  *  *  *  *     *  *     *   * 
   *  *  *  *  *  *  *  *  *  *  *  *     *   * 
   2| 8|17| 4| 5| 8| 5|18| 3| 1| 7|10| 0| 4|  7|
 0  6 13 20 26 33 40 46 53 60 66 73 80 86 93 100
                 --> USR/ADM <--
Removed:
119 120 123 125 125 125 143 143 150 150 150 167
200 200 250 250 267 267
300 329 333
500
1800
------------------------------------------------------------------------------

And here is the data and some PERL programs to interpret it.  If you
find any good results or interpretations, please do share them with me
(kols...@bsdi.com).

------------------------------------------------------------------------------
#!/bin/sh
# This is a shell archive (produced by shar 3.49)
# To extract the files from this archive, save it to a file, remove
# everything above the "!/bin/sh" line above, and type "sh file_name".
#
# made 01/08/1992 16:28 UTC by kolstad@ace
# Source directory /home/ace/kolstad/survey
#
# existing files will NOT be overwritten unless -c is specified
#
# This shar contains:
# length  mode       name
# ------ ---------- ------------------------------------------
#   9181 -rw-rw-r-- data
#   1035 -rw-rw-r-- titles
#    842 -rwxrwxr-x get.perl
#   1328 -rwxrwxr-x hist.perl
#    970 -rwxrwxr-x table.perl
#
# ============= data ==============
if test -f 'data' -a X"$1" != X"-c"; then
	echo 'x - skipping data (File already exists)'
else
echo 'x - extracting data (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'data' &&
BU:INST:NETM:HW:SW:REST:YP:APP:DSK:MGMD:NETH:SYSW:PERF:USER:ADM:NUSR:DATW:DSKW:FULW:SERV:PC:MAC:SGB:WGB:XTRM:MON:TEST:FTP:DB:MGMU:BIND:UUCP:MISC:POL:GROW:ORDR:VEND:PUBR:PLAN:DOC:SNDM:DEMO:READ:PRNT:MAIL:TRAV:PROP:MEET:PW:STAF:SEC:PROB:DEV:EVAL:NEWS:CSS
3:2:2:2:2:::2:2:::2:2:2:4:200::25::4:150:10:26:5::::::::8
:::::::::32:::::9:200:200:5:100:20:10:20:2:1::::::::::::::::::::::::::::8
:4:2:6:4::4:3:1:::2::4:6:300:180::4:4:2:12:19:26:::::::::::::::::::9
::1:2:5::1::2:5:5:2:2:10:2:80:26::6:3:3:30:6:6::::::::::::::::::::::::5
:5:::2:::35:1:::5:2:5:4:1000:7:7:700:5:::100:5
2:6:0.5:6::1:::2::0.5:2::3:9:700:250:20:10:40:200:150:100:40::::::::::::::::::::::::::6:::16
4:2:2:1:2:1::4:8::1:1:8:4:1:20:16:4:1:4:10:1:30:10:::::::::::::::2
1:3:0.5:0.25:0.5:0.25:0.5:1:4::0.25:0.5:1:3:0.5:10:::10:2::15:4:2.7:::::::::::::::::::::::::::::20:::5
5::5:::::::20:::::7:300:10:250:20:20:50:100:100:::::::10:::::5
5:5:5::1::::1::1:1::20:7:30:10:250:35:35:50:100:100::::::::::::5
0.5:3:0.5:1:2:0.25:2:0.5:2::0.25:2:1:30:1:75:60:12::3:20:10:10:10::::::0.5:::0.5::::::2::::::::::::::3
:3:2:1:2:1::10:2:4:1:4:15:3:2:300:2:18:49:11:::38:5
:2:1:1:4:1::10:2:5::3:15:2:2:300:2:18:49:11:::38:5
:10:5:5::::2:5:::5:1:5:4:400:100::25:10:50:10:20:1
2:4:1:2:2:1:2:4:4:1:1:4:2:8:9:130:40:30:15:10:200:200:70:60::::::::::::::::::::::::6::::::4
:4:2:1:4::5:5:2:0.5::2:2::4:400:15::12:8:400:100:16:::::::::::::::::::::::::5
2:2::2:2:2:0.4:4:4:4:0.4:2:2:5:5::280:::20:2000::40:6::::::::::::::::::2::::::::::::6
2:4:2:2:5:2::2:4:2:1:4:2:4:7:1000:30:50:100:15:200:200:40:25:::::4::::::::::::::::::::::::8
:4::2:3:::1:5:::4:1:3:9:800:75:15:150:70:500:150:75:125::::::::2:::::::::5::6:::::2:::::::2
:4::5:1:::3:4:4::4:1:3:9:800:75:15:150:70:500:150:75:125:::::::::2::::::::::3:::::4:::::2
5:5:2:1:1:1:1:5:2:::5:1:6:2:180:20:23:51:12:150:25:24:35:40::::::::::::::::::::::::::::5
:8:5:::::2::2:2:2::8:0.75:5:::8::4:6::12:::::::::::2
:5::5::::5:5:8::5::10:2:175:14:15:26:16::10:17.5:13.5:21:::::::::7::::4
2:2::2:2::2:2:2::1:4:::1:20:8:4:6:3:3:1:4:2:::::::::::::::2::::2:::1::5::::::1
2:1:1:2:2::8:2:3::1:1:1:15:1:65:::20:4:500:25:6:12:20:::::5
:3::::3::7::20:::::7:2300:::20:20:1000:1000:51::::10
4::::4:::16::12:8:8:::5::250:::14:100:10:40:4
0.5:4:20::4:4::1:2::5:2:5::2:600:::4:1:50:60:27:3:::::5::::::::::::::::::::::::::2
0.5:0.25:1:1:3:0.5:2:20:2:2:1:3:2:10:2.5:500:20:60:30:25:2:1:75::::::::::::::::::::3::::::::::5
1:2:2:1:6:1:3:1:1::1:4:1:12:6:750:500:4::13:5000:30:45:50::::::::::::::::::::::::4
6:1:2:1::2:3:3:1::3:3:1:6:6:750:500:4::13:5000:30:45:50::::::::::::::::::::::::8
1:2:2.5:1:5:2::8:5:5:2.5:2:2:12:1.5:30:25:24:4:4:2:3:10:0.2:::::::::::2::4::2::::4
5:1.6:5:1.6:3.3:0.7:1.6:1:3.3:3.3:1.6:3.3:1.3:5:3:100::5:50:5:6:15:45:1.2
3:3:3:3:5:1::3:3::3:6:2:5:1:48:::25:2:2:10:7:4:12::::::::::::::::::5
2:2:2::2:2:2:2:5:10::2:2:2:3:800::124:40:20:300:500:30:60:::::::::::::::::::::::::::::10
2:5:3:2:2.5:0.5:4:4:3.5:2:0.5:2.5:3:10:2:100:60::7:8:170:3000:26:10
:5:::5::1:10:2:::15:1:15:8:950:40:6:20:8:10:40:6:8
2:5:5:2:2:1:1:2:1:2:2:2:1:16:2:32:7::4:1:16::8:1
::::5:2:3:2:2:5::3::2:3:50:50:::5:::20::::::::::::::::::::15:::::5
0.5:0.5:2:2:5:1:0.5:5:1::3:5:0.5:10:1:20:::15::100:::15:::::::::::::::::::5:::::::::::8
0.5:5:3:1:5:1:1:5:2:5:1:15:2:15:15:400:100:20:10:8:15:35:42:90::::::::::::::::::::::::5
3::0.5:::::1::38:::::8:600:75:15:150:70:100:150:75:125:::::::::::::::::::10
1:2:10:2:1:1::1:1:20:2:2:1:2:7:1000::::10:1500::15
2::1:3:4:2::3:2:1:1:3:3:10:2:75::1::4:70::4:1
3:1:0.25:1:0.25:1:2:10.5:5:2:1:3:5:2:2:97:40:20:15:7:20:20:24.5:14:::::::::::::::::::::::::::3
0.5:5:2:::1:1:5:5:1:2:5:1:5:5:100:10::50:10:100:200:17:30:::::::::::::::::::6.5:::::5
1:12:::6::1:10:1:::8::5:7:300:16:4:7:17:15:15:40:5
1:2::2:2:2:2:2:1::2:2:4:10:2:100:100:5::3:::16:40:::::::::::::::::::4::::::::::4
1:2:4::8:1::4:6:::4.5:8:4:1:100::::4:120::17
5::5:::1:2:2:10:1:2:4:2:10:4:120:40::80:15:2:25:35:45
1:4:1:3:2:1::1:8:::2:2:8:6:400:200:20:14:16:50:150:140:300
3:2::3:10:1::3:::3:5::15:3:100:40::40:4:10:50:10:10
4:2:16:::::2:2:2:::4:8:4:30:5:2:7:2:10:10:15
::::5:::::10::5::4:6.5:800:300:300:50:20::500:700:1000:::::::::::::::::::5::::8:6
:2:10:::::2:2:2::2:1:4:4:100:4:1:4:4:20:20:12:3
4:1:1:1:1::::7:2:1:::1::2:::4:1:3:2:2:6.5
:2:::4:::15::2::2::15:15:4000:100:20:800:15:::2000:160
0.5:3:1:1:2:0.1::1:2:2:1:1:0.2:2:4:150:70:20:20:10:3:1:20:10:::::::::::::::::::::::::2::1
1::1::::2:4:10::10:10:2::3:200:::90:5::20:75:1
6:2::3:2:1::1:4:2::2:1:15:2:150:::80:7:15:25:20:80
2:2:5:2:2:1:2:1:4::1:2:1:15:2:150:::80:7:15:25:20:80
:5:18:1:10:1:1:4:3:2:1:5:5:3:2:500:300:::10:400:5:300:200
1:4:5:3:1:1:3:4:3:::1:2:10:0.5:60::5:50:7:2000:1400:5:1::5
::28:::::::4:8::::5:200:20::30:200:2000:25:25:20
2:5:1::15:1::5:3::1:2::5:1:12:3::1:1:2:15:7:4
:3:12::3::5:3:2:3:3:5:3:5:2:40::1:75:5:3:2:4:25::::::3:::::::3
2:8:8:::4:4:4:4:2::2::4:20:1000:300::200:10:2000:500:200:1000
5::5:4:5:2::2:5:5:4:5::2:3.5:40:50::5:5:2:4:42:20
::10::::::8::2:::20:8:320:::365:15:::5.7:139
3:1:2:1:4:0.5:2:1:1:2:0.5:4:1:1:4:30:10::20:3:8:1:30:5
:10::3::1:2:2:5:::15::2:5:300:30:50:200:8:100:300:7:100
:::::::::30:::::50:1000:50:300:50:100::300:50:::::::::::10
2:4:::1::1:20:1:::1:5:4:1::::17:1::1:1:8
5:1:::2:1::2:3:2:1:1:2:5:20:1000:25::475:30:500:20:50::::::::::3::::::::::4:::::3
0.5:4:2:1:1:0.5:1:4:0.5:2:1:1:2:8:3:120:70:40:10:20:2:120:60:10:::::::::::::1::::::4:::::4
0.2:0.5:0.5:0.5:2:0.2:1:2:0.5:3:0.2:2:0.5:3:0.5:50:14:::3:20:6:100:4:::::::::::::::::::::::::::::3
4:2:::12:::4:2:::::4:0.1:4::::1:::4::6::::::::::::::::::::::::::::12
2:10:6:::2::2:10::2:4:4:2:3:70::::18:50:10:50
::2::4::1:5:10:8:4:3:2:1:30:1600:200::100:40:100:500:200:150
1:1:2:4:2:1:2:5:2:2:1:2:1:6:3:200:2:20::5:20:20:8:1::::::::::::::::::::::::::::::2
1:2:1:0.5:0.5:0.5:0.5:1:2::1:1:0.5:30:3:130::2:118:7:10:30:25:40::::::::::::::::2
2:1:2:2:5:2:1:1:3::1:2:1:10:1:50:2:25:28:5:5:4:12:30::::1:::::::::::::2::::::::4
8:3:2::::::4::2:4::12::80::::11:40:12:8::::::::::::::::::::5::::::1
2:2:1:4:2:1::3:2:4:1:8:1:4:3:200:30:40:40:10:75:40:17:20:::::::::4::::2::::::::::::::::4
3:4:2:4:2:1:3:4:5:4:3:3:3:8:5:250:3:5:100:10:150:30:20:300::::::::::::::::5::::3
0.5:10:0.5:2:0.5:0.5:0.5:1:0.5:2:1:0.5:1:5:5:500:375:::7:50:5:150::::::::::::::::::::::::::::::15:2
1:1:::::2:4:2:10:5:::20:5:50:5:70:7:11:15:50:20:2
:4:0.6:4.8:4:::6:0.2:4:0.8:2.4:2:4:2:100:50:25:15:10:12:20:2000:2:::::::::::::2::::::::::2::::3.2
3:4:2:4:4:1:1:2:2::1:2:2:8:1:150::1::15:2:10:30::200:::::::::::::::::::::::4
2:2:5:3:2:1:1:5:1:5:1:3:1:3:4:200:5:50:100:10:300:150:70:15
5:15::5::1:1::1:::5::1:4:70:20::200:5:2::20:200
4:10::18::2:1:2:1:::5::2:4:70:20::200:5:2::20:200
1:1:2:5:10::::5::5:10:1:1:6:400:100:30:20:50:50::100:200
2:3:1::1:::8:1:5:3:4:1:7:12:200:200:5:100:20:30:10:40:200
19:3:::3::::2:1:::2:10:6:420:::1:11:120:1:40:1
1:10::10::8:15:2:::3:::5:3:600:5:245:2:25:100:30:60:1
:0.5:2.5::1:::5:2:3::2:15:10:1:1800:500:1000::3:2000:2500:5:::::::::::::::::3
:::2:4:::::4::10:10:4:4:300:300::10:150:10:10:300:120:::::::::::::::::::::::15
:5:2:2:5:1:::2::3:5:1:6:3:60:2::25:1::12:6:3:::::::::10
::1:1:2::::2:5::2:1:7:4:300:300:10:10:130:9:4:300:120
::5:5::::5:5:10::10:::9:600:::400:50:::300:250
1:5:2:2:2:1:1:1:1:8::2:2:12:2:100:50:15:8:5:5:2:22:7
::3::1::1:1::20:::1:1:6:300:50:50:450:15:125:125:30:130:::::::::10::::2
1:2:5:2:20:0.5::0.5:5:2:2:2:2:5:1:500:500:::12:50:2:12
:15:20:1::::0.1:0.1::0.1::0.1:5:5:300::::35:400:2
5:4:2:2:2:2:1:3:5:2:3:2:1:20:2:100:30:2:10:4:20:20:20:3
:2:1:0.5:5:::1:2:1:1.5:2:0.5:20:1:0.125:2::4:2:40::3:0.5:::::::::3.5
4::2:2:2:1::1:2:1:2:2:1:16:1:50:20:2:8:3:2:5:6:3:::::::::::::2:::::::::::2
:2:12:1:1:::2:2:3:4:12:1:4:3:60:4::30::35:5::10
::16::::6:6:14::::8::9::230:::12:200::65:60
4:10:1::8::0.5:1.5:3::2::0.5:0.5:1:80:20:25::50::300:10:2:::::::::::::::::5
:5:10:5::::5:5::15::5:2:40::1000:500:45000:300
2:2:10:1:2:0.5::3:5:5:1:1:1:10:3:130:10::110:11::12:35
3.2:12:2:4:2:0.8:1.2:1.6:0.8:2:2:0.8:0.8:4:6:2000::40:600:12:1500:500:10:200:::::::::::::::::::::::::::::4
:2:4:2:2::0.5:8:0.5:0.5:2:::10:1:75:25:::2:6000:2:7:10:::::::::::1:::::::::::::2:0.5::::10
12:3:1:2:1:0.1::2:2:2:1:2:1:3:2:250:130::2:7:::6:::::::5:::::3::::::::::::3
:2:8:4:3:::1:5::4:3:2:8:3::::40:5:2:150:10:50:::::::::3::::::::::::2
3:1:1:2:7:2:1:4:2::2:3:2:4:2:150:20:2:3:3:::14:8::::::::::4:::::::::::::::::4::4
:8::2:2:::8::::10:1:2:8:::::20:::10:::::::::::::::::::::::::7:::::4
0.5:5:5:2:2:::10:5::1:2:1:5:1.5:35::2:33::10:20::20::::::::::::::::::::::::::::::10
::::2:::32::::::6:15:250:160::8:30:20:450:30
:1:1:2:5:1::5:2::1:3:1:18:6:1000::12:150:10:400:8000:10:10
2.5:5::2.5:2.5:::2.5:2.5:15::10::2.5:16:200:160::5:30:20:400:18::::::::::::::::5::::10:::::::::::5
2:1:0.5::0.5:0.5::0.5:1:5:0.5:1:0.5:27:1:40:20::12:2:60:5:4:::::::::::::2
:1::1:3:1::1:1::1:2:1:15:8:800:200:10:50:40:1000:10:150:50:::::::::::::::::::7:::::5:::::10
::::0.5:::::2::0.5:2:27:8:800:::10:2:20:20:40:10:::::::::8
2:2:0.5:1.5:3:0.25::5:2:2:0.5:1:2:20:2:120:100:50::6:10::36:40:::::::0.25:::::::::::::::::5::::::::4
:3:3:3:::2::5::2:5:2:10:5:250:200:30:50:20:500:500:4:10
:0.5::0.5:6:0.5::10:2:::3:1.5:5:1:30::::1:::13::::::::::::::::::::::5:::5:1
2.5:0.2:0.1:0.02:0.5:0.01:0:1:1:4:0.2:0.5:0.5:2:4.1:39::40::3:::10:::0.5::::2:::0.5:::::::3:::4:::::3
1:3::1:5::2:2:1:::5::10:1:45:25:8:2:2:1:1:20:4:::::::::7:::::::::::::::4
SHAR_EOF
chmod 0664 data ||
echo 'restore of data failed'
Wc_c="`wc -c < 'data'`"
test 9181 -eq "$Wc_c" ||
	echo 'data: original size 9181, current size' "$Wc_c"
fi
# ============= titles ==============
if test -f 'titles' -a X"$1" != X"-c"; then
	echo 'x - skipping titles (File already exists)'
else
echo 'x - extracting titles (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'titles' &&
BU	Backups
INST	H/W Install/Configure
NETM	Network Management
HW	Hardware
SW	Non-system Software
REST	Restores
YP	Yellow Pages/NIS
APP	Applications
DSK	Disk management
MGMD	Managing Subordinates
NETH	Network Hardware
SYSW	System Software
PERF	Performance
USER	Dealing with users
ADM	Number of sysadmins
NUSR	Number of FTE Users
DATW	Dataless Workstations
DSKW	Diskless Workstations
FULW	Dataful Workstations
SERV	Servers
PC	PCs
MAC	Macs
SGB	Server GB
WGB	Workstations GB
XXTRM	X-Terminals
MON	Monitoring
TEST	Testing
FTP	FTP'ing files
DB	DB maintenance
MGMU	Upper Management
BIND	Bind
UUCP	UUCP
MISC	Miscellaneous
POL	Policy issues
GROW	Personal Growth
ORDR	Ordering
VEND	Dealing with Vendors
PUBR	Public Relations
PLAN	Planning
DOC	Documentation
SNDM	Sendmail
DEMO	Demonstrations
READ	Reading
PRNT	Printers
MAIL	EMail
TRAV	Travel
PROP	Proposal writing
MEET	Meetings
PW	Passwd file maint.
STAF	Staff issues
SEC	Security
PROB	Problem Solving
DEV	SW Development
EVAL	Evaluating products
NEWS	Reading news
CSS	Customer service functions
SHAR_EOF
chmod 0664 titles ||
echo 'restore of titles failed'
Wc_c="`wc -c < 'titles'`"
test 1035 -eq "$Wc_c" ||
	echo 'titles: original size 1035, current size' "$Wc_c"
fi
# ============= get.perl ==============
if test -f 'get.perl' -a X"$1" != X"-c"; then
	echo 'x - skipping get.perl (File already exists)'
else
echo 'x - extracting get.perl (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'get.perl' &&
#!/bin/perl
X
open (IN, "data") || die "Can't open data";
$i = 0;
chop($in = );
foreach (split (/:/, $in)) { $col{$_} = $i++; }
X
die "Need arguments" if $#ARGV < 0;
X
open (TIT, "titles") || die "Can't open titles";
# BU	Backups
while () {
X	chop;
X	split(/\t/, $_, 2);
X	die "Invalid title fieldname --$_[0]--" if !defined($col{$_[0]});
X	$tit{$_[0]} = $_[1];
}
close (TIT);
X
@gets = @ARGV;
foreach (@gets) {
X    die "Invalid field name `$_'" if ($col{$_} eq "");
X    push (@fieldnums, $col{$_});
}
X
$first = 1;
foreach (@gets) {
X    print "$tit{$_}" if $first;
X    print ":$tit{$_}" if !$first;
X    $first = 0;
}
print "\n";
X
$# = "%.2g";
$" = ":";
X
while () {
X    chop;
X    @a = (split (/:/))[@fieldnums];
X    $sum = 0;
X    grep (($sum += ($_ eq "" ? $_ += 0 : $_)), @a);
X    if ($sum > 0) { print "@a"; print "\n"; }
}
close (IN);
SHAR_EOF
chmod 0775 get.perl ||
echo 'restore of get.perl failed'
Wc_c="`wc -c < 'get.perl'`"
test 842 -eq "$Wc_c" ||
	echo 'get.perl: original size 842, current size' "$Wc_c"
fi
# ============= hist.perl ==============
if test -f 'hist.perl' -a X"$1" != X"-c"; then
	echo 'x - skipping hist.perl (File already exists)'
else
echo 'x - extracting hist.perl (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'hist.perl' &&
#!/bin/perl
# read in a title then some numbers then build a histogram
X
chop($tit = <>);
print STDERR "Working on $tit...\n";
X
while (<>) { chop; push (@data, $_); $sum += $_; $n++;}
X
sub numerically { $a <=> $b; }
X
@data = sort numerically @data;
X
$# = "%.3g";
# note that this is the mean of the nonzero items -- not of all items
print "$#data items; $data[0] -> $data[$#data]; mean = ", $sum/$n, "\n";
X
$lower = $data[0];
if ($lower >= 0.0 && $lower < 0.4) { $lower = 0.0; }
$range = $data[$#data] - $lower + 0.0005;
#what if range is 0.0 ???
X
$nbuckets = 15;
if ($range > 5 && $range < 20) { $nbuckets = $range; }
X
foreach (0..$nbuckets-1) { $bucket[$_] = 0; }
foreach (@data) { $bucket[ int (($_-$lower)/$range * $nbuckets) ] ++; }
X
$max = $bucket[0];
grep (($_ > $max? $max = $_:0),@bucket);
print "Max bucket is $max; \$\#bucket is $#bucket\n";
X
X
$lead = "  ";
$height = 15;
for ($i = $height-1; $i >= 0; $i--)
{
X	$lim = $i/$height*$max;
X	print $lead;
X	foreach (0..$#bucket) {
X		printf " %.1s ", $bucket[$_] > $lim ? "**" : "  ";
X	}
X	print "\n";
}
X
X
$# = "%4d";
X
print $lead;
foreach (@bucket) { printf ("%2d|", $_); } printf ("\n");
X
$# = "%g";
foreach (0..$nbuckets+1) { printf ("%2d/", $_/$nbuckets*$range+$lower); }
print "\n";
X
print " " x ((3 * $#bucket - length ($tit))/2), "--> $tit <--\n";
print "-" x 78, "\n";
SHAR_EOF
chmod 0775 hist.perl ||
echo 'restore of hist.perl failed'
Wc_c="`wc -c < 'hist.perl'`"
test 1328 -eq "$Wc_c" ||
	echo 'hist.perl: original size 1328, current size' "$Wc_c"
fi
# ============= table.perl ==============
if test -f 'table.perl' -a X"$1" != X"-c"; then
	echo 'x - skipping table.perl (File already exists)'
else
echo 'x - extracting table.perl (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'table.perl' &&
#!/bin/perl
X
# get names of categories
open (IN, "data") || die "Can't open data";
chop($in = );
foreach (split (/:/, $in)) { push (@cats, $_); }
X
# get extended titles
# BU	Backups
open (TIT, "titles") || die "Can't open titles";
while () {
X    chop;
X    split(/\t/, $_, 2);
X    $tit{$_[0]} = $_[1];
}
close (TIT);
X
# read and tabulate the data
$n = 0;
while () {
X    print STDERR "x";
X    chop;
X    @a = split (/:/);
X    for (0..$#cats) { 
X	$x = $a[$_] + 0;	# converts to number
X	$var = $cats[$_];
X	if ($x > 0 ) {eval "\$$var+=$x;";}
X	$x = int ($x+0.99);	# truncates-up
X	if ($x >= 10) {$x = 10;}
X	eval "\$$var\[\$x]++;";
X    }
#   if ($n > 20) { last; }	# for faster debugging
X    $n++;
}
close (IN);
print STDERR "\n";
X
print "  0 <=1 <=2 <=3 <=4 <=5 <=6 <=7 <=9 <=10 >10 AVG\n";
foreach $t (@cats) {
X    for (0..10) {
X        eval "\$x=\$$t\[$_];";
X        printf ("%3d ", $x);
X    }
X    eval "\$avg=\$$t/$n";
X    printf "%4.1f %s\n", $avg, $tit{$t};
}
SHAR_EOF
chmod 0775 table.perl ||
echo 'restore of table.perl failed'
Wc_c="`wc -c < 'table.perl'`"
test 970 -eq "$Wc_c" ||
	echo 'table.perl: original size 970, current size' "$Wc_c"
fi
exit 0
-- 

         /\      Rob Kolstad           Berkeley Software Design, Inc. 
      /\/  \     kols...@bsdi.com      7759 Delmonico Drive
     / /    \    719-593-9445          Colorado Springs, CO  80919

			  SCO's Case Against IBM

November 12, 2003 - Jed Boal from Eyewitness News KSL 5 TV provides an
overview on SCO's case against IBM. Darl McBride, SCO's president and CEO,
talks about the lawsuit's impact and attacks. Jason Holt, student and 
Linux user, talks about the benefits of code availability and the merits 
of the SCO vs IBM lawsuit. See SCO vs IBM.

Note: The materials and information included in these Web pages are not to
be used for any other purpose other than private study, research, review
or criticism.