Skip navigation.
Home

jjanssen's blog

Organizational Patterns of Agile Software Development

Development
"What makes a software development project succeed? It's not language or tools or process. It's not a simple as people; even great programmers sometimes find themselves associated with disasters. In some sense, a successful project is the same thing as a successful organization; but what makes those? We need an anti-Dilbert. In Organizational Patterns of Agile Software Development, James O. Coplien and Neil B. Harrison lay out the results of their research on the subject; what they found, helps." Slashdot Book review | Organizational Patterns of Agile Software Development

The Three Little Pigs

Client Computing | Software | Web
Once upon a time, there was a little pig who built his house in the meadow out of straw. He did it because he had always built his house out of straw, and so did all the other little pigs in the meadow. Straw wasn't the best building material available, but it was good enough. It was easy to work with. And the labor costs associated with straw were low, because the meadow was filled with animals who were trained in the use of straw. But over time, Big Bad Wolves infiltrated the meadow, and began huffing and puffing and blowing the houses of straw down. Now, the little pig had a big brother, who'd built his house out of brick. The little pig's big brother urged the little pig to re-build his house out of brick, instead of straw. "Not by the hair of my chinny-chin-chin," said the little pig. "The only reason brick appears safer than straw is that so few pigs build their houses out of brick. Big Bad Wolves target straw houses because straw has a monopoly on the building materials market. If brick had the same market share, then the Big Bad Wolves would be huffing and puffing and blowing down brick houses." The little pig's big brother said, "Dude, you can't blow down a brick house. Brick is fundamentally more resistant to huffing and puffing." But the little pig was confident. "Not by the hair of my chinny-chin-chin. You're only saying that because you've been brainwashed by the FUD spread by straw community." The preceding has been a fairy tale with no bearing on the current state of Internet security. By Mitch Wagner Source: Security Pipeline | Trends

Why corporations are moving to JBoss

J2EE | Open Source
"Companies have gotten comfortable with Linux, and they're scratching their heads and saying, 'The argument for Linux was total cost of ownership and skills, and our developers like it and applications are supporting it,'" says Pierre Fricke, an analyst at D.H. Brown Associates. "Then they start thinking, 'What about this thing called JBoss. Doesn't it offer some of the same things?' And it does."

Network World Fusion article, Open source products grab corporate attention, explains why National Leisure Group moved their J2EE infrastructure from BEA Weblogic to JBoss. The broader Open Source topic is discussed with some interesting insights into corporate backing as well as appropriate cautions....

Reducing Complexity, the Discipline

Enterprise Architecture

A recent article in CIO Magazine, raises a valid point about the communicated purpose of Enterprise Architecture. Enterprise Architecture can be an overwhelmingly complex undertaking if approached comprehensively from the top down. In order to avoid getting lost in the matrix of the Zachman Framework, EA should be attached to solving business problems, and according to GM CTO Tony Scott, business peers shouldn't even know its called "enterprise architecture".

The goal of EA is to Reduce Complexity, not increase it. EA is described simply as the mapping of business requirements and processes to IT systems which support them. But its not a technology platform, or a one time mapping. It is a discipline. We don't sell disciplines, we practice them.

The EA discipline is practiced when key problem areas, inefficient processes, legacy systems, those things which can no longer be directly connected with the business need are re-evaluated. The goal is to provide agility, reduce complexity, so that the organization can "change the business rules" when need dictates without reinventing the IT systems that support them.

Often IT is viewed as slowing down the advancement of the organization, rather than enabling it. Strategic alignment has been thwarted by the increasing complexity of ad hoc computing solutions. IT is too busy just keeping the plethora of individual PC's, components, and nich products running. It seems like products are always being added, never removed. Clearly re-alignment is necessary, discipline is the key.

Playing Catchup with Jabber Summer News

Collaboration | IM | Jabber

