Friday, January 28, 2011

The whole employee

The latest buzz in HR is to provide financial management advice to employees, to avoid situations where you give employees a $300 a month raise and they go get themselves a $400 a month car payment.

It opens an interesting question: how much of your employees personal life is your business? Sometimes employees make it your business in their raise requests. But in general what is the right balance?

I think the answer lies in the difference between being helpful and being intrusive. If it is offered as resources to employees to make them happier, and happier employees are more productive, with the recognition that it is personal and not something you can push, then it is certainly worth doing.

However, if you think that micromanaging your employees lives is the way to make them satisfied with their salary, I don't see how anything gets better.

Monday, July 12, 2010

Why AGPL (and to a lesser degree GPL) is a business problem

iText went AGPL. On their page they list two additional requirements, and the AGPL does give the licensor the ability to add certain restrictions. One of them is:

In accordance with Section 7(b) of the GNU Affero General Public License, you must retain the producer line in every PDF that is created or manipulated using iText.

That didn't really meet my understanding of section 7(b), so I asked the Free Software Foundation for a clarification:

I read that portion of the license and it says:

Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:

...

b) Requiring preservation of specified reasonable legal notices or
author attributions in that material or in the Appropriate Legal
Notices displayed by works containing it;


I would understand “that material” to be the source code, and they can require retaining the author attributions and legal notices in their source code. However a restrictions that says you cannot change how the source code performs its function, or require that it put specific text in an output result of the software would seem to not be authorized by section b, and it would seem to violate the letter and spirit of the AGPL. Can you please clarify?

Thank you very much.

Francois Marier was kind enough to get back to me and replied:

Section 7(b) allows you to add either or both of two separate things.
First is "Requiring preservation of specified reasonable legal notices or author attributions in that material" -- and you're right that "that material" here is source code that you add to the software (per the paragraph at the top of the list in section 7). So the requirement in question does not meet that criteria.

The second thing it allows you to add is a requirement to add similar text "in the Appropriate Legal Notices displayed by works containing it." This goes beyond the source code: per the definition of Appropriate Legal Notices in section 0, these appear in interactive user interfaces provided by the software. However, that still doesn't go so far as including notices in the noninteractiveoutput of the program. So the requirement does not meet this criteria either, and is not acceptable under section 7(b).

Please note that this is not legal advice.

So given the above if you were a company that had a business model that would involve distributing AGPL software, and you wanted to use something from some other Vendor plus iText, you would have a real problem. On the one hand, iText is giving you a non-AGPL compliant license restriction, on the other hand, it is their code, they can do that if they want to. Even if the FSF has a problem with taking and modifying the AGPL for your own purposes, that would be between iText and them, it would not automatically entitle you to use iText under a pure AGPL. Maybe you could make that case in court, but who would want to take that chance?

So the bottom line is that the ability to add restrictions of a limited type, coupled with the inability to add further restrictions can take the whole GPL/AGPL license into a host of incompatibilities. I hope the FSF figures out a better solution for the next version.

Friday, May 07, 2010

Thoughts on Windows 7

So why is Windows 7 so much better received than Vista? My guess is simply that it is backwards compatible with Vista, and the pain of the transition was already taken out on Vista. If Windows 7 came first I think it would have had the same problems.

(BTW, what is the 7 in Windows 7? 7 from what? If Windows 95 was 4, then 98 was 5, ME 6 and XP 7. If NT was 4.0, then 2000 was 5, XP 6 and Vista 7. Why 7? Wikipedia says that 2000 was 5 and XP was 5.1, so Vista was only 6, but then Windows 7 is really only 6.1. I remember when Microsoft justified its moving away from version numbers with Windows 95 by saying everyone was confused by them.)

Need a new Job

It is almost impossible to imagine that a profitable company functions this way, but courtesy of the blog Statically Typed by wheaties we have one horror story after another. Just wow. And he tags it Mea Culpa!

I think the most unbelievable part of the story is the part about how subversion hiccuped on them and they therefore threw out version control (!!!). Of course the naming convention on the file system isn't going to do much good if that hard drive crashes. Do these people even know what backups are???

Whatever it is, I want to know where he works so I can be sure to never, ever buy any of their products.

Tuesday, January 26, 2010

Business Management and the Scientific Method

It is pretty rare that I read a Bob Lewis column and find myself not only disagreeing with everything in it, but finding that it didn't give me any new insights.

This is one of those rare exceptions.

He starts with a description of how debates settle nothing but the question of who is the better debater. The problem is he then misses the point:

When I listen to a debate, at the end I’m only persuaded as to which of the two opponents is the superior arguer. I’m not convinced one position is superior to the other because the whole point is that the superior debater could just as easily persuade me of the opposite proposition.


