IT Jobs and Working Conditions

Mark Glossop has written about the best designs for offices to increase productivity and attract qualified staff [1]. He makes a lot of really good points and cites the Joel on Software blog post about “Bionic Offices” [2], it’s sequel “Updated Offices” [3], and Joel’s “Field Guide to Developers” [4]. Interestingly Joel disclaims a connection to “stereotypical Asperger’s geeks” while his points about private offices to avoid distractions, technical issues trumping politics, letting developers choose their own projects and tools, and making the company seem to be doing things that are good for society would apply well to people with Asperger Syndrome [5].

While Mark has made some great points, he has totally missed one important issue – that of being able to do some useful work. The section about “no dysfunctional politics” in Joel’s Field Guide does to some extent cover that issue if broadly interpreted. But generally anyone who is good at a job will want to be allowed to do it and anything which prevents them will make “work” less pleasant. I wonder if Mark has been fortunate enough to miss out on the experience of working for a company that has problems which are suitable for submission to The Daily WTF (Curious Perversions in IT) [6].

The Worst Company I have Worked for

The worst environment that I have ever worked in was for a financial organisation. They were proud of providing a good working environment, all Occupational Health and Safety issues were properly addressed, the office was always clean, etc – many of the people who worked there considered themselves to be fortunate to work there. But almost no work was done due to foolish paperwork! The worst example was a bug in an Apache module that caused an Intranet server to hang every couple of days, the symptom was trivially fixed by restarting Apache or it could have been worked around by a cron job that restarted Apache every night at midnight (the web application was only used in business hours). But instead every few days there were a few hours of down-time while managers worked together to get appropriate approval for me to restart Apache.

On one of the first occasions that Apache hung I asked my manager if I should restart Apache and get the paperwork done afterwards (which is standard system administration practice in every office where you would want to work). I was told that anyone who did such a thing would be sacked and slandered to try and prevent them from gaining other employment. It’s generally regarded that a wise manager won’t say anything bad about a former employee when asked for a reference due to legal reasons, it’s the absence of good things being said that indicates a problem. Deliberate slander would be good grounds for a law suit, but it seems that the management of some companies think that they are above the law.

When I resigned I told my managers that I was depressed and couldn’t stand being there.

In future I will try and identify such companies and walk away from job interviews. I will ask about the paperwork requirements and also ask to inspect the workstations that are used. Any company that pays top rates to people while forcing them to use workstations that would be in the rubbish at any normal company is obviously extremely dysfunctional and should be avoided.

The Best Company I have Worked for

I have worked in a few environments that were really good by various objective measures. One that stands out as being a little better than the rest is a small company that provides network support services. A large part of their business involved maintaining network gear for medium sized organisations. Small companies tend to have financial problems and this one was no exception, there were minor issues such as holes in the carpet that would have been regarded as OH&S violations at any corporation – but everyone knew that it was best to just walk carefully and not complain so that there was money for more important things (such as payroll). Of course many other aspects of a good working environment (such as good office furniture and good monitors) were also lacking due to financial issues. So by the Joel’s standards they were doing quite badly – but this didn’t make them a bad employer.

One significant positive aspect of this company was that everyone there was really friendly, I don’t know how much of this was due to hiring nice people and how much of it was due to having a positive social environment that encouraged the best behavior from everyone. Another major benefit was that things got done with little resistance, small companies that last tend not to have much in the way of political problems. Joel states a principle of not hiring jerks, but an average person can act like a jerks on a bad day. To have a team of people consistently not act like a jerks is unusual.

Another big advantage of that company was it’s positive and supportive attitude towards staff. When I started working for them my car was having some major repairs, so the owner of the company lent me a car for a couple of weeks. Staff who wanted to apply for work at bigger companies due to the limits for career growth in a small company were encouraged to do so. This is a great contrast to the attitude of managers in most companies who want to do whatever it takes to retain staff and who are reluctant to accept that employees will sometimes have good reasons for working elsewhere. This was good for employees and also good for the company who ended up with a ratio of payroll expenses to skilled employees that was far better than the industry average.

Update: ComputerWorld has an article about managing geeks [7]. The summary is that senior managers should listen to the technical professionals, have some basic technical knowledge, and that IT staff should be involved in recruiting new managers.

The Millennium Seed Bank

Jonathan Drori gave an interesting TED talk about the Millenium Seed Bank [1]. The potential for discovering new uses of plants for food, medicine, and construction is obvious, so it also seems obvious to me that we should preserve as many varieties of plant as possible to allow for future uses. As well as those obvious uses there are other potential uses of plants to cope with the changing climate and new diseases. Seeds from salt-tolerant plants have already been sent to Australia to help deal with the salinity problems related to the ongoing process of desertification and excessive use of bore water.