It appears as though more of the industry is waking up to Presence Being the Killer App. With Jabber Inc. being a leader in this space. Jabber, Inc., which develops real-time communication server platforms for developing IM and presence-enabled applications, is fashioning its XCP platform into an application server of sorts not only for presence, but also for messaging, routing and XML-application development. In September, it will release a publish-and-subscribe technology called Information Broker for pushing content out to users.

Interesting too, is the increase in adoption of Enterprise IM (EIM) and consequent integration of presence in business applications. A recent Osterman Research study shows 44% of companies use IM with business applications, up from 21% just three years ago. Furthermore, 34% of users have standardized on an internally run IM platform, up from 24% just two years ago.

Jabber Inc. is has announced new versions of its commercial Jabber server and client.

The Slowdown Problem: TCP Window Scaling and Linux 2.6.8

Linux | Networking | WorkBlog

About the same time as students came back to campus this year, I noticed that my internet connection speed was extremely slow on my gentoo linux notebook. Some websites wouldn't load, and ftp and http downloads never exceded 5KB/s and often were in a measurement not often seen anymore, bits/s. I thought, I know this is a heavy usage period on campus, but this is rediculous.

Well, after our network administrator reported that utilization was was not maxed on our campus partial ds3, I thought perhaps it was a router issue. I started trying different locations, other hosts on campus did not have this problem. I switched to wired, same problem. When others in the building also running linux, were not having the problem I began to suspect by box. But I get full speed at home? Whats the problem?

I did a dslreports speed test which came out rather bizarre, 3434 kbps up and 36 kbps down. :-? Thats two T1's upload speed and a pre 56K modem download speed folks. To which dslreports stated "Your upload speed is much faster than down.. have you tweaked?"

Since the problem was occuring regardless of interface, I began to suspect my kernel. I rebooted with an older 2.6.7 and whamo, the same file that was downloading at 5K/s completed at 200K/s. After the latest gentoo development-sources linux-2.6.8.1, didn't solve the problem I decided to google and found the answer.

The recent 2.6.8 kernels have enabled TCP Window Scaling by default. Window Scaling has been a technique used by cat burglars and the IETF since 1992, see RFC 1323. Basically, it allows for the dynamic setting of tcp window sizes beyond their early fixed limit of 64K to increase performance on the Internet with modern equipment. So why doesn't it work with Linux? Well the problem is not with Linux at all, other than the fact that they turned it on by default. Apparently many routers and packet firewalls are rewriting the window scaling factor during a transmission, instead of only during the initial handshake (SYN). This means that the sending and receiving side are assuming a different TCP window size. The result of this misnegotiation of protocol, is very slow successful traffic if at all.

This also explains why the problem is visible on some sending and receiving sites, because only devices behind the path of broken routers are affected. For instance, why my notebook worked fine from my house, or why I was able to get to some sites from on campus at full speed. Also apparently some routers are only mangling in one direction, which would explain that crazy speed test above.

The solution? Well, some of the linux developers are hoping that leaving the option enabled will force the issue, so that vendors will fix their routers. As for me, I was able to follow David S. Miller's suggestion to turn off the feature dynamically in the kernel.

The following command will disable the win scaling feature for the running kernel:

sysctl -w net.ipv4.tcp_default_win_scale=0

And the following command will make sure it gets set next reboot:

echo "net.ipv4.tcp_default_win_scale=0" >> /etc/sysctl.conf

In case you hadn't picked up on it, this is not a gentoo specific issue. Redhat fedora users, you might be affected as well, along with any other distribution using the recent stock 2.6.8 kernels. This LWN article is the only press I have seen about the problem. For a more complete discussion of the topic, here's the start of the thread on the Linux Kernel Mailing List. It would be nice if someone had a complete list of affected routers, some have mentioned openbsd and cisco.

Firefox 1.0 Coming (some missing features)