The real takeaway from that observation is that any debate essentially demonstrates who is the better debater. In order know which one is right, you have to understand what they are saying, know how to look at evidence beyond what either of them may have presented, and know how to decide which one is correct. The key point being that this is true whether or not the debaters passionately believe in what they are arguing or they are just an advocate for a client. The pureness of motives of the debaters doesn't affect this, it is a matter of the effect on the listener.

Missing that point he then goes on to the scientific method, extolling the virtues of two debaters (Leonard Susskind and Stephen Hawking) because their motives were pure. But in reality if you don't understand the subject matter of the debate, you are only judging by the debating skills of the two.

To compound the error, the article completely misses the different techniques that the scientific method has developed to insulate the biases (such as falling for superior debating skills) from effecting the results of the research, and instead seeks to apply the scientific method of falsifiable predictions. He explains:

Here it is: Scientists understand they can’t ever prove a theory. All they can do is try to disprove them (”falsify them,” according to the vocabulary introduced by Karl Popper, the epistemologist who first explored this subject in depth). Fail to falsify one enough times in enough ways and researchers start to gain confidence that they’re on the right track.

The way they try to falsify a theory is to explore its implications. Some of those implications result in predictions — that under a specific set of conditions, the researchers should be able to observe a specific phenomenon. The researchers then either create those conditions or find them, and either observe the predicted phenomenon or something different. If they observe something different they’ve falsified the theory.


He then sets up what are essentially straw man predictions and attempts to apply them to IT theories that he doesn't like. However, having dropped one of the main controls for bias in science (a reproducible experiment), the value of the scientific method and its applicability to IT management is really no where supported by what came before it in the article.

Fans of the scientific method tend to not like the fact that it doesn't apply cleanly to all situations. Not all situations can be analyzed with repeatable experiments. And not all situations can make both accurate and meaningful predictions. IT governance is such an example.

In Bob Lewis' own words, here is the prediction he ascribes to the view that IT should be run as a business:

For example, if IT organizations that are run as a business deliver more value than any others, then companies within which they are run this way should be more successful and profitable than competitors that don’t.

Except this would be a bad test. The theory isn’t that running IT as a business is better than the average of all other ways. The theory is that it’s best practice — that it is superior to all known alternatives.

So a better test would be to compare running IT as a business to a specific alternative. Here’s one: Integrate IT into the enterprise, providing strong strategic business leadership and disciplined governance. Compare the success and profitability of companies that use the two different approaches and you’ll have made a start.


The strawman here is idea that a given theory about IT governance predicts demonstrable "success and profitability." Sure, all things being equal, but they never are. Consider Company A, in 2006, heavily invested in Sub-Prime mortgages. Consider Company B, in 2006, heavily invested in Government work that was heavily funded by the American Recovery and Reinvestment Act (otherwise know as the Stimulus package). Is their theory of IT governance going to be the controlling condition of their success between 2006 and 2010?

I suppose you could argue that a good, strategic, IT organization would have predicted the risk of sub-prime mortgage investments, but even if the company had diversified, in mid-2008 it would have looked like a failure.

Of course I am picking on the most extreme, obvious example, but even something as simple as were you Starbucks or were you McDonald's at the end of 2008, what happened afterward (Starbucks down, McDonald's up) has nothing to do with IT governance, and even if Starbucks had the Integrated IT approach and McDonald's had the IT as a Business model, the "success and profitability" of each company in fact tells us nothing about their IT practices.

Wednesday, December 30, 2009

Every interaction is with a potential customer

Today I had to schedule a pickup of a FedEx package (being paid for by Dell, as it was a return of a defective DVD drive). The FedEx automated system online as well as over the phone require you to have a FedEx account in order to schedule a pickup. By the time I was being transferred to speak to a live person, I had no idea if they even would pick up the package. When I spoke to the real live person, they were very helpful and scheduled the pickup without problems, but the whole experience left me with the impression that FedEx would not be a good choice for a shipping company. I don't make that decision now, but I may in the future, and FedEx might have lost a customer simply because they didn't care enough about interactions with people who are not current customers.

Wednesday, June 17, 2009

JavaFX backwards compatability

Interesting to see that JavaFX isn't very finicky about backwards compatibility. Quite a contrast from Java. This tells me that it isn't very popular. I still haven't found a good Business toolkit for it.

Thursday, August 21, 2008

Microsoft's Vista blindspot

Microsoft has dedicated a whole website to try to convince people that Vista isn't so bad after all. The problem actually repeats one of Keough's descriptions of how he fell for replacing Coca-Cola with New Coke. His commandment is trusting outside experts, but what you really see is with New Coke you had user studies that showed people liked New Coke more in blind taste tests. What they missed is that people had an emotional connection with the old Coke, regardless of the sweeter taste.

