Tuesday, October 28, 2008

Jeff Sutherland at Agile Atlanta

Last night I attended the Agile Atlanta meeting last night where Jeff Sutherland, co-creator of Scrum, presented his experience with distributed teams and Scrum. He was a really impressive presenter.

The general idea of his presentation was that distributed teams should be working on integrated Scrum teams instead of isolated. He presented a number of cases where the teams had 'local' resources with the Product Owners and 'remote' resources elsewhere. For example one company built a scrum team of 4 engineers, with 2 in Denmark and 2 in India. Initially they all were together in Denmark for 2 sprints, then they broke them up. Jeff claimed that the velocity and quality of the team from the 2 sprints 'together' was continued when they were separated.

His reasoning was that because the team had started together, knew (and to some extent trusted) each other and were using the same tools they continued the same velocity when they changed location. He also said that the team had a shared sense of urgency about what they were trying to accomplish and the remote team knew the product owner and what he was trying to accomplish instead of him being a voice on the phone. He showed their velocity over a dozen or so sprints and pointed out a couple of anomalies, including one major one where the velocity took a nose dive. They found that it was the culture of the Indians, where the junior members (they now had 8 total members) were waiting on the senior engineer to tell them what to do. Once the team understood this, the team made the senior engineer the scrum master and told him to fix his velocity problem.

He also presented a number of cases where non-integrated distributed teams (both outsourcing and different offices) didn't provide anywhere near the same velocity as the co-mingled teams, as he admitted, contradicting all the Agile best practices of putting the teams in the same room. He presented that this was due to the silo building that went on with these teams since they had different priorities and sense of urgency.

He also had a great comment to someone asking about the lone expert who is the only one who knows how to do something: he advises his teams to not commit to anything where there is only one person who can perform the task. if they find a task that only one person knows how to do (he used the example of a deployment configuration manager at one of his clients), then the sprint should stop and the team immediately begin cross training.

The main presentation is here.

A posting about one of the teams he worked with is here.

A paper about the findings is here.

Sunday, August 24, 2008

50+ hours and still a full charge

I really think the battery problems are related to the devices hunting for a signal. I didn't really go out this weekend, so I used the phone only a few times for a few calls. However, the # and time of calls were definitely less than last week when I didn't have a signal most of the time.

Anyone else notice poor battery life when the phone is always hunting for a signal?

Friday, August 22, 2008

Thoughts on cell phone (and iPhone) batteries