Web | WorkBlog
Looks like Mozilla Firefox will be hitting 1.0 really soon. In preparation, some of the really great features are being removed for instability and or support reasons. They will no doubt be added back later, but there is one in particular that I will sorely miss. The alternate stylesheet tool, allows you to switch between alternate stylesheets for websites that offer multiples. It seems to work well for me, but a discussion in the developers bugtracking software lead to its removal from the nightly builds. Fortunately, someone has already stepped in to offer an enhancement to his style sheet chooser extension to offer similar functionality. It won't be handled as a graphical element in the bottom left corner of the browser, but I am sure someone else will do that at some point as well. According to the dicsussion the goal would be to add back the functionality in 1.5. The other element that many notebook users enjoy, is offline browsing. This feature allows you to save websites for offline viewing. Apparently there are some issues with it, and it has been removed for 1.0 as well. While these are unfortunate, I am very excited about Firefox hitting 1.0. I have been very pleased to see its progress as I have used it over the last 8 months or so. It is lean and fast, and has some very compelling innovative features. Thunderbird, the mail client, is coming along nicely as well. Recent versions seem more stable. Recently I have switched to it from Evolution, after getting frustrated with a few bugs (hangs etc) and feature deficiencies (SSL LDAP support). So far the only thing I miss is the shortcut bar, to make it easy to switch between inboxes, or important imap folders.

The Struggle to Define Agility

Enterprise Architecture | Architecture Principles

Michael Schrage wrote recently in an Article in CIO magazine about the variance in the usefulness and definition of agility.

I think Schrage makes some valid points, buzzwords, initiatives need to be defined. And agility is much different than hacking around a previously unforseen problem. Also it does make sense to ask the question "agility for whom?". However, I feel like he fails to make a valid actionable point. Especially refering to the fact that architecture for buildings does not have as its purpose changeability. This is true, but no one is saying that IT architecture approaches the problem of design in the same way as building architecture. In other words, using the term from one industry in another (Architecture) doesn't mean it inherits all the problems of the source industry. ie. static buildings.

The true point of agility is to remove the inhibitors to change, and if done correctly this benefits all parties, except perhaps vendors selling monolithic product suites. What helps programmers take less steps to modify software, is the same thing that benefits administration who says tomorrow we are going here instead of there. Benefiting the "enterprise" is a worthy goal, albeit a bit abstract.

Can persons build architectures in a vaccuum that are far from practical? Absolutely. Do architects need to keep this in mind as they approach solutions? You bet. Just enough architecture just in time, should be the model, not the white tower of IT consolidation and governance.

Sometimes IT thought leaders have to say no to something that benefits the organization in the short run, because it pigeon holes them in the future. But in desiring to build an environment that removes the inhibitors to change, they themselves need to make sure their not in the way.

Intel IPW2100 Wireless (Centrino) on Gentoo Linux

Linux | Wireless

Well I have finally tried the ipw2100 Open Source driver and it works quite well. Here are the instructions for getting started on Gentoo, Linux:

  1. First, in order to always get the latest version (including masked packages), I set an accept keyword in my /etc/portage/package.keywords You can simply create the file if it doesn't already exist. (This is the best way I have found to unmask an ebuild).
    # contents of /etc/portage/package.keywords

    net-wireless/ipw2100 ~x86
  2. If you haven't in a while make sure your synced up with the latest portage tree.
    emerge sync
  3. Install the software. If all goes well this will compile the kernel the module, and install the firmware from Intel.
    emerge ipw2100
  4. Load the new module.
    modprobe ipw2100

    You should see something similar to the following in your /var/log/messages

    ipw2100: Intel(R) PRO/Wireless 2100 Network Driver, 0.51
    ipw2100: Copyright(c) 2003-2004 Intel Corporation
    ipw2100: 0000:02:02.0: Detected at mem: 0xC0204000-0xC0204FFF -> e0914000, irq: 11
    eth1: Bound to 0000:02:02.0
  5. If you are connecting to a non WEP access point, then you should automatically associate on module load. You'll see the following in your /var/log/messages:
    eth1: Associated with 'apuwifi' at 11Mbps, channel 8
  6. If you didn't have it already, you'll want to also emerge "wireless-tools" which you'll need to manage your connection.
    emerge wireless-tools
  7. Use wireless-tools to set managed mode your wep key and essid
    iwconfig eth1 mode managed key YourSecretKey essid YourESSID
  8. If you don't already have one, create a eth1 init script, then start it up to load the interface and get a dhcp address
    cp /etc/init.d/net.eth0 /etc/init.d/eth1

    /etc/init.d/net.eth1 restart