Here Microsoft is missing that the issue with Vista is not the usability in a vacuum, it is what happens when you try to get it work with your legacy applications and hardware. No drivers, problems, upgrades required, and so on and so on. They don't test for that in their experiment.

This study has all the feel of some attempt at internal political justification, and not actually marketing a product anyone wants.

And I say this as someone who runs Vista and has no issue with it.

Thursday, July 03, 2008

The most important UI design advice you will ever get

Follow it and your users will thank you forever. Or even better praise - they won't notice at all, because it is so obvious to them that this is how it was supposed to work.

When static typing just won't do

Although I'm a fan of static typing, when calling web services, it just doesn't make sense. The amount of effort expended to typing the WSDL to make the code compile is already high, and then add the maintenance cost, it just gets unbelievable. Compare this in Ruby on Rails, compared to what it would take with axis. The difference is just obscene.

The only obvious conclusion is that you may run your code inside a JVM, but use JRuby or something else that is dynamic for the web services calls, if you have any significant web services to use.

The long term solution has to be to make the compiler understand a WSDL and do the static checking against that. It won't help if you want to dynamically discover web services at runtime, but that is really a separate problem from just needing to consume a web service in an application.

Sunday, June 15, 2008

Know your business

Via Instapundit we have this timeline of Wikipedia vs. the AP.

The problem for the AP is that they (should have) a lower tollerance for getting it wrong. I'll leave it to them to address their specific business problem, but the general lesson is to know your business, and not try to compete on the other guy's terms. Wikipedia has the luxury of a reputation which forgives inaccuracy under the premise that it is easily corrected. AP lacks that advantage, so instead of competing on speed, it needs to compete on its strength.

Many companies are afraid of this kind of competition, because it creates what is called differentiation, and when you are different, you risk losing business even if you execute flawlessly, because the market demanded what made the competition different from you, instead of the other way around. It is much easier to play it safe, especially with a boss, or a board, that will have no problem just retroactively deciding that being different was a bad decision. Playing it safe means being just like the other guy, just doing it better, or being able to hide behind the excuse that any failure wasn't do to execution of the concept, because you see your product competes feature for feature.

It is those that are in a position to take that chance, that can become the next Google.

Monday, May 26, 2008

When your business model is interupted

Here is a failure of imagination. No one knows how to make money on the Internet, or so conventional wisdom goes (don't tell them), so a business can reach millions more people, and lose more money. Like the music business, it is a failure to realize the changing realities and adjust to them. Of course, I wouldn't know how to make money in the business, which is why they don't pay me several million dollars a year. But there is clearly money to be made. They just forgot that their core selling point to consumers is hard-core news, not opinion.

Thursday, April 24, 2008

Vista's problem

So Microsoft sends out a list (via it's Microsoft at Work RSS feed) of the 10 top things about Vista. That is a very anemic list. With the exception of Windows Areo, everything on that list can be done in XP. And this is their top 10. No wonder they are having so many problems with it. It is Windows ME without the backwards compatibility.

Wednesday, March 19, 2008

Being pragmatic is good business

Let's face it, being pragmatic is always good business. The only time being idealistic is good business is when the market demands idealism. And then that is simply the pragmatic choice.

Monday, March 10, 2008

Dynamic typing and the IDE

In further researching dynamic vs. static typing, the obvious question is how can the IDE make you productive, suggest method names, if there is no such thing as an invalid method name at compile time? How can it show you the documentation behind the code, if it has no idea what that method name will actually resolve to?

One way is to analyze all the code that calls the method. Some new languages are doing that to guess the type without you having to spell it out.

But it can't help you create a missing method in the correct class, because it wouldn't know where it is supposed to go.

Dynamic typing is great for scripting, where a script is defined as something that is not large enough to be a problem to erase and recreate when it gets out of hand. In such a context, static typing is overkill.

In a larger project, with many different developers and more limited channels of communication, I'm still looking for how to overcome the problems. So far it seems that people just shrug off the problem as small in practice. I suspect that their practice involves more serious and disciplined programmers than a lot of us have the luxury of working with.

UPDATE: I guess integrating something like this would allow the IDE to understand what is going on. Of course that doesn't exist yet.

I can say from experience that having a method that cannot be safely renamed will cause larger projects to not have their methods renamed, causing the code to age. You might hope that a bad "search and replace" refactoring would get caught by unit tests, but if the search and replace was thorough, then it wouldn't. It would just be impossible to rename the method in a specific context.

Sunday, March 09, 2008

Much to learn

So I'm investigating Ruby on Rails (vs my more extensive background in Java) and I see this quote:
A solid suite of unit tests is every bit as good, if not better than, static-type checking. Because all you want in type checking is confidence that you haven't made the basic mistakes. A good set of unit tests will provide that for you.

I'm wondering what I am missing? The most common mistake in the lack of type checking is outside the unit. One class makes the mistake of calling this other class and they don't understand the type of the variable. Most commonly, it changes after it was first written. In fact, that is why those with a preference for dynamic typing like so much - you can change it so easily and just add a method.

So here I have a series of Unit Tests that check for one thing on one object, and a series of unit tests that make sure that when an external object is called, it will be called with the right parameters. Then I go and change that other class and all of its unit tests. How do I validate that all calling code kept up? A text search? But method names can be duplicated all the time.

I just don't get how static typing of an interface is not the only way to ensure that changes are propogated throughout the project. Of course many times you don't have that luxury (like when you are calling web services). But it seems like a good thing to have, unit tests or not.

Wednesday, March 05, 2008

The perils of customer service

Authorize.net took a dive in this web designer's view.

It just goes to show how a company can ruin 9 years of good service in two weeks. Two lessons:

1) The fact that someone wants to stop a current relationship doesn't mean they stop being an important customer. Treat them as such.

2) Your customers expect perfection. Aim to deliver.