I was at an off site meeting most of this week and one very odd thing happened (well, several odd things happened, but I'll only write about this one ;-)

My AT&T Razor's battery would last less than 24 from the minute we arrived until we left (a little over 3 days). I have never had problems with this phone and batteries. What is odd is when I got home and fully charged it, it is now 11 hours later and I have a full charge.

One piece of information: I didn't have a signal at all in the buildings were we were staying. No edge or 3g. Is it possible that the reason so many people have bad battery life is that the phones are wasting a lot of power trying to find signals, or switching between edge and 3g?

If the phone is still fully charged in the morning that I know it has something to do with the lack of a network, since I get a strong 3g signal in the house.

Thursday, August 14, 2008

IASA Atlanta - August 08 Meeting

Last night's IASA Atlanta meeting was a good one. The main topic was a panel discussion around 'Design Patterns'. Unfortunately, I thought the names of the speakers were on the IASA website, so I didn't write them down (Please comment if you know their names and I'll update this.)

The discussion started with a definition by each of the presenters of what 'Design Patterns' are. The crowd then got involved with their definitions, where they have seen abuses of patterns and suggestions for how to present patterns to their work environments. Having worked almost exclusively with experienced engineers (or junior engineers who ate up anything new or interesting that they didn't know) I was surprised by some of the suggestions and challenges those working in bigger companies had to introduce these concepts. As part of the discussion on how to introduce patterns into an organization we got into a discussion about how people learn and how some (like me) have a 'gut' feeling about what parts of a complex topic can be skipped until later to get the bigger picture. Great discussion on this with the group as well.

About an hour into the session the subject changed to hiring questions, including a favorite of mine: 'what have you read recently?', or how I ask it 'what do you do to keep current with the changing technologies?'. Several good suggestions for Pod casts and RSS/email lists. My suggestion was IBM's developerWorks. I get both the email and the RSS feeds. A number of people joked about the answers they received to these questions. My personal favorite is a candidate who 'reads the internet'. When asked for more details he said he surfs around looking for articles and posts.

One of the group asked about certifications and whether they were useful metrics when hiring or when looking for a job. I personally don't put a lot of weight into them. Some are non-trivial to obtain, but a lot of them have a lot of fraud behind them. I've (unfortunately) interviewed enough engineers (software, network and hardware) who were certified MS-this or Novell-that and Cisco-whatever who couldn't explain the basics of where they used these technologies or answer non-trivial questions. There was also a lot of fraud during the earlier part of this decade where people were paying examiners to pass them and some 'training' companies even advertised they could guarantee you'd pass. One of the IASA officers countered with the rigorous testing that you need to reach the more advanced Java certifications, so I need to look into that some more.

Bringing the discussion back on topic (part of the reason I enjoy these meetings is they tend to be very interactive with the crowd and the speakers/organizers let things get off topic for a little while if the group wants it to.) we talked about Anti-patterns. The general consensus was that 'anti patterns' are mostly about personnel and management, but have a place in development. One comment was the the people interested in patterns hate anti-patterns. I personally enjoy reading about anti-patterns so I can see if I'm doing something others flag as bad, or my organization is, or to see what things can go wrong as we implement a new process or technology so we can avoid them.

The last few minutes were a discussion of patterns again, with Burk asking if this was a topic we wanted to cover again. I chimed in that I thought it was a good idea, but to include more advanced/complex patterns since most people with an architect title or role should know the basics like singleton or command.

There was one mention of scrum, in passing. One mention of offshoring, again in passing. (Both of these usually lead to some detailed discussion, but not tonight.)

It was also one of the best attending meetings in a long time. Lots of the same faces, but plenty of new ones.

At the end I got to check out the Kindle that one of the speakers uses. Pretty impressive device, I may need to add it to my Christmas list.

Sunday, August 10, 2008

Norton 360

I've been a user of Norton Antivirus for over a decade now (I think I bought it when I joined Earthlink back in 1995?). A couple of the releases have sucked (2006 had to be reinstalled every couple of months after a failed dictionary upgrade for example)

My subscription was up this weekend so I went an bought an upgrade to Norton 360 this weekend at Best Buy. They had for $10 less than online. Plus I was there getting a WII Fit and Mario Kart ;-)

First I had trouble uninstalling the old versions on both PCs. Eventually found a tool on the Symantec site to remove ALL products. This tool even found left overs from 2004 versions. With them gone, the install went pretty smooth.

First thing I noticed was the difference in memory footprint. Easily 150 MB smaller with the new version installed than with 2008. I also noticed that the disk thrashing has stopped. To the point that the disk on my main desktop isn't spinning at all, and sometimes goes into powersaving mode. That NEVER happened with the previous version.

This version also has an anti-spam gateway, firewall and anti-malware systems. They've also bundled the disk defragmenter from the standalone tools product.

Odd thing is they added an on-line (Internet) backup tool. I've been using Mozy for a month now (I'll write about it next week after I test restore some files.) I have 20 GB backed up and the Norton tool comes with 2 GB free, but I didn't use it.

I also kicked off a full system scan, then did email and surfed. I didn't notice any delay. In the past the machine was worthless when it was scanning.

Only downside: Norton 360 doesn't like Windows Defender. Not sure why, I'll research that some more, but it told me to uninstall it before it could install.

Saturday, August 9, 2008

XP SP3, 512 MB RAM - fun with an OLD PC

My home PC is nothing to brag about. Actually it was 5 years ago when it was new, but not today. These days I use it for Quicken, surfing the web and email. Anything 'cool' for work I use my laptop, which is a pretty powerful machine.

Last week MS decided to force my XP OS to upgrade to SP3. I looked around quickly for 'gotcha's' and didn't see anything, so I let it install.

30 minutes later, the PC reboots and hangs. I reboot it again, and it starts, but starts thrashing the disk. I leave it for 30 minutes, but it still hasn't fully started. Turn it off again, this time it wouldn't show the login screen. I gave up and went to bed.

Next day I found some interesting issues with SP3: first, you need to disable your anti-virus before installing. (Reason is most have a feature that prevents critical system files from being updated. The same ones SP3 wants to change.)

I got home, used the fallback features to the checkpoint before the install and started over. This time I disabled Norton anti-virus and Windows Defender. Still had to let it sit for 30 minutes while the disk thrashed, but it eventually settled down.

Frustrated with the PC, I wanted a new one. Of course ;-) Researching found some good Dell's for around $500, but since I had mine working now I couldn't justify a new one. Of course Deb's PC is few months older than mine, so I'd need to get 2 if I wanted any peace in the house.

