Agile Teams: Unequal and Opposite Reactions

July 26th, 2010 by David Kessler No comments »

Einstein’s Third law of motion, “To every action there is always an equal and opposite reaction…” is a powerful standard in analyzing team dynamics.  I have been leading agile teams for over five years.  When I am asked to lead a new team I begin by looking for reactions that are disproportionate.  While this may seem like a strange place to focus this is a simple way to identify significant areas of improvement.

Time and time again, I have uncovered issues that have been ignored and/or hidden by exploring “over reactions”.  They are indicators that there is more to the story.  For example, one of teams that I was leading was very frustrated with how much time we were spending estimating stories.  Their frustration eventually culminated in some of the team members refusing to participate in team estimation meetings.  As you can imagine this created significant tension between the developers and the business team.
» Read more: Agile Teams: Unequal and Opposite Reactions

First Glance at PowerShell

July 21st, 2010 by Max Kuipers 5 comments »

A couple days ago I had the surprisingly excellent opportunity to learn and use Windows PowerShell… What? Don’t look at me like that. I disapprove of Microsoft just as much as the next Linux fanboy, but seriously, this was cool. Just give me a chance to explain. I swear, I was forced into the situation – one of the projects I was working on required a simple script be written to rename files on a Windows server, but for various reasons, I couldn’t use Cygwin. After a brief panic attack caused by the realization that I would have to be separated from my beloved Bash, I looked into which scripting language would be best. After an exhaustive, comprehensive, and fully extensive 30-second Google search I found myself with a choice between Powershell and classic Batch… Naturally, I chose Powershell.

» Read more: First Glance at PowerShell

How RAID 5 Works at a Bitwise Level

May 28th, 2010 by Max Kuipers No comments »

RAID 5 is a pretty magical thing overall, though a large portion of its magic lies in how it works on a bitwise level.  But before I get into the bitwise sorcery, I’d like to briefly explain what RAID5 is. RAID stands for Redundant Array of Inexpensive (or Independent) Disks. There are a number of different types of RAID such as RAID0, RAID1, RAID5 and RAID6 which each store data in different ways and have different space efficiencies and fault tolerances.
» Read more: How RAID 5 Works at a Bitwise Level

Installing Ubuntu: A Trial and Error Account

May 7th, 2010 by Ryan Day 3 comments »

Recently I decided it was time to grab up a spare computer that I could use for tinkering as well as back up files from my other machine in the event that it goes down. The one big thing I wanted to do was to install a Linux OS and experience everything that comes with it. This would be my first time installing a Linux OS. I chose to install Ubuntu since it is the most widely used and has the most extensive documentation and help available.

The Download
When I bought this machine it had a fresh install of Windows XP and came with the recovery disk which was excellent because I had to use it multiple times before I got things just the way I wanted them. Since this computer didn’t have any files I didn’t have to worry about backing anything up but it would be a must if considering putting Ubuntu on an everyday machine. To install Ubuntu you need the install CD. Ubuntu community can mail you one if you so request online, but why not be a DIYer and burn it yourself? I downloaded the Ubuntu 9.10 Desktop version for a graphical install and then went straight to burning it onto a CD. This was a mistake. I didn’t figure that the piece of the installation instructions regarding running the checksum was all that important, but it absolutely is. If the download is the least bit wrong the installation will not work. I burned several CDs of a bad image. Eventually I followed the installation documentation more closely and actually downloaded winMd5Sum. With this free tool I was able to compare the checksum of the downloaded image with the correct checksum from the Ubuntu site. It took several attempts and switching to a Canadian mirror before getting a successful download. Finally I could burn it to a disc.

» Read more: Installing Ubuntu: A Trial and Error Account

Incrementing Oracle Sequences Without Permissions

April 23rd, 2010 by Tim Bierbaum 1 comment »

If you are ever working with a database where data is consistently being imported, dropped, and/or restored; sooner or later you will find yourself in the situation where the primary key of a table is no longer synchronized with the sequence used to generate it.
» Read more: Incrementing Oracle Sequences Without Permissions

Google Analytics Data Export API – Part 1

March 30th, 2010 by Octavian Covalschi No comments »

When Google exposed its Data Export API, it endeared itself closer to developers and to customers of Google Analytics. Data Export API allows us to develop client applications to retrieve data from existing analytics profiles of authorized users.

How does it work?
The Data Export API provides read-only access to all available analytics data. Any data that is displayed in the analytics web interface can be accessed through this API. Nice isn’t it? You can get all your analytics data, for all your monitored websites and use it as you please.

» Read more: Google Analytics Data Export API – Part 1

MySQL Master/Slave configuration with EJB3 and JPA

March 26th, 2010 by Vaithi Subramanian No comments »

Well this turned out to be quite an exercise.

The goal: scalable reads with MySQL in master-slave configuration, writing to the master, and reading from N slaves, load balanced in round-robin fashion (or something).

The problem: using JPA (Java Persistence API) instead of direct JDBC calls. Turns out the MySQL ReplicationDriver (used to load balance reads to slaves and send writes to the master) relies on the readOnly state of the Connection in order to decide whether it’s a read or a write. With direct JDBC calls, I could get the Connection and toggle the readOnly state as needed.
» Read more: MySQL Master/Slave configuration with EJB3 and JPA

Loadbalancing and its benefits

March 17th, 2010 by Ryan Day 2 comments »

What is load balancing?
Load balancing is the practice of distributing a workload across multiple computers for improved performance. Load balancing distributes work among resources in such a way that no one resource should be overloaded and each resource can have improved performance, depending on the load balancing algorithm. Items such as network traffic, SSL requests, database queries, or even hardware resources such as memory can be load balanced. This practice is commonly used in server farms where multiple physical boxes are coordinated to fulfill the requests of many end users.

» Read more: Loadbalancing and its benefits

Musings of a SpringOne 2009 Attendee – Day 4

March 10th, 2010 by Sudhakar Ramasamy No comments »

This is the last and final part on my SpringOne 2009 experience. It’s late catching up to the 3 earlier posts but it’s here now. This post summarizes the sessions I attended from day 4 and wraps up with a summary of my take aways. If you want to catch up here are the three earlier posts:

  1. Musings of a SpringOne 2009 Attendee Day 1
  2. Musings of a SpringOne 2009 Attendee Day 2
  3. Musings of a SpringOne 2009 Attendee Day 3

Read on for day 4.

» Read more: Musings of a SpringOne 2009 Attendee – Day 4

Rendering Global t:messages After Redirect

March 8th, 2010 by Max Kuipers No comments »

A common problem when working with JSF is getting global info messages  via <t:messages globalOnly="true"> or <f:messages globalOnly="true"> to display messages set in the previous request when you have a <redirect/> in your faces-config for a particular page You will not see your <t:messages> that are set on the previous page.

The Problem

For instance, say you have two pages – page1.xhtml and page2.xhtml. In your faces-config.xml, you will have 2 entries.

» Read more: Rendering Global t:messages After Redirect