<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-12829596</id><updated>2011-12-12T14:03:22.538-05:00</updated><title type='text'>Whoever Says It</title><subtitle type='html'>Thoughts about business and how it is conducted</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://whoeversaysit.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12829596/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://whoeversaysit.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Yishai</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>30</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-12829596.post-6966213183147387409</id><published>2011-12-08T08:20:00.001-05:00</published><updated>2011-12-12T14:03:22.542-05:00</updated><title type='text'>Dave Ramsey and Employment discrimination</title><content type='html'>So &lt;a href="http://www.amazon.com/gp/product/1451617852/ref=as_li_qf_sp_asin_il_tl?ie=UTF8&amp;amp;tag=whosayit-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=1451617852"&gt;Dave Ramsey&lt;/a&gt; describes your potential employees fitting in with your philosophy. On page 143, he describes that as the "loving people" part of his philosophy. And those who don't get it as not understanding "when we stopped what we were doing and helped some hurting people." Very adroitly done to avoid an admition of religious discrimination.&lt;br /&gt;&lt;br /&gt;On page 219, he speaks about a "devotional" but couches it as motivational speakers. Quite grey.&lt;br /&gt;&lt;br /&gt;However, in his EntreLeadership &lt;a href="http://www.daveramsey.com/entreleadership/podcast"&gt;podcast #2&lt;/a&gt; he lets the mask slip. At 17:45 he says the "why" of his philosophy is "Because we are Christians." Who is the we in that sentence? He then goes on to expound on an example of "helping some hurting people." Namely: Praying for someone. So if you aren't the right religion, or you don't want to participate in a prayer session, you don't fit in.&lt;br /&gt;&lt;br /&gt;He may get away with it by staying in Nashville, but that stuff won't only get you sued in other parts of the country, you will lose (even in Nashville, it is still a Federal problem).&lt;br /&gt;&lt;br /&gt;Besides this, the book also encourages another form of discrimination, perfectly legal in Tennessee, but will get you sued in &lt;a href="http://www.unmarriedamerica.org/ms-statutes.htm"&gt;20 states&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Page 146:&lt;br /&gt;&lt;blockquote&gt;This may be the best advice in this whole  book ... we not only get to meet the hire's spouse and get to know them before they join our team, we can solicit their input on whether they think this position will work for their spouse.&lt;/blockquote&gt;Asking them if they are married alone, with nothing else, is evidence of discrimination based on marital status. Anyway, in a lot of the country it won't do you much good in addressing the concern because "living in sin" is very common. Will you ask them if they have a roommate too?&lt;br /&gt;&lt;br /&gt;However, besides for evidence, we have the advocacy of actual discrimination based on marital status:&lt;br /&gt;&lt;br /&gt;Page 152:&lt;br /&gt;&lt;blockquote&gt;I also won't let a team member stay if they decide to have an affair. If their spouse can't trust them, neither can I.&lt;/blockquote&gt;If an employee sleeps with someone, that's OK. If they were married to someone else, they are fired immediately. That is discrimination based on marital status. This is legal in Tennessee, but Dave Ramsey really makes himself look ignorant (I don't doubt that he actually knows this is a problem) here when he pretends this is not a problem for a significant portion of his audience.&lt;br /&gt;&lt;br /&gt;Anyway, the bottom line is that today, common sense is illegal - be prepared for it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12829596-6966213183147387409?l=whoeversaysit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://whoeversaysit.blogspot.com/feeds/6966213183147387409/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12829596&amp;postID=6966213183147387409' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12829596/posts/default/6966213183147387409'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12829596/posts/default/6966213183147387409'/><link rel='alternate' type='text/html' href='http://whoeversaysit.blogspot.com/2011/12/dave-ramsey-and-employment.html' title='Dave Ramsey and Employment discrimination'/><author><name>Yishai</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12829596.post-8232833284537345906</id><published>2011-09-08T08:22:00.002-04:00</published><updated>2011-09-08T08:24:01.120-04:00</updated><title type='text'>Why Swing Sucks</title><content type='html'>The &lt;a href="http://weblogs.java.net/blog/alexfromsun/archive/2011/09/07/swing-better-world-compound-components"&gt;mouse listener edition.&lt;/a&gt;.&lt;p/&gt;Of course pot shots are easy. How would you do it better? First, the most frustrating thing about Swing is the inability to have a reasonable default behavior. You spend a lot of time getting stuck on silly minutia like this.&lt;p/&gt;Second, consider what the opposite behavior would look like. Mouse exited happens when the mouse leaves the entire space occupied by the panel, not just its visible part. Then the same solution would apply, just in the reverse. If you want the mouse to exit when it hovers over a different component, you have the same workaround. Which is the more likely, understood, default behavior?&lt;p/&gt;The answer is probably different per component.&lt;p/&gt;Which is why the listener framework is irredeemable in Swing - the listeners are just too dumb to be anything but a struggle.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12829596-8232833284537345906?l=whoeversaysit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://whoeversaysit.blogspot.com/feeds/8232833284537345906/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12829596&amp;postID=8232833284537345906' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12829596/posts/default/8232833284537345906'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12829596/posts/default/8232833284537345906'/><link rel='alternate' type='text/html' href='http://whoeversaysit.blogspot.com/2011/09/why-swing-sucks.html' title='Why Swing Sucks'/><author><name>Yishai</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12829596.post-2232981111650142479</id><published>2011-08-22T14:20:00.001-04:00</published><updated>2011-08-22T14:20:45.686-04:00</updated><title type='text'>How not to apply for a Job</title><content type='html'>So our company put out a job offer, and asked for Resume and cover letter. We get back an e-mail that says:&lt;br /&gt;&lt;br /&gt;Subject: Job offer&lt;br /&gt;From: n....@yahoo.com&lt;br /&gt;&lt;br /&gt;Salary range? Benefits?&lt;br /&gt;Thanks and good shabbos&lt;br /&gt;Sent from my Verizon Wireless BlackBerry&lt;br /&gt;&lt;br /&gt;No resume, no cover letter and no name, for a job that specifically advertized the need to have strong writing skills. Needless to say, I didn't respond.&lt;br /&gt;&lt;br /&gt;Yes, the unemployment rate in this state is a bit over a full percentage better than the national average, but really? This person, whoever they are, is going to be wondering for a long time why they can't find a job.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12829596-2232981111650142479?l=whoeversaysit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://whoeversaysit.blogspot.com/feeds/2232981111650142479/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12829596&amp;postID=2232981111650142479' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12829596/posts/default/2232981111650142479'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12829596/posts/default/2232981111650142479'/><link rel='alternate' type='text/html' href='http://whoeversaysit.blogspot.com/2011/08/how-not-to-apply-for-job.html' title='How not to apply for a Job'/><author><name>Yishai</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12829596.post-2249852933239397142</id><published>2011-05-02T16:16:00.002-04:00</published><updated>2011-05-02T16:16:45.729-04:00</updated><title type='text'>So what is wrong with Properties in C#?</title><content type='html'>&lt;a href="http://martinfowler.com/bliki/UniformAccessPrinciple.html"&gt;This&lt;/a&gt; has to be the best argument against them. But I'm not enough of a purist to say it wins the day.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12829596-2249852933239397142?l=whoeversaysit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://whoeversaysit.blogspot.com/feeds/2249852933239397142/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12829596&amp;postID=2249852933239397142' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12829596/posts/default/2249852933239397142'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12829596/posts/default/2249852933239397142'/><link rel='alternate' type='text/html' href='http://whoeversaysit.blogspot.com/2011/05/so-what-is-wrong-with-properties-in-c.html' title='So what is wrong with Properties in C#?'/><author><name>Yishai</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12829596.post-220549071779984589</id><published>2011-03-30T15:06:00.000-04:00</published><updated>2011-03-30T15:06:28.726-04:00</updated><title type='text'>But not quite ...</title><content type='html'>So what went wrong with checked exceptions? Well, they try to force a programmer to think about something that they don't want to, and prevent them from thinking about what they do want to.&lt;br /&gt;&lt;br /&gt;So they turn them off, swallowing exceptions left and right. Just letting an exception propagate is much better than swallowing all the time. So what happens is that Checked Exceptions become just as important in an API design as the method name, return type or parameter list as far as the compiler is concerned, but from the point of view of the API designer or the programmer, they are just not very important and tend to be forgotten, causing pain in the API.&lt;br /&gt;&lt;br /&gt;Ironically, it is precisely Java where this is a problem. Java is a language of corporate development. Corporate development doesn't generally involve a great amount of thinking about such high level robustness, so a typical Java developer is all the more likely to look at their code and say: "It compiles, it runs, looks good." and not think about error scenarios. It litterally never occurs to them.&lt;br /&gt;&lt;br /&gt;Of course not all Java developers, but enough that it matters.&lt;br /&gt;&lt;br /&gt;So I think the correct ballance in such a language is to have compiler warnings. Let the compiler tag classes that can throw checked exceptions, and if you fail to deal with them explicitly (throws or catch) then it will generate a compiler warning. You either care about that or you don't, but you are not swallowing exceptions.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12829596-220549071779984589?l=whoeversaysit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://whoeversaysit.blogspot.com/feeds/220549071779984589/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12829596&amp;postID=220549071779984589' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12829596/posts/default/220549071779984589'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12829596/posts/default/220549071779984589'/><link rel='alternate' type='text/html' href='http://whoeversaysit.blogspot.com/2011/03/but-not-quite.html' title='But not quite ...'/><author><name>Yishai</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12829596.post-5214916630177576020</id><published>2011-03-23T10:54:00.000-04:00</published><updated>2011-03-23T10:54:44.644-04:00</updated><title type='text'>In Defense of Checked Exceptions</title><content type='html'>I fought in the Checked Exceptions wars, much like your father ...&lt;br /&gt;&lt;br /&gt;I have been defending Checked Exceptions since 2004, but lately I have been thinking that it just doesn't fit with where Java is in the computing universe. Ironic since Java is the &lt;a href="http://en.wikipedia.org/wiki/Exception_handling#Checked_exceptions"&gt;only language&lt;/a&gt; that has them as a compile time constraint (to my knowledge).&lt;br /&gt;&lt;br /&gt;Just to reiterate, this is my argument. A followup post will explain why I am walking away from it.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;A potentially cogent argument for checked exceptions:&lt;br /&gt;&lt;br /&gt;An overly simplistic way of thinking about checked exceptions is that if given the exact same input parameters, the method could sometimes throw an exception, and sometimes not, then that exception should be a checked exception. It tells the user of the API that this is an error condition that they cannot account for ahead of time, prior to calling the method. The programmer writing good code that works needs to realize that his or her application must handle that situation. If by handle that means "crash" then converting to a runtime exception may indeed be appropriate, but that is the clients choice, not the API's.&lt;br /&gt;&lt;br /&gt;This is overly simplistic because not all appropriate checked exceptions would fit in this parameter, and there are always grey areas, but this guideline may help develop a reasonable API.&lt;br /&gt;&lt;br /&gt;Good examples of such exceptions would be SQLException and ClassNotFoundException. The class being loaded by reflection by definition may not actually be in the classpath at runtime (if you could be sure that it would, you wouldn't need reflection). The database may not be working, or not reachable, at run time.&lt;br /&gt;&lt;br /&gt;For operations which always fail given the same input parameters, a runtime exception could well be appropriate (such as ArrayIndexOutOfBounds) but should be documented in the javadocs so that users of the API know what parameters are valid.&lt;br /&gt;&lt;br /&gt;One thing which regularly trips up developers, even experienced ones, is that they think they have to handle the "Exception" and not the problem it represents. For example, one of the arguments (expressed here) that checked exceptions are not appropriate is that the caller isn't in a position to deal with the exception.&lt;br /&gt;&lt;br /&gt;This is really backwards thinking. When you call a method which relies on a database connection (or other volatile resource such as a file or server connection), you have to know that you may not get what you asked for. Returning null is only appropriate if you could expect to get null legitimately (a value in a column of a database, for example), and the method should be documented to return null. A checked exception means you have to think about what to do about the fact that the method cannot guarantee a consistent result. That is what a checked exception should be telling you: Hey, this may not work out, what do you want to do about that? How do you want to solve the problem when the database went down, or is misconfigured, or whatever?&lt;br /&gt;&lt;br /&gt;You should wrap the checked exception when you want to abstract it. For example, if you are writing a datasource API which can flexibly get from a flatfile, a JDBC datasource and/or an XML file, you would want to wrap the various exceptions so that calling programs don't care which one was actually used. But in all cases they are volitile, and may not be available or properly configured at runtime, so the wrapper should be a checked exception.&lt;br /&gt;&lt;br /&gt;What to do about exceptions through an interface which cannot throw checked exceptions (Say Comparable, or an ActionListener or the like)? The first thought should be that what the API is telling me is that my operation should be guaranteed. If pressing a button hits the database, then before this method ends, I have to inform the user of failure, and do whatever I wanted to do about that failure, so the event queue can continue on its merry way not caring about the result. Otherwise, the user presses the button, and simply nothing happens. Is that what you want? Comparable is saying: this operation has to work out, with a deterministic result. If it doesn't, it is up to the implementor to figure it out, not the client. It is either greater than, less than, or equal to. There is no option of "I can't figure it out, sometimes." If I always can't figure it out given this input, on the other hand, this is often a ClassCastException, an appropriate use of a runtime exception.&lt;br /&gt;&lt;br /&gt;I think this leads to the core problem: Some programmers view checked exceptions as coding problems (how to handle them), not as design considerations (how to construct a program which handles serious potential environment errors in a robust way), and therefore don't handle them properly.&lt;br /&gt;&lt;br /&gt;If your answer is that my system assumes that the runtime environment is pristine and never fails, and that level of robustness (or lack thereof) is acceptable to you, then indeed wrap exceptions in a runtime exception. It is a step above swallowing the exception, although probably little better than catching Exception and logging the result. But that is the client's choice, not the API's. The API is telling you something will go wrong which you could not account for programmatically. It is up to you if that bothers you.&lt;br /&gt;&lt;br /&gt;In large applications where Exception swallowing becomes the norm, I would bet that that is a symptom of larger problems such as developers producing specific functionality, not well functioning programs, and/or a highly coupled system without clear boundaries of responsibility leaving it unclear when to pass exceptions and when to wrap them, or simply not caring about error handling. Error handling should be as much a requirement as the core functionality. If that requirement is crash early, crash often, then wrapping in runtime exceptions, or even swallowing may be appropriate. At least it is a deliberate decision, and having API's which throw checked exceptions encourage the deliberation, helping good programmers develop good code that works.&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12829596-5214916630177576020?l=whoeversaysit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://whoeversaysit.blogspot.com/feeds/5214916630177576020/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12829596&amp;postID=5214916630177576020' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12829596/posts/default/5214916630177576020'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12829596/posts/default/5214916630177576020'/><link rel='alternate' type='text/html' href='http://whoeversaysit.blogspot.com/2011/03/in-defense-of-checked-exceptions.html' title='In Defense of Checked Exceptions'/><author><name>Yishai</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12829596.post-6288808359262809336</id><published>2011-03-14T17:52:00.001-04:00</published><updated>2011-03-18T09:07:55.220-04:00</updated><title type='text'>Why multiple choice tests are a bad thing</title><content type='html'>&lt;a href="http://blogs.reuters.com/prism-money/2011/03/09/can-you-pass-a-high-school-financial-literacy-test/"&gt;This&lt;/a&gt; is a great example of a bad multiple choice test. Multiple choice tests are hard to write because the one writing the question has to anticipate the misunderstandings that can occur. The first two questions are a disaster and the last one isn't any better. Let's take this a question at a time:&lt;br /&gt;&lt;br /&gt;1.    Sara works full-time at the Big Save store and earns $2,500 per month.  Who pays the contributions to Social Security on the $2,500 per month in wages she earns?&lt;br /&gt;A.    Only Sara.&lt;br /&gt;B.    Only Big Save, her employer.&lt;br /&gt;C.    Both Sara and Big Save, her employer.&lt;br /&gt;D.    I don’t know.&lt;br /&gt;&lt;br /&gt;So the question is "who pays?" I'm sure they are looking for C (even before checking the answers at the bottom), but in fact you could justify every single answer. From an economic perspective, the employer basis the salary it can pay on the added payroll tax and costs, so really Sara is paying for it in a lowered salary - certainly in the aggregate of all the Saras in all the Big Saves of the country. From the perspective of who writes the check, the answer is B. From the perspective of who sees what deduction on their income and or inflation in their payroll expense, that would be C. And of course you could write D just because the question is such a mess.&lt;br /&gt;&lt;br /&gt;2.    Amanda  has $5,000 saved up from working at different jobs.  She puts her money in a savings account that pays four percent a year in interest. How much money will be in her account at the end of the first year and at the end of the second year?&lt;br /&gt;A.     End of first year: $5,100; end of second year:  $5,400.&lt;br /&gt;B.     End of first year: $5,200; end of second year:  $5,400.&lt;br /&gt;C.     End of first year: $5,200; end of second year:  $5,408.&lt;br /&gt;D.    I don’t know.&lt;br /&gt;&lt;br /&gt;Well, this is a compound interest question. They want C. At least A and B are clearly wrong. But the real answer is D - there isn't enough information to know, as you don't know how often the interest compounds. The question assumes annually. I don't know any savings accounts yielding 4% currently, but I have never seen one compound only annually.&lt;br /&gt;&lt;br /&gt;5.  John drove his car to the local Gas and Shop store. On the way to the store he got distracted while talking to his friend in the car and hit a street sign. Neither he nor his friend was hurt in the accident, but the front end of the car was damaged.  What type of automobile insurance coverage will provide reimbursement for damages to his car?&lt;br /&gt;A.    liability.&lt;br /&gt;B.    collision.&lt;br /&gt;C.    comprehensive.&lt;br /&gt;D.    I don’t know.&lt;br /&gt;&lt;br /&gt;If you get collision *or* comprehensive, you will be covered. Technically when you read down the itemized list of insurance coverage, they may be broken out, but when people think of insurance they often think of levels, so liability is less than collision which is less than comprehensive. So B or C are both financially literate answers, unless you are an insurance agent.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12829596-6288808359262809336?l=whoeversaysit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://whoeversaysit.blogspot.com/feeds/6288808359262809336/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12829596&amp;postID=6288808359262809336' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12829596/posts/default/6288808359262809336'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12829596/posts/default/6288808359262809336'/><link rel='alternate' type='text/html' href='http://whoeversaysit.blogspot.com/2011/03/why-multiple-choice-tests-are-bad-thing.html' title='Why multiple choice tests are a bad thing'/><author><name>Yishai</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12829596.post-9132540012700801919</id><published>2011-01-28T00:44:00.000-05:00</published><updated>2011-01-28T00:44:27.486-05:00</updated><title type='text'>The whole employee</title><content type='html'>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.&lt;br /&gt;&lt;br /&gt;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?&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;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.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12829596-9132540012700801919?l=whoeversaysit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://whoeversaysit.blogspot.com/feeds/9132540012700801919/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12829596&amp;postID=9132540012700801919' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12829596/posts/default/9132540012700801919'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12829596/posts/default/9132540012700801919'/><link rel='alternate' type='text/html' href='http://whoeversaysit.blogspot.com/2011/01/whole-employee.html' title='The whole employee'/><author><name>Yishai</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12829596.post-7542170947929205954</id><published>2010-07-12T12:03:00.000-04:00</published><updated>2010-07-12T12:03:56.871-04:00</updated><title type='text'>Why AGPL (and to a lesser degree GPL) is a business problem</title><content type='html'>iText went &lt;a href="http://www.itextpdf.com/terms-of-use/"&gt;AGPL&lt;/a&gt;. 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:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;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.&lt;/blockquote&gt;&lt;br /&gt;That didn't really meet my understanding of section 7(b), so I asked the Free Software Foundation for a clarification:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;I read that portion of the license and it says:&lt;br /&gt;&lt;br /&gt;Notwithstanding any other provision of this License, for material you&lt;br /&gt;add to a covered work, you may (if authorized by the copyright holders of&lt;br /&gt;that material) supplement the terms of this License with terms:&lt;br /&gt;&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;    b) Requiring preservation of specified reasonable legal notices or&lt;br /&gt;    author attributions in that material or in the Appropriate Legal&lt;br /&gt;    Notices displayed by works containing it;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;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?&lt;br /&gt;&lt;br /&gt;Thank you very much.&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Francois Marier was kind enough to get back to me and replied:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Section 7(b) allows you to add either or both of two separate things.&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;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).&lt;br /&gt;&lt;br /&gt;Please note that this is not legal advice.&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;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 &lt;a href="http://www.gnu.org/licenses/gpl-faq.html#ModifyGPL"&gt;taking and modifying the AGPL for your own purposes&lt;/a&gt;, 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?&lt;br /&gt;&lt;br /&gt;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.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12829596-7542170947929205954?l=whoeversaysit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://whoeversaysit.blogspot.com/feeds/7542170947929205954/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12829596&amp;postID=7542170947929205954' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12829596/posts/default/7542170947929205954'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12829596/posts/default/7542170947929205954'/><link rel='alternate' type='text/html' href='http://whoeversaysit.blogspot.com/2010/07/why-agpl-and-to-lesser-degree-gpl-is.html' title='Why AGPL (and to a lesser degree GPL) is a business problem'/><author><name>Yishai</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12829596.post-1211514049044417786</id><published>2010-05-07T14:48:00.001-04:00</published><updated>2010-05-07T14:53:21.217-04:00</updated><title type='text'>Thoughts on Windows 7</title><content type='html'>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.&lt;br /&gt;&lt;br /&gt;(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? &lt;a href="http://en.wikipedia.org/wiki/Windows_7"&gt;Wikipedia&lt;/a&gt; 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.)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12829596-1211514049044417786?l=whoeversaysit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://whoeversaysit.blogspot.com/feeds/1211514049044417786/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12829596&amp;postID=1211514049044417786' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12829596/posts/default/1211514049044417786'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12829596/posts/default/1211514049044417786'/><link rel='alternate' type='text/html' href='http://whoeversaysit.blogspot.com/2010/05/thoughts-on-windows-7.html' title='Thoughts on Windows 7'/><author><name>Yishai</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12829596.post-7432192436315966351</id><published>2010-05-07T10:24:00.003-04:00</published><updated>2010-05-07T10:35:04.425-04:00</updated><title type='text'>Need a new Job</title><content type='html'>It is almost impossible to imagine that a profitable company functions this way, but courtesy of the blog &lt;a href="http://staticallytyped.wordpress.com"&gt;Statically Typed&lt;/a&gt; by &lt;a href="http://stackoverflow.com/users/178060/wheaties"&gt;wheaties&lt;/a&gt; we have &lt;a href="http://staticallytyped.wordpress.com/2010/05/06/are-test-machines-necessary/"&gt;one horror story&lt;/a&gt; after &lt;a href="http://staticallytyped.wordpress.com/2009/12/14/what-ive-done-wrong/"&gt;another&lt;/a&gt;. Just wow. And he tags it Mea Culpa!&lt;br /&gt;&lt;br /&gt;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???&lt;br /&gt;&lt;br /&gt;Whatever it is, I want to know where he works so I can be sure to never, ever buy any of their products.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12829596-7432192436315966351?l=whoeversaysit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://whoeversaysit.blogspot.com/feeds/7432192436315966351/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12829596&amp;postID=7432192436315966351' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12829596/posts/default/7432192436315966351'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12829596/posts/default/7432192436315966351'/><link rel='alternate' type='text/html' href='http://whoeversaysit.blogspot.com/2010/05/need-new-job.html' title='Need a new Job'/><author><name>Yishai</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12829596.post-1218098239808122565</id><published>2010-01-26T09:13:00.003-05:00</published><updated>2010-01-26T09:49:07.818-05:00</updated><title type='text'>Business Management and the Scientific Method</title><content type='html'>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.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.weblog.keepthejointrunning.com/?p=3317"&gt;This&lt;/a&gt; is one of those rare exceptions.&lt;br /&gt;&lt;br /&gt;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:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;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.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;The real takeaway from that observation is that &lt;span style="font-style:italic;"&gt;any&lt;/span&gt; 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.&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;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:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;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.&lt;br /&gt;&lt;br /&gt;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.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;In Bob Lewis' own words, here is the prediction he ascribes to the view that IT should be run as a business:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;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.&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;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.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;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 &lt;a href="http://en.wikipedia.org/wiki/American_Recovery_and_Reinvestment_Act_of_2009"&gt;American Recovery and Reinvestment Act&lt;/a&gt; (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?&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;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.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12829596-1218098239808122565?l=whoeversaysit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://whoeversaysit.blogspot.com/feeds/1218098239808122565/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12829596&amp;postID=1218098239808122565' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12829596/posts/default/1218098239808122565'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12829596/posts/default/1218098239808122565'/><link rel='alternate' type='text/html' href='http://whoeversaysit.blogspot.com/2010/01/business-management-and-scientific.html' title='Business Management and the Scientific Method'/><author><name>Yishai</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12829596.post-3901485240927891203</id><published>2009-12-30T09:04:00.002-05:00</published><updated>2009-12-30T09:15:27.608-05:00</updated><title type='text'>Every interaction is with a potential customer</title><content type='html'>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 &lt;a href="http://www.fedex.com/us/pckgenvlp/fcl/ship/pickup/index.html"&gt;online&lt;/a&gt; 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.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12829596-3901485240927891203?l=whoeversaysit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://whoeversaysit.blogspot.com/feeds/3901485240927891203/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12829596&amp;postID=3901485240927891203' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12829596/posts/default/3901485240927891203'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12829596/posts/default/3901485240927891203'/><link rel='alternate' type='text/html' href='http://whoeversaysit.blogspot.com/2009/12/every-interaction-is-with-potential.html' title='Every interaction is with a potential customer'/><author><name>Yishai</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12829596.post-6831445431486714375</id><published>2009-06-17T19:59:00.002-04:00</published><updated>2009-06-17T20:01:21.004-04:00</updated><title type='text'>JavaFX backwards compatability</title><content type='html'>Interesting to &lt;a href="http://javafx.com/docs/articles/javafx1-2.jsp"&gt;see&lt;/a&gt; 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.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12829596-6831445431486714375?l=whoeversaysit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://whoeversaysit.blogspot.com/feeds/6831445431486714375/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12829596&amp;postID=6831445431486714375' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12829596/posts/default/6831445431486714375'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12829596/posts/default/6831445431486714375'/><link rel='alternate' type='text/html' href='http://whoeversaysit.blogspot.com/2009/06/javafx-backwards-compatability.html' title='JavaFX backwards compatability'/><author><name>Yishai</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12829596.post-633336195377628367</id><published>2008-08-21T16:12:00.002-04:00</published><updated>2008-08-21T16:21:26.643-04:00</updated><title type='text'>Microsoft's Vista blindspot</title><content type='html'>Microsoft has dedicated a whole &lt;a href="http://www.mojaveexperiment.com/"&gt;website&lt;/a&gt; to try to convince people that Vista isn't so bad after all. The problem actually repeats one of &lt;a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;location=http%3A%2F%2Fwww.amazon.com%2FTen-Commandments-Business-Failure%2Fdp%2F1591842344&amp;tag=whosayit-20&amp;linkCode=ur2&amp;camp=1789&amp;creative=9325"&gt;Keough's&lt;/a&gt;&lt;img src="http://www.assoc-amazon.com/e/ir?t=whosayit-20&amp;amp;l=ur2&amp;amp;o=1" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /&gt; 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.&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;This study has all the feel of some attempt at internal political justification, and not actually marketing a product anyone wants.&lt;br /&gt;&lt;br /&gt;And I say this as someone who runs Vista and has no issue with it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12829596-633336195377628367?l=whoeversaysit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://whoeversaysit.blogspot.com/feeds/633336195377628367/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12829596&amp;postID=633336195377628367' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12829596/posts/default/633336195377628367'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12829596/posts/default/633336195377628367'/><link rel='alternate' type='text/html' href='http://whoeversaysit.blogspot.com/2008/08/microsofts-vista-blindspot.html' title='Microsoft&apos;s Vista blindspot'/><author><name>Yishai</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12829596.post-2839355009102703528</id><published>2008-07-03T18:17:00.001-04:00</published><updated>2008-07-03T18:18:28.180-04:00</updated><title type='text'>The most important UI design advice you will ever get</title><content type='html'>&lt;a href="http://www.joelonsoftware.com/items/2008/07/01.html"&gt;Follow it&lt;/a&gt; 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.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12829596-2839355009102703528?l=whoeversaysit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://whoeversaysit.blogspot.com/feeds/2839355009102703528/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12829596&amp;postID=2839355009102703528' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12829596/posts/default/2839355009102703528'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12829596/posts/default/2839355009102703528'/><link rel='alternate' type='text/html' href='http://whoeversaysit.blogspot.com/2008/07/most-important-ui-design-advice-you.html' title='The most important UI design advice you will ever get'/><author><name>Yishai</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12829596.post-1008472056067336688</id><published>2008-07-03T18:07:00.002-04:00</published><updated>2008-07-03T18:16:24.738-04:00</updated><title type='text'>When static typing just won't do</title><content type='html'>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 &lt;a href="http://webgambit.com/blog/calling-a-net-web-service-from-rails-original/"&gt;this&lt;/a&gt; in Ruby on Rails, compared to what it would take with &lt;a href="http://ws.apache.org/axis/"&gt;axis&lt;/a&gt;. The difference is just obscene.&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;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.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12829596-1008472056067336688?l=whoeversaysit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://whoeversaysit.blogspot.com/feeds/1008472056067336688/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12829596&amp;postID=1008472056067336688' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12829596/posts/default/1008472056067336688'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12829596/posts/default/1008472056067336688'/><link rel='alternate' type='text/html' href='http://whoeversaysit.blogspot.com/2008/07/when-static-typing-just-wont-do.html' title='When static typing just won&apos;t do'/><author><name>Yishai</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12829596.post-931700938410934780</id><published>2008-06-15T22:12:00.002-04:00</published><updated>2008-06-15T22:23:00.845-04:00</updated><title type='text'>Know your business</title><content type='html'>Via &lt;a href="http://pajamasmedia.com/instapundit/archives2/020486.php"&gt;Instapundit&lt;/a&gt; we have this &lt;a href="http://blog.syracuse.com/newstracker/2008/06/wikipedia_vs_ap.html"&gt;timeline&lt;/a&gt; of Wikipedia vs. the AP.&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;It is those that are in a position to take that chance, that can become the next Google.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12829596-931700938410934780?l=whoeversaysit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://whoeversaysit.blogspot.com/feeds/931700938410934780/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12829596&amp;postID=931700938410934780' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12829596/posts/default/931700938410934780'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12829596/posts/default/931700938410934780'/><link rel='alternate' type='text/html' href='http://whoeversaysit.blogspot.com/2008/06/know-your-business.html' title='Know your business'/><author><name>Yishai</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12829596.post-6122074025108341778</id><published>2008-05-26T16:36:00.002-04:00</published><updated>2008-05-26T16:41:20.748-04:00</updated><title type='text'>When your business model is interupted</title><content type='html'>&lt;a href="http://www.extrememortman.com/washington-post/internet-upheaval/"&gt;Here&lt;/a&gt; is a failure of imagination. No one knows how to make money on the Internet, or so conventional wisdom goes (don't tell &lt;a href="http://www.google.com"&gt;them&lt;/a&gt;), 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.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12829596-6122074025108341778?l=whoeversaysit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://whoeversaysit.blogspot.com/feeds/6122074025108341778/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12829596&amp;postID=6122074025108341778' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12829596/posts/default/6122074025108341778'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12829596/posts/default/6122074025108341778'/><link rel='alternate' type='text/html' href='http://whoeversaysit.blogspot.com/2008/05/when-your-business-model-is-interupted.html' title='When your business model is interupted'/><author><name>Yishai</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12829596.post-97932761385819733</id><published>2008-04-24T21:57:00.003-04:00</published><updated>2008-04-24T22:00:56.057-04:00</updated><title type='text'>Vista's problem</title><content type='html'>So Microsoft sends out a &lt;a href="http://www.microsoft.com/windows/products/windowsvista/features/top10things.mspx"&gt;list&lt;/a&gt; (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.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12829596-97932761385819733?l=whoeversaysit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://whoeversaysit.blogspot.com/feeds/97932761385819733/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12829596&amp;postID=97932761385819733' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12829596/posts/default/97932761385819733'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12829596/posts/default/97932761385819733'/><link rel='alternate' type='text/html' href='http://whoeversaysit.blogspot.com/2008/04/vistas-problem.html' title='Vista&apos;s problem'/><author><name>Yishai</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12829596.post-3892710565540319402</id><published>2008-03-19T21:43:00.001-04:00</published><updated>2008-03-19T21:44:56.297-04:00</updated><title type='text'>Being pragmatic is good business</title><content type='html'>Let's face it, being &lt;a href="http://www.joelonsoftware.com/items/2008/03/17.html"&gt;pragmatic&lt;/a&gt; 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.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12829596-3892710565540319402?l=whoeversaysit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://whoeversaysit.blogspot.com/feeds/3892710565540319402/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12829596&amp;postID=3892710565540319402' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12829596/posts/default/3892710565540319402'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12829596/posts/default/3892710565540319402'/><link rel='alternate' type='text/html' href='http://whoeversaysit.blogspot.com/2008/03/being-pragmatic-is-good-business.html' title='Being pragmatic is good business'/><author><name>Yishai</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12829596.post-2698117889766157757</id><published>2008-03-10T22:45:00.005-04:00</published><updated>2008-03-11T01:57:26.851-04:00</updated><title type='text'>Dynamic typing and the IDE</title><content type='html'>In further researching &lt;a href="http://whoeversaysit.blogspot.com/2008/03/much-to-learn.html"&gt;dynamic vs. static typing&lt;/a&gt;, the obvious question is how can the IDE make you productive, &lt;a href="http://gregluck.com/blog/archives/2006/03/java_vs_ruby_th.html"&gt;suggest method names&lt;/a&gt;, 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?&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;UPDATE: I guess integrating something like &lt;a href="http://www.codecommit.com/blog/ruby/adding-type-checking-to-ruby"&gt;this&lt;/a&gt; would allow the IDE to understand what is going on. Of course that doesn't exist yet.&lt;br /&gt;&lt;br /&gt;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.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12829596-2698117889766157757?l=whoeversaysit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://whoeversaysit.blogspot.com/feeds/2698117889766157757/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12829596&amp;postID=2698117889766157757' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12829596/posts/default/2698117889766157757'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12829596/posts/default/2698117889766157757'/><link rel='alternate' type='text/html' href='http://whoeversaysit.blogspot.com/2008/03/dynamic-typing-and-ide.html' title='Dynamic typing and the IDE'/><author><name>Yishai</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12829596.post-5243805278391630729</id><published>2008-03-09T21:39:00.003-04:00</published><updated>2008-03-09T21:48:24.162-04:00</updated><title type='text'>Much to learn</title><content type='html'>So I'm investigating Ruby on Rails (vs my more extensive background in Java) and I see this &lt;a href="http://javaboutique.internet.com/reviews/ruby/index-3.html"&gt;quote&lt;/a&gt;:&lt;br /&gt;&lt;blockquote&gt;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. &lt;/blockquote&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;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.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12829596-5243805278391630729?l=whoeversaysit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://whoeversaysit.blogspot.com/feeds/5243805278391630729/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12829596&amp;postID=5243805278391630729' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12829596/posts/default/5243805278391630729'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12829596/posts/default/5243805278391630729'/><link rel='alternate' type='text/html' href='http://whoeversaysit.blogspot.com/2008/03/much-to-learn.html' title='Much to learn'/><author><name>Yishai</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12829596.post-4336562686081010831</id><published>2008-03-05T22:37:00.002-05:00</published><updated>2008-03-05T22:47:45.383-05:00</updated><title type='text'>The perils of customer service</title><content type='html'>Authorize.net took a dive in &lt;a href="http://www.position-relative.com/~relat1ve/2008/03/03/authorizenets-customer-support-issues/"&gt;this&lt;/a&gt; web designer's view.&lt;br /&gt;&lt;br /&gt;It just goes to show how a company can ruin 9 years of good service in two weeks. Two lessons:&lt;br /&gt;&lt;br /&gt;1) The fact that someone wants to stop a current relationship doesn't mean they stop being an important customer. Treat them as such.&lt;br /&gt;&lt;br /&gt;2) Your customers expect perfection. Aim to deliver.&lt;br /&gt;&lt;br /&gt;Fortunately these days most companies don't differentiate themselves in customer service, so you don't have to work to hard to match them.&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;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.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12829596-4336562686081010831?l=whoeversaysit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://whoeversaysit.blogspot.com/feeds/4336562686081010831/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12829596&amp;postID=4336562686081010831' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12829596/posts/default/4336562686081010831'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12829596/posts/default/4336562686081010831'/><link rel='alternate' type='text/html' href='http://whoeversaysit.blogspot.com/2008/03/perils-of-customer-service.html' title='The perils of customer service'/><author><name>Yishai</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12829596.post-8105579572996578010</id><published>2008-03-04T20:55:00.001-05:00</published><updated>2008-03-04T20:55:09.273-05:00</updated><title type='text'>Conflicting Information</title><content type='html'>&lt;span xmlns=''&gt;&lt;p&gt;Courtesy of &lt;a href='http://slashdot.org/article.pl?no_d2=1&amp;amp;sid=08/03/04/0241218'&gt;Slashdot&lt;/a&gt; we have this:&lt;br /&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;em&gt;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.&lt;br /&gt;&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;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?&lt;br /&gt;&lt;/p&gt;&lt;p&gt;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.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;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?&lt;br /&gt;&lt;/p&gt;&lt;p&gt;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.&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12829596-8105579572996578010?l=whoeversaysit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://whoeversaysit.blogspot.com/feeds/8105579572996578010/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12829596&amp;postID=8105579572996578010' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12829596/posts/default/8105579572996578010'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12829596/posts/default/8105579572996578010'/><link rel='alternate' type='text/html' href='http://whoeversaysit.blogspot.com/2008/03/conflicting-information.html' title='Conflicting Information'/><author><name>Yishai</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12829596.post-7652429813468423471</id><published>2008-03-03T22:29:00.005-05:00</published><updated>2008-03-03T22:44:37.888-05:00</updated><title type='text'>Undefined purpose</title><content type='html'>In &lt;a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;location=http%3A%2F%2Fwww.amazon.com%2FBare-Bones-Project-Management-What%2Fdp%2F0974935425%3Fie%3DUTF8%26s%3Dbooks%26qid%3D1204601768%26sr%3D8-1&amp;tag=whosayit-20&amp;linkCode=ur2&amp;camp=1789&amp;creative=9325"&gt;Bob Lewis'&lt;/a&gt;&lt;img src="http://www.assoc-amazon.com/e/ir?t=whosayit-20&amp;amp;l=ur2&amp;amp;o=1" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;"/&gt; 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.&lt;br /&gt;&lt;br /&gt;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).&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;And the project was a great success, but not at doing anything anybody wanted.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12829596-7652429813468423471?l=whoeversaysit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://whoeversaysit.blogspot.com/feeds/7652429813468423471/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12829596&amp;postID=7652429813468423471' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12829596/posts/default/7652429813468423471'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12829596/posts/default/7652429813468423471'/><link rel='alternate' type='text/html' href='http://whoeversaysit.blogspot.com/2008/03/undefined-purpose.html' title='Undefined purpose'/><author><name>Yishai</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12829596.post-4279388556073785503</id><published>2008-03-02T14:31:00.003-05:00</published><updated>2008-03-02T15:05:26.462-05:00</updated><title type='text'>IT Flexibility</title><content type='html'>Bob Lewis &lt;a href="http://weblog.infoworld.com/lewis/archives/2008/02/can_virtualizat.html"&gt;asks&lt;/a&gt; how if it is practical for IT to provide Virtual Machines as sandboxes for users to experiment with.&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;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?&lt;br /&gt;&lt;br /&gt;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.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12829596-4279388556073785503?l=whoeversaysit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://whoeversaysit.blogspot.com/feeds/4279388556073785503/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12829596&amp;postID=4279388556073785503' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12829596/posts/default/4279388556073785503'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12829596/posts/default/4279388556073785503'/><link rel='alternate' type='text/html' href='http://whoeversaysit.blogspot.com/2008/03/it-flexibility.html' title='IT Flexibility'/><author><name>Yishai</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12829596.post-339563249260815300</id><published>2008-02-28T22:36:00.002-05:00</published><updated>2008-02-28T22:45:43.623-05:00</updated><title type='text'>Web 2.0</title><content type='html'>One thing I never appreciate is the latest buzzword. By the time "Web 2.0" became a buzzword, everyone had a hard time explaining it. In a nut shell, it is &lt;a href="http://www.watchuseek.com"&gt;this&lt;/a&gt;. It is the &lt;a href="http://www.top100watchsites.com/"&gt;top watch site&lt;/a&gt; right now, and it clearly tries to drive the sale of watches online. Its selection is much weaker than &lt;a href="http://www.jomashop.com/"&gt;#2&lt;/a&gt; and &lt;a href="http://www.thewatchery.com/"&gt;#3&lt;/a&gt;, but those two pay Google for their ranking via lots of Pay Per Click advertising.&lt;br /&gt;&lt;br /&gt;Enthusiasts want to do more on your site than just shop. Let them.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12829596-339563249260815300?l=whoeversaysit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://whoeversaysit.blogspot.com/feeds/339563249260815300/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12829596&amp;postID=339563249260815300' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12829596/posts/default/339563249260815300'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12829596/posts/default/339563249260815300'/><link rel='alternate' type='text/html' href='http://whoeversaysit.blogspot.com/2008/02/web-20.html' title='Web 2.0'/><author><name>Yishai</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12829596.post-8092010688398960892</id><published>2008-02-27T23:23:00.001-05:00</published><updated>2008-02-28T09:20:46.510-05:00</updated><title type='text'>The Bounce Rate</title><content type='html'>A great lesson in what you don't want to see. How many times do you look at a web site you are designing and have no idea what people really see. When you focus on something, it is hard to see it from the casual person's perspective. But does your organization have the open mind to admit when something isn't working, or are the metrics about rationalizing decisions already made, because it would make you look bad to make a mistake?&lt;br /&gt;&lt;br /&gt;An organization that doesn't take mistakes as learning opportunities is an organization which is not taking every opportunity to improve. But such an organization is teaching a lesson: we learn how to bury our mistakes so that we don't have to learn from them.&lt;br /&gt;&lt;br /&gt;And burying mistakes rarely improves the bottom line.&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="355"&gt;&lt;param name="movie" value="http://www.youtube.com/v/ppgfjo6IIf4"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/ppgfjo6IIf4" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;What does this have to do with bounce rate? Bounce rate is a failure rate, and failure rates are really the metric we can learn the most from - it is about learning from our mistakes and making things better.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12829596-8092010688398960892?l=whoeversaysit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12829596/posts/default/8092010688398960892'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12829596/posts/default/8092010688398960892'/><link rel='alternate' type='text/html' href='http://whoeversaysit.blogspot.com/2008/02/bounce-rate.html' title='The Bounce Rate'/><author><name>Yishai</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-12829596.post-111585597640371975</id><published>2008-02-27T21:49:00.000-05:00</published><updated>2008-02-27T23:38:32.351-05:00</updated><title type='text'>The Beginning</title><content type='html'>The inspiration for the name of the blog is a &lt;a href="http://en.wikiquote.org/wiki/Maimonides"&gt;quote&lt;/a&gt; from Maimonides:&lt;br /&gt;&lt;blockquote&gt;&lt;p&gt;Accept the truth from whatever source it comes&lt;/p&gt;&lt;/blockquote&gt;Sometimes we hear the truth from unexpected sources - and we need to be prepared to hear it. The ability to distill correct information and act on it is the most powerful tool anyone will have in life.&lt;br /&gt;&lt;br /&gt;This blog will explore the implications of that in business and in life.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12829596-111585597640371975?l=whoeversaysit.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12829596/posts/default/111585597640371975'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12829596/posts/default/111585597640371975'/><link rel='alternate' type='text/html' href='http://whoeversaysit.blogspot.com/2008/02/beginning.html' title='The Beginning'/><author><name>Yishai</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry></feed>