So I went and bought another 512 MB of RAM for my PC and wow, what a difference. Since I was only surfing and doing email I didn't think I needed a lot, but with the new ram things are much faster. Looking at Task Manager I see I'm using 614 MB now, which means I was swapping pretty heavily before.

I still want a new machine, but can't justify it. Maybe we need a good thunderstorm ...

Friday, July 18, 2008

July 2008 AJUG Meeting

I joke that I get two 'get of out of jail free' cards a month for work-related activities. Twice a month I go to user group meetings, one for AJUG, the other for IASA in the evenings. These really are related to work since we do a lot of Java and I've always been involved in Architecture of software systems.

The July meeting of AJUG was about Terracotta, a tool I had heard about, but didn't have a lot of understanding of what it did and how.

The meeting started as usual with Burr Sutter asking about what's new in the community and if anyone had any job openings. Several people described what they were looking to hire and we started a discussion about why it is hard to find good people in Atlanta and about expected salary range of most of the open positions ($85 to $105k was the range thrown around). I relayed a comment a friend at another company made: 'I know the devils here, why would I risk going someplace where I didn't?'. He was referring to the economy and while tech is supposed to be weathering the storm fine, it is a concern for most people. This led to a couple of other comments about losing vacation, negotiating with HR and the reasons why HR wants things cookie cutter for all employees. Very interesting discussion.

Burr then introduced Kunil Bhasin an engineer from Terracotta. Kunil had a good presentation and was willing to take questions from the audience. At first I wasn't sure what Terracotta was, but as he gave more examples and explained how the system works, the more sense it made.

High level: Terracotta provides a file-system backed, in memory 'database' of the name/value pairs available in a network fashion. Very similar to a cache, but with enough differences to not be just considered a cache. At first I was thinking about a JBoss Cache type of solution, but Kunil showed that what was being cached wasn't an object (and thus all the issues with marshalling, changing signatures etc that caches have) but rather a primitive, like a string or integer. So in Terracotta there is an object identifier, an attribute (or class member) name and the current value. Changes in an application are transmitted to the Terracotta server and available for other servers if necessary.

The service is transparent to the application (once you tell Terracotta which objects to manage). So I don't need to do things like checking the cache using a cache specific API, then loading the object via JDBC and putting the object into the cache. Or worse, worrying that the object in the cache is an older version because I'm doing a rolling deployment and the cache server is shared between two apps, one updated, one not.

For the gory details on how this works, go to their website.

Kunil was a very good speaker and handled the crowd very well. I was frustrated though by the crowd. We had a really good turn out, especially for a summer meeting, but it was one of the most argumentative crowds I could remember since Bruce Tate told everyone Ruby solved every problem we've ever had. (Yes, I was one of the ones arguing with Bruce ;-) It seemed that each time Kunil introduced a new concept someone would ask him about performance or why what Terracotta was doing wouldn't work, usually in an offensive tone. He nicely dodged those questions by telling us he'd talk about performance later in the presentation (unfortunately we ran out of time before he could.) He did address a number of questions about locking and concurrency as the questions were asked. It felt like they thought Kunil was attacking their solutions instead of presenting a tool to consider next time. Very strange.

While some of the questions were argumentative, a lot were good, asking details about how they addressed problems people who use caches today encounter. He answered my question about what happens if a new member is added to a class being monitored (Terracotta knows that the old object doesn't need that member so it doesn't try to set it if the member is requested. Having had problems with object caches in this area, this is a nice solution. )

This was also one of the longer sessions we've had a while. Kunil ran out of time and had to blow through several slides about scale and examples of ways to use Terracotta. I think we could have listened to Kunil for another hour, possibly longer if he got into the details of how to use Terracotta with Tomcat for session management (the first thing I thought of when I understood this) or building caches to offload data from the database. Hopefully he or someone from Terracotta will come back, possible for Dev Days (Burr, you listening?)

Wednesday, July 16, 2008

Welcome to my Tech Thoughts

I've been hesitant to put things related to work or technology on my family blog, so I've decided now to create a tech specific blog.

While I won't link specifically to my employer or write about work-specific things here, I will write about technology and business things I find interesting.