The seeds are stored in bunkers that are designed to withstand nuclear attack, I doubt that such protection will be necessary – or that it would be successful it it was needed.

Jonathan also gave a TED interview with more detail on this topic [2]. One particularly interesting issue is the work on testing seeds for viability and for developing germination protocols to specify the best combination of changes in temperature, moisture, etc to germinate seeds. This research seems to have a lot of potential to improve crop yields.

He mentioned in passing a project to collect folk-tales related to plants which apparently has led to some scientific discoveries.

A related project is the Norwegian Svalbard seed vault which seems mostly aimed at crop seeds [3]. The main difference is that Svalbard provides black-box storage (like a bank safe-deposit vault) while the Millennium Seed Bank owns the seeds. Incidentally the Bill and Melinda Gates Foundation provides significant support to Svalbard (so Bill does do some good things).

One thing that seems strange to me is the fact that governments are prepared to spend such large amounts of money on anti-terrorism but spend so little on seed banks and other projects that can help protect the food supply. If a country such as Australia (which exports a lot of food) was suddenly unable to produce enough food to even support the local population then the consequences would be much worse than anything Osama could dream up.

8

Actually You Do Care

A reasonably common feature in Internet debates is that of one party claiming to not care about the issue. Statements such as “I haven’t got time to debate this” or “I’m not interested” are used to try and disclaim any interest in the topic. Such claims are silly and rather amusing.

Outside the Internet it does make sense to say “I don’t care” because interactions are between small numbers of people. Telling a tele-marketer that you don’t care about their product is part of the process of getting them to stop calling you. But it doesn’t make sense in interactions between large numbers of people.

If there are 100 people on a mailing list then there will be a variety of opinions about any issue, but one thing you can count on is that the majority of people on the list are not interested in whether any individual cares about an issue. If there was a general desire to discover how many people cared about a topic of discussion then the way to determine this would be via an online poll. In almost every situation individuals saying “I don’t care” in email just isn’t a scalable solution. The only exception is when someone in a leadership position is asked for an opinion, in such a case a response is expected and if the leader actually doesn’t care then saying so and letting other methods be used to resolve the dispute makes sense.

One common case where an “I don’t care” message is seen is at the end of a long and heated discussion. After a discussion has gone on for a while (well beyond the point where it was obvious that no-one was going to change their position) one party might claim to not care or not have the time to debate the issue. But of course if they didn’t care at all or had no time then they wouldn’t have written any messages on the topic. If they had a limit to their time or care factor then they would probably have stated their opinion once and maybe written a single follow-up post clarifying the first one. Anyone who has written 6+ messages or a total of 1000+ words on a topic obviously cares and obviously has time. In such cases it seems that claiming to not care or not have time is a final desperate attempt at getting the last post on a topic by someone who subscribes to the “last post wins” school of online debating.

Another common case is when someone makes a point that is decisively refuted. The Internet is filled with people who can’t handle criticism and who can never leave any critical email without a reply. In such a situation claiming to not care is a way that such a person can protect their fragile ego even if the point is indefensible. One of the variations on this theme is to claim to be an expert who doesn’t care enough to educate people on mailing lists (or even provide a couple of URLs that reference what they need to know). As a hint, if you are going to claim to be an expert while making statements that disagree with notable experts in the field in question (professors at prestigious universities, Nobel laureates, or people who have demonstrated great practical success) then you really need to demonstrate your expertise and cite references.

While generally it’s the scope of the Internet that makes the “I don’t care” argument silly, it also doesn’t make sense in interactions via electronic media such as private email where a sender can be ignored. If you don’t care about a private email in reply to one of your messages then what you will do is simply delete it. Replying and saying “I don’t care” merely demonstrates that you do care, invites another reply, and shows that you have a fragile ego to protect. My general practice when dealing with such people is to send one reply to every message that they send me, such people typically demonstrate how much they care by sending me more than a dozen messages explaining in detail how much they don’t care.

Another variation on the theme of private correspondence is people who write blog comments that are obviously inappropriate and will not pass moderation. Someone who polls my blog to see if their comment has been approved and then writes an abusive comment when they discover that they fell well short of my comment quality standards obviously cares about having their comment published. To then claim to not care about whether their comment was approved is obviously a lie.

Google is almost entirely filled with things that I don’t care about. I demonstrate the fact that I don’t care about them by not commenting.

2

Linux Rate-Limiting of an ADSL Link

After great pain I’ve got tc working on some Linux routers. The difficulty with limiting an ADSL link is that the ADSL modem has significant buffers and the link between the Linux machine and the modem is significantly faster than the ADSL upstream channel. This means that the transmission speed needs to be artificially limited, a speed of about 95% the maximum channel speed is often recommended. As ADSL upstream speed often varies (at least in my experience) that means that you must limit the transmission speed to 95% of the lowest speed that you expect to see – which of course means a significant drop in performance when the ADSL link is performing well.

