Contact

Tim's Software Development Logbook

7/13/02

Today I received my Day Sailor Helmsman Certification. That means I can check out the Day Sailor from the Providence Community Boating Center.

To pass the test, I had to set up the sails on my boat, do two tacks, two jibes, and successfully park the boat at the dock.  I had a little trouble on the first jibe and started to heel and take water into the boat, but then recovered and finished the jibe.  I also had a bit of trouble parking because I wasn't coming up steeply enough into the wind and missed the dock twice before successfully docking.

The Community Boating Center in Providence is located in Providence's commercial wharf.  There are several tugboats tied to a concrete pier just to the west of the center and oil tankers and other large ocean-going cargo ships are regulars in the harbor.

I've always enjoyed large-scale industrial technology so its fascinating sailing in the harbor and watching what is happening.  The cargo ships are outfitted with cranes and rise about 3-4 stories above the water.  They generally spend about a two weeks unloading their cargo so you can see the cranes and belts and scoops unloading whatever it is that they are carrying.  It is fun to watch the ships change and see the different kinds of cargo that each ship unloads.  Of course, it is also fun to sail. 


7/10/02

I am still basking in the glow of a wonderful backpacking trip in the Great Gulf Wilderness.  After three years of Saint Louis, I am glad to be back within a few hours of mountains.   It was great to discover that New Hampshire has real mountains! 

I left Providence in a half-organized rush at 12pm.  About halfway through Boston, I realized I had left my hiking boots at home.  Oh well, I guess it would give me a chance to strengthen my ankles.  I arrived in Gorham, NH at 4pm.  Enough time to buy a parking permit at the Androscoggin Ranger Station.  Without much knowledge of the area, I decided to head for a tent platform about 3 miles on the Osgood trail.

My timing was perfect.  At about 8pm it started to rain and I arrived at my camp.  I set my new North Face Talus tent up on the platform and tried to get Teton come in out of the rain.  He would have none of it.  The wolf in him wanted to dig a nest under a pine tree.  He seemed to have forgotten mountain mosquitos.  By morning he was so bitten his eyes were swollen shut.

My goal that day was to get to the Madison Hut, which was over the summit of Mt. Madison, 5367 feet above sea level.  As we left the cover of timberline and began the ascent, great black clouds started billowing over the peak from the north-west.  The wind began blowing hard, and with a 60 lb pack and tennis shoes, I decided that discretion was the better part of valor and headed back down.

Not wanting to camp in the same spot, I decided to head for the Madison Gulf trail.  I had seen campsite markers in the Ranger Station in that general vicinity, and guessed that I was probably only a mile or so away.  By this time, I was pretty sore and my feet were bruised and battered.  Fortunately, the trail wasn't too difficult and I reached a new camp after about a mile.

The second camp was gorgeous.  It was on a precipice about 200 feet above the confluence of the Peabody River and the Parapet Brook.  I fell asleep and dreamed of a great symphony as the river roared a deep base and the brook gurgled melodiously in an alto timbre.

The site overlooked Mt Washington to the southwest and Mt. Adams to the North.  A trail led through the trees up to Madison Hut and I intend to take that trail the next time I go.  As I awoke in the morning, I was just so thrilled to have the priviledge of having this beautiful place as my back yard for a day.


6/19/02

Out in Providence, I am keeping myself gainfully occupied by reviewing statistical analysis using the "R" package, which is a GPL version of Splus.

My idea is to put together some of my data mining skills to and use LTER project data as examples for a review of statistical analysis.

The temperature readings in the figure begin July 1988 and end July 1989.   It looks like it will fit nicely to a sine curve! 

I find temperature data interesting is that it is strongly correlated to other natural phenomenea: snowmelt, water temperature, and phenology.  It is also readily available and intuitive.


5/20/02

I am on the road out to Providence, RI for a big adventure in finding a job and learning a new town. Its great to think that I will be living in the hometown of H. P. Lovecraft, just down the street from The Shunned House.


4/21/02

I need to thank Borland for pricing me out of JBuilder. I've been using JBuilder since I started programming Java and was really excited to get the latest refactoring JBuilder, until I found out that the refactoring portion only came with the $3000 version. How lame is that?