At this point you should be all set. I haven't looked into the slickest way to start and stop the wireless if your using WEP. I generally start the wireless with a simple shell script.

#!/bin/bash
modprobe ipw2100
iwconfig eth1 mode managed key YourSecretKey essid YourESSID
/etc/init.d/net.eth1 restart

I tested with the gentoo-dev-sources-2.6.7-r11 kernel on an IBM R40 Thinkpad. So far I have found less problems than with the Windows driver with the ndisloader. The driver also supposedly supports WPA which I haven't tested.

Resources

Update 2005-06-15: I am now using the WPA functionality, but have not written up instructions.

Xanga malformed RSS, Conversion filters to the rescue

Blogging | Semantic Web

I have been using liferea (LInux FEed REAder), as my primary RSS/Atom news reader for quite a while. I am not certain that it is the best reader in Linux, especially since its an early project in rapid development with frequent breakages, but generally it has provided more features than others I have tried. I tried to use Straw, its more stable cousin, but was already too addicted to Liferea's group management, and favicon eye candy. rssowl, a java app that was quite featureful, has a clever interface that would open a new tab for each feed read. However, it became more difficult for me to quickly arrow down through news. Perhaps with some settings changes it could behave like liferea, but my patience for it wasn't there. Another "problem" with rssowl, was that it was quite strict in interpreting the xml from rss feeds. Which alerted me to a problem.

Many sites are using malformed XML for their RSS/Atom feeds! If you have ever tried to maintain a multiuser blogging site, perhaps you have also found out how difficult it is to declare your site as XHTML 1.0 compliant, if you allow your users to use HTML tags in their posts, as on this site. I would suggest in those cases, to add a check xhtml 1.0 link and encourage advanced users to click on it to verify their post. Its starting to matter more, in a world with many alternate browsers and feed readers, standards compliance is essential.

That being said, a major offender is Xanga. Xanga is a blogging site, that seems to appeal to an audience who perhaps doesn't even know what blogging is when they started. Anyway, I had a couple friends who were using it, and was hard pressed without the help of google to find that it offered RSS feeds. I found that it works with the following convention..

http://www.xanga.com/rss.aspx?user=username

However, I could never get my news reader Liferea, to update the feed. No error messages were shown, just said "no new items". I ignored it for quite some time, and also was frustrated that friends who were using Straw, didn't have any problem reading the posts. I finally decided to look into it this morning and found the problem. See if you can find the problem with the following xml:

<rss version="0.91">
<channel>
    <title>User X Xanga Site</title>
    <link>http://www.xanga.com/UserX</link>
</channel>
<item>
    <title>7/24/2004 6:57:55 PM</title>
    <link>http://www.xanga.com/item.aspx?tab=weblogs&user=UserX&uid=0000000
    </link>
    <description>
    First post.
    </description>
</item>
</rss>

The <channel> tag is closed before the item list. According to the RSS 0.91 spec everything pertaining to an individual channel should be contained within the channel tag.

A workaround for Liferea.

I found a Xanga Conversion Filter which can be used to correct the problem with Liferea. Liferea can use an external filter to access feeds in unsupported formats. Edit your feed and check "Use Conversion Filter" and point to the the perl script saved from the above source. Perl to the rescue once again. I can now finally read Xanga feeds from Liferea. Should an RSS reader follow the rules strictly? Or should it attempt to correct bad rss or xml? Not sure but, but with auto-correction we may never find the problems and report them. I guess I should inform Xanga of this problem. I am wondering if they will care, considering in 10 minutes of perusing their site, including their FAQ I can't find any mention of RSS.

XML feed