I use the HTB queuing discipline to limit the transmission rate. My transmission speed varies between 550kbit and 680kbit in my rough tests. So I start by limiting the overall device performance to 550kbit. Then I have three different classes with IDs 1:10, 1:20, and 1:30 with rates of 64kbit, 480kbit, and 128kbit respectively. It is often recommended that the inferior classes have a total bandwidth allowance that is equal to the allowance for the overall link, but I have the three inferior classes allocated with 672kbit – I think that this will work as it will be quite rare that all classes will be in operation at the same time and fairly unlikely that I will ever have all three classes running at maximum speed. I will be interested to see any comments about this, I might have misunderstood the issues related to this.

Each class has a SFQ queue discipline associated with it for fair queuing within the class. It might be a bit of overkill, I expect to only have one data channel in operation on the VOIP class so it probably does no good there and my usage pattern is such that if the 480kbit connection is anywhere near busy then it’s due to a single large transfer. But with the power of a P3 CPU applied to the task of routing at ADSL speeds it really doesn’t matter if some CPU time is wasted.

Then the tc filter lines associate iptables marks with the classes.

Now this is only a tiny fraction of what tc can do. But I think that this basic configuration with the rate limits changed will suit many ADSL router configurations, it may not be an ideal configuration for most ADSL routers but it will probably be a viable configuration that will be better than having no traffic shaping. Below is the shell script that I am using:

#!/bin/bash -e

DEV=ppp0

tc qdisc del dev $DEV parent root handle 1:0 2> /dev/null | true
tc qdisc add dev $DEV parent root handle 1:0 htb default 30

# limit the rate to slightly lower than DSL line speed
tc class add dev $DEV parent 1:0 classid 1:1 htb rate 550kbit prio 1

# sub classes for each traffic type
# 10 is VOIP, 20 is default, 30 is the test network
tc class add dev $DEV parent 1:1 classid 1:10 htb rate 64kbit burst 6k prio 2
tc class add dev $DEV parent 1:1 classid 1:20 htb rate 480kbit burst 12k prio 3
tc class add dev $DEV parent 1:1 classid 1:30 htb rate 128kbit burst 12k prio 4

# use an sfq under each class to share the bandwidth
tc qdisc add dev $DEV parent 1:10 handle 10: sfq
tc qdisc add dev $DEV parent 1:20 handle 20: sfq
tc qdisc add dev $DEV parent 1:30 handle 30: sfq

tc filter add dev $DEV parent 1: protocol ip prio 1 handle 1 fw classid 1:10
tc filter add dev $DEV parent 1: protocol ip prio 2 handle 2 fw classid 1:20
tc filter add dev $DEV parent 1: protocol ip prio 3 handle 3 fw classid 1:30

iptables -t mangle -F POSTROUTING
iptables -t mangle -A POSTROUTING -j MARK --set-mark 2
iptables -t mangle -A POSTROUTING -p tcp --sport 22 -j MARK --set-mark 3
iptables -t mangle -A POSTROUTING -d $VOIPSERVER -j MARK --set-mark 1

4

How not to write the way dumb people think smart people write

Don Marti has written an amusing and informative little post about the way that ill-educated people use phrases in print [1]. The one example that didn’t fit with the tone of his post was the use of “half mast” to refer to a flag on land, that one is used often enough (both in print and verbally) that intelligent people will make that mistake.

Here are some that he missed:

  1. The expression “bailing them out” can be used to refer to someone who helps someone escape from a difficult situation. That might refer to bailing water from a leaky boat or might refer to posting bail to secure someone’s release from prison while awaiting trial. It certainly doesn’t refer to baling which is the creation of a bundle (such as a bale of hay). I’m sure that a farmer would appreciate some help at baling time, but such help would hardly qualify as rescue from a difficult situation.
  2. The expression “woe is me” is used (usually in a sarcastic manner) to refer to someone who feels that their situation is sorrowful. It is not “whoah is me“, I suspect that the word whoah was invented long after the expression “woe is me” became commonly used.
  3. Made up words such as worserer and worstest. I can understand that people such as Keith Olbermann [2] may find it a challenge to describe some of the bad people in the world, but he is articulate enough to rise to that challenge while using real words.

Can anyone add any more to this list?

2

Expectations and Fandom

Russ Allbery has written about the hostile reactions of sci-fi fans toward the delay of a book release [1]. Russ makes some good points regarding the issue of whether paying $100 for some books entitles a reader to have the rest of the series written (in summary – no, the author owes the fans nothing). Russ also notes that when someone makes a public promise to do something (such as writing a book) they will probably be feeling bad about being unable to live up to that, and harassing them about it is not going to make them feel any better – or make them better able to do the work.