Fortunately these days most companies don't differentiate themselves in customer service, so you don't have to work to hard to match them.

Of course you can never please everyone, and having an unhealthy need to please can be very distracting and unproductive. But here a great reference (and you have to think there are many more than one) was lost because of a drop in customer service. It matters, but companies don't know how to sell it, so they often skimp on it.

My worst experience was with a company that sold, for money, it support services (called Maintenance). When you called support you got someone with an Indian accent who didn't know, and who's manager didn't know, the meaning of the work "migrate." And this was a service they sold over and above the price of the product. The even solicited the business after we had let the maintenance laps. They won't get my recommendation again, even if their product is technically superior to the competition.

Tuesday, March 04, 2008

Conflicting Information

Courtesy of Slashdot we have this:

The study used energy company records from Indiana before and after that state mandated DST for all of its counties, and calculated that the switch cost Indiana citizens $8.6M per year. 'I've never had a paper with such a clear and unambiguous finding as this,' the professor said.

The recent changes to DST cost business an untold amount of grief, with old unsupported operating systems needing to be upgraded or patched by third parties just to deal with it, and even new software not functioning correctly until the patches are downloaded. So what lesson does a business learn from this?

One lesson is certainly that clear analysis is more important than acting on conventional wisdom. But more importantly, sometimes there are no clear answers. This is where leadership in business is so important. The leadership to decide when the evidence isn't all in and isn't attainable, and the leadership to stand behind that decision and make it work – but more importantly the leadership to know when something isn't working, and changing course where needed.

Government is not a business, and can't be expected to learn these lessons. But a business can, and should. Have you ever been on a project that was started under a premise that turned out to be false, and when that became known, it was more important to finish the project than to stop throwing good money after bad and admit that things were not as they seemed?

In a culture of blame, making such a decision is impossible. In a culture of accountability, where leaders are responsible to make the right decisions for the business based on the best facts they can get, a business can do so much better.

Monday, March 03, 2008

Undefined purpose

In Bob Lewis' book, he speaks about the importance of a project having a purpose. Often, in fact, a project has a purpose, but the purpose is vague. Especially in technology, people know that technology can lead them to great places, but they skip the part of thinking about how to get there. So it can look like a project has a great purpose, but place holders can become goals.

For example, a company may want to have very flexible software to be able to flexibly control business logic without development, increasing revenue by allowing the business to adapt quickly, and reducing on-going development costs. It will then decide that having a good workflow will help with this (the place holder).

Half way into the project, the workflow becomes the purpose, but the software ends up being very development intensive when it comes to the interaction with the user. The workflow, however, functions great. The goal was too hard, so a proxy was put in its place.

And the project was a great success, but not at doing anything anybody wanted.

Sunday, March 02, 2008

IT Flexibility

Bob Lewis asks how if it is practical for IT to provide Virtual Machines as sandboxes for users to experiment with.

On the core question, it may have to do with your user base. If you run a business with technically inclined staff, it would probably work very well. If, on the other hand, you are in a more typical company where one or two people per department are savy enough to set up that access database, the people who might leverage that access database would probably be challenged by dealing with a whole seperate operating system on top of their current machine.

You also have some serious security considerations - and what do you do if that access database needs to touch some data too sensitive to expose to the sandbox?

The bottom line is there is no good substitute for good IT leadership, where part of IT's mandate is to provide tools for users to inovate and improve the operations of the company through technology.