I went on a quest to find a new development environment. I tried IBM WebSphere Studio. I came away feeling like it would be great for using on a big project with lots of other developers, but for my own stuff, it was simply overkill.

A lot of my friends had been talking about IntelliJ and so I gave that a try. I love it! It does everything that the JBuilder Enterprise did and it is probably the most usable IDE I have ever used. At $395, it is within my own budget.

The thing I like most about IntelliJ is that it seems as though they designed it with test-first programming in mind. The JUnit integration is beautiful. I can change packages, change classes, change methods, and it is all handled by the IDE, so no more tedious refactoring query-replace sessions.


3/01/02

Every so often I am struck by the similarities between XP and Marxist Theory. Even the XP "core elite" have grasped this relationship, and have a "Manifesto for Agile Software Development."

In practice they are quite similiar. Each offers an excellent framework for sociological analysis. Once you have a little circle of life, you can analyze many previous projects and point out the points on the circle that would not have failed had it been for XP. You can also debate nearly infinitely on the effects of PairProgramming on the other practices. PairProgramming and CollectionCodeOwnership are clearly tied together. If you have pairs, then you have a sense that no one person owns a part of the code. PairProgramming means that all source is peer reviewed and that solid architecture (MetaPhore) will arise from refacting simple, but solid initial steps.

Also, like Marxist theory, XP can be a red-herring to divert people from dealing with their real problems. Certainly a development team can get the perfect XP paradigm figured out, but if they can't figure out what to do, because the customer relationship lacks shape and definition, then they can't really deliver the product. Likewise, you can't assume that the planning game will replace a simple spreadsheet of tasks, assignments, priorities, and a detail-oriented lead that makes those tasks happen. How much methodology do you need to track an XSL spreadsheet?


2/01/02

The waterfall process is a standard topology of project management that has some well-known problems, but also is well-understood and common in development practices.

During the "requirements" phase, it pays to develop a working UserInterfacePrototype to show to the customer.  The customer can then pilot the system and define the requirements precisely on paper.  It is extremely important in waterfall to get the requirements correctly the first time, because any changes after the implementation begins are extremely costly .

During the "design" phase, each developer is assigned a feature from the functional specification and they do a design.  The design phase should include a PlanOfAttack and that should list all the files and or packages that the developer will be changing.  For waterfall, you will need to segregate the ownership of all code because during the course of implementation, each developer will work pretty much independantly and you will need to spend a lot of time in integration later.  That underscores the need for RigidInterfaces.

During the "implementation" phase it is helpful to divide up any task into InchPebbleReleases. Each of these releases should be accompanied by UnitTests, SystemTests, and a PeerCodeReview by a different reviewer each time. Having InchPebbleReleases addresses some of the big problems with traditional waterfall.

  • Small releases are easier to review effectively.
  • Integration with existing applications is incremental.
  • Architecture is evolved iteratively through each review.

PeerCodeReviews are performed with the aid of the DesignDocuments and automated tests. The programmer should have UnitTests for all their new code, as well as a SystemTests. This helps the reviewer to verify code coverage and also see the behavior easily.

PeerCodeReviews are an interesting aspect to waterfall in that they have the same independent relationship with a number of other practices.  The most prominant being SourceCodeLocking.  If you do PeerCodeReviews it is important to make sure that only one programmer is working on any one piece of code. 

Testing is traditional testing, done in house (alpha testing), and externally by selected customers (beta testing). Most people underestimate the quality required before beta testing can begin. Beta to the user might as well mean release.   When you send code into Beta it should have no bugs or missing features.  With waterfall, ZeroDefects is a must because fixing a bug nearly equivalent to the cost of a change.

 

 

Releases should run in two-three month cycles.  Anything longer is an indication that you are taking on something that is too risky.  If you indeed need an application that solves a huge problem, certainly you can solve some simpler problems that will benefit the customer on your way to solving the big problem.

 

 

Feedback

 

Articles

Common Nonlinear Models

 

A J2EE-based Mud

 

Non-Blocking Socket I/O in JDK 1.4

 

Generating Entity Beans with XSL Templates

 

 

Archive

2001

 

 


Copyright 2001 Owl Mountain Software, LLC. All Rights Reserved.

 

1