Charles Stross has written a blog post about this topic, he makes some interesting points and the comments illustrate most of them [2]. One comment claims that the author of the delayed book in question “flaunts his NFL watching” while the same person also criticises the author for writing a blog. This level of contempt for the author amazes me. In case anyone is interested I watch The Bill and Desperate Housewives every week. Anyone who wishes to criticise me for watching soapies instead of documentaries is welcome to do so. But I will not make any apologies for spending some of my time doing things other than coding. If I watch Desperate Housewives instead of fixing a bug that inconveniences you then you just have to deal with it. I believe that taking a regular break from work is a basic human right, apart from which there is evidence to show that working excessive hours decreases the quality and quantity of work that is completed [3].

It seems to me that members of the free software community are in a better position regarding fans than most creative people, and that this is largely due to how transparent the development process is. The most influential members of the user (fan) base are software developers. While people will be disappointed when software is not released on time or has some bugs many users know what is involved and understand that no testing will find all bugs. Even some basic shell scripting can teach people the difficulties of programming and convince them to have a little more patience than they might otherwise have. So the typical user of free software will have some idea of what is required to write software while the typical reader of a novel has no idea of what is involved in writing a book.

Another benefit for the free software community in this regard is the open development process. When users are unhappy about release delays (as some Debian users were before Lenny was released) they can easily look at the bug list. If a user is pushy they can be invited to fix some bugs themselves, if they investigate the matter and discover that the bugs are too difficult for them to fix then they will probably feel compelled to stop hassling the people who can fix the bugs. Complaints from users regarding the release process can be turned around with “the software is late because YOU haven’t fixed any bugs”. Please note that submitting bug reports is NOT criticism, it is in fact helping the development process (particularly when the bug reports contain information on how to fix the problems).

This exposes another significant difference between writing software and writing a book. Even if I was a talented author I would not be able to offer any assistance to an author who had trouble completing a work simply because I wouldn’t have the same vision for the plot of a book. But it’s not uncommon for software development projects to be “forked” if the users are unhappy with some aspect of how they work, and it’s also not uncommon for a programmer to voluntarily give one of their projects to another developer – sometimes developers try and convince other people to take projects from them when they don’t have enough time. Even without changing the ownership of a project, anyone can submit a patch. The patches that I have received from users of my software have generally been of a high quality and it has taken little work to merge them.

A final difference is that any programmer can produce a private fork of a project. I have lost count of the number of times that I have produced custom versions of free software for my own personal use or for the use of my clients. Sometimes the modifications that I made were unsuitable for wider use (IE they broke things for usage cases that I didn’t care about) so I just privately made the software do what I needed. This makes the upstream developer (or team) and other contributors irrelevant to fixing the problem in question.

Now this is not to say that the free software community is perfect. But it seems that certain types of bad behavior that we see demonstrated in the sci-fi fandom circles are uncommon and the people who demonstrate them are significantly outnumbered by people who oppose such actions. Publicly criticising a programmer for watching the NFL in their spare time is akin to holding a sign saying “kick me”.

As I am a fan of science fiction (and hope to write some in the near future) I wonder whether the sci-fi community could be changed to have a culture more like that of the free software community.

The web site 365tomorrows.com publishes a short sci-fi story every day [4], they have been doing this for a few years now. They started out publishing work by a small team of authors with the aim of writing a story a day for a year. Now they also take submissions from users and they have a forum for budding authors to discuss their work. The site Protagonize.com is based on the idea of collaborative fiction [5]. I wonder whether the increasing number of sci-fi fans who join such forums will change the nature of the community. Maybe when a book is delayed the fans could take comfort in an increasing amount of fan-fiction based on characters from that book, I expect that the fan fiction will probably not impress all authors – and some may be offended by having their characters used in pornographic fan fiction. But that might just lead to a market shift towards authors who are not overly concerned about such things.

When attending sci-fi book signings I’ve noticed fans who appear to have stalking tendencies. I have been wondering how much of this is another symptom of the same problem and how much of it is due to science fiction attracting some people who don’t understand the concept of personal space and who haven’t considered the mathematics of interactions between famous people and fans – as one of many fans the famous person will not remember your fan letters or whether they have met you before, it’s not possible.

I look forward to the day when a well known author can have lunch with some fans after a book signing and not be afraid of weird fans. I wonder if Cory Doctorow [6] already has such cool fans, Cory seems to be one of the leaders in the new open way of writing and releasing sci-fi so it seems likely that he would be among the first to reap the benefits. I’m sure that most authors would like to have lunch or dinner with their fans if they could be assured that the probability of getting stuck with a nutty fan was extremely low.