Archives for: June 2006

Jun 15, 2006 : Microsoft has reached it's limits

So Microsoft Chairman Bill Gates is stepping down over two years, to spend more time at the Bill & Melinda Gates Foundation, working on global health, etc. Why, you might ask? Because Microsoft has reached the limits of humanity. Gates needs to focus on keeping more people alive longer, so he can sell them his software.


That's thousands of lines of code.

An MSDN blog claims the current US developer averages 6200 LOCs/year. I counted what I wrote in the past 9 months, here at Cornerstone Univ, with the help of a student worker: 29,197 lines of Java code. Granted, a lot of that is boilerplate getters/setters, etc. But it also doesn't even count .xml configurations or .xhtml JSF/Facelet view definitions (think templates).

Non-nerdy: A LOC (line of code) metric is a bad way to measure software developer productivity, because anyone can produce more bad lines of code if they want. And decreasing lines of code sometimes makes the software better! But people use LOCs anyway because there's not much else (easily countable) to go by.

: xargs delimiters

If you have spaces in your input to xargs, you might want to split on spaces. For example (javafiles.txt is a list of files, some of which have spaces in their paths):
cat javafiles.txt | xargs -d \\n wc
Don't forget to double-escape the newline!

Non-nerdy: ignore this post!

Jun 12, 2006 : It's a small world

One of the spam comments on this blog had this as the url: The URL 404s, I have no idea how they got it. The media parameter is a real spam site. The funny thing is that is the student organization I led for two years at Calvin.

For the non-nerdy: spammers automatically add spam comments to weblogs, to increase the number of links to their site. This gives them higher search result rankings. I regularly filter and delete these. Above, I ---ed out the real spam website they were targetting. "404" is the error code for "page not found". The reason the spam site is in the same website address as is because spammers often exploit bugs in websites to sort of "hide" their site by using somebody else's site. In this case, had no such bugs and so I don't know what the spammer was thinking.

Jun 10, 2006 : pictures!

All my 2005-2006 pictures are now posted, including Scotland and Spain.

Jun 07, 2006 : Konfidi 1.0.0 releases

Non-nerdy overview: this is an announcement about the Konfidi project that I'm working on. It uses social networks of trust to help you filter email. And I'm using this post as one way to get the word out about the new releases (which hopefully will attract other developers). It's not usable by the general public yet.

The first major releases of the Konfidi software are now available. Version 1.0.0 of the following packages are now available at

  • FOAFserver
  • Trustserver
  • Trustserver Frontend
  • Client: cli-filter
  • Client: simple

Konfidi is a system that uses PGP signatures to determine authenticity, and distributed topical trust values to compute an inferred trust value of the author. The first (and motivating) application is to filter email. You'll be able to set your client to accept all email from senders with a high computed trust value and rigorously filter anything else.

If you know what a .procmailrc file is, you can start using Konfidi now with the cli-filter.

The project could make use of skills in: Java, Python, C/C++, from data synchronization to UI design, psychology/sociology research, and more. Join our mailing list if you are interested.

: explanations for non-nerds

So the youth leader at my home church back in Midland told me this weekend that I should have a blog about my blog, explaining the technical stuff to non-nerds. I've been trying to post more non-nerdy stuff to my blog, but explaining the technical stuff would be a good idea too. So I'm going to try to do that from now on, using a preface paragraph to the technical posts.

Jun 01, 2006 : Target gift registries suck

A friend is getting married soon and is registered at Target. I went to Target tonight and 2 of the 3 registry printing machines were out of service, and the one that did work only did so when it felt like it. Seems like you had to wait a few minutes between each use. And Customer Service can't print any on their own computers. Then when I find a product and go to buy it, it isn't recognized as being on the list. I say "whatever" and buy it anyway, because it is on the list. I just compared model numbers online and it turns out the only difference is I bought a black item and they registered for gray. It's cookware, it doesn't matter! Grr...

So the moral of the story: register at Bed Bath and Beyond, even though that's what everyone does. At least they can print registries for you, do free gift wrapping, and ask a million times if you need any help.

: Java "copy constructor"

Well, of course you can just Foo myFoo = (Foo) theirFoo.clone(); to copy an object.

But I want to create an ExtendedFoo out of a Foo. I can't cast the foo (or cloned foo) into an ExtendedFoo because it's not one. I need to create a new ExtendedFoo and copy all of the important stuff from the "foo" object into the "extendedFoo" object. Here's how I did it:

import org.apache.commons.beanutils.BeanUtils;

public class ExtendedFoo extends Foo {

	public ExtendedFoo(Foo source) throws IllegalAccessException, InvocationTargetException {
		BeanUtils.copyProperties(this, source);

Isn't that easy?

<< Previous PageNext Page >>

<< Previous PageNext Page >>

<  June 2006  >
Mon Tue Wed Thu Fri Sat Sun
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30    




Syndicate this blog XML

powered by