Posts

Showing posts from August, 2003

Better Living Through Software

Better Living Through Software

"RDF is often a whipping-boy, but a red-herring in this discussion."

Good discussion of RDF and SemWeb, explaining it and the issues.

The New X-Men

Wired 11.09: The New X-Men

The Mountain Dew-fueled all-nighter is history. Today's supercoders work 40 hours a week. And two to a computer. It's called extreme programming - and it's revolutionizing the software world.

An Extreme Programming Episode

Object Mentor - xpepisode.htm

In order to demonstrate XP (eXtreme Programming) practices, Bob Koss (RSK) and Bob Martin (RCM) will pair program a simple application while you watch like a fly on the wall. We will use test first design and a lot of refactoring to create our application. What follows is a faithful re-enactment of a programming episode that the two Bob's actually did.

xprogramming.com

XProgramming.com - an Extreme Programming Resource

XProgramming.com is a resource for information about Extreme Programming (XP), the exciting new streamlined software development process originally described by Kent Beck. XProgramming.com is offered as a community resource for those interested in XP and related topics.

The Test/Code Cycle

Specifically, it shows how unit tests and simple design work together while programming. Observe how the coding process occurs in small steps, just enough implementation to make each test run. There's a rhythm to it, like a pendulum of a clock: test a little, code a little, test a little, code a little.


I'm a big fan of Test Driven Development (TDD). My favorite aspect is that it allows me to write the least amount of code possible. I spent time making tests pass, instead of coming up with the coolest way to do it.

Emergent Design vs Early Prototyping

Emergent Design vs. Early Prototyping - Software Reality

However, early prototyping (used correctly) provides many of the benefits of an agile approach (for example early feedback), whilst retaining the more rigorous benefits gained from designing a system before coding it up.


This article seems to forget all about XP's Spike Solution phase. In this phase, if the solution to a problem is unknown, it's OK to do a Spike Solution. This is a quick test of a small slice of an application to prove, or figure out, what and where the pieces of an application might be. For instance, if there is a new persistence layer that might be nice to use, test it out in a Spike Solution.

This seems to be sort of the ideas behind the article. I disagree with the article on a few points. For example, time is always important on projects. You never have time enough. Why waste it on prototyping code to throw it out? By using XP's other tenets (unit testing, constant refactoring) the beginnin…

EJB’s 101 Damnations

Software Reality - EJB's 101 Damnations

Whilst writing the EJB modules for our JGenerator product, we started punting an email back and forth containing all the issues we had with EJB. And there were many. Before we knew it we ended up with 101 howlers.

This is an old document, one that I just dug up. Some of the points are valid, some less. But it all adds up to one thing: EJBs are often used as the wrong solution.

Input Tag Library

Jakarta-Taglibs: Input Tag library

The "input" tag extension library lets you present HTML elements that are tied to the ServletRequest that caused the current JSP page to run, or to a JavaBean. That is, using this library, you can easily prepopulate form elements with prior values that the user has chosen -- or with default values for the first time a user hits a web page. This is useful when you need to present the same page to the user several times (e.g., for server-side validation).

This is to help me in my quest to find replacements for the pieces of Struts that I like
in an effort to move away from Struts.

The Case Against Extreme Programming

Extreme Programming problems

This is a long article, and I admit I had trouble getting through it. I believe the author has some points worth mentioning, but fails to really grasp a major aspect: That XP is not for every project or team or situation.

I am a huge fan of XP for many reasons. Each methodology addresses a unique set of problems or issues. XP addresses two main issues: Change and the Risk associated with it. XP attempts to mitigate the risks of changing the system.

If you are lucky enough to be on a project where the customer can clearly articulate their requirements once, then maybe XP isn't right for you. From experience, most customers in the e-business arena, don't know what they are building. Some don't even know the problem they are trying to solve. XP, then, is a great way to tackle the problem.

Again, choosing the right methodology is not easy, but understanding the potential problems of the situation will help in picking the right one. Understand w…

Problem with XP?

Fundamental Problem with Extreme Programming

"XP requires too much of an investment from the business."

I disagree with that statement completely. XP allows the business do what they do best: solve business problems and be in control of the software deliverable.

If the business doesn't know enough about the problem they are trying to solve, then the project will never be correct. It doesn't matter how good the programmer is, if the customer doesn't know what they are trying to accomplish, then the project is doomed.

Of course, the question of "How to technically solve the problem" is up to the programmer.

XP is good because it acknowledges the customer is a participant in the process of developing software during the entire process.

Python + Eclipse

PythonEclipse

PythonEclipse is just at it's start. So it currently only features an incomplete Python editor, the ability to create launch configurations for Python and to launch Python scripts.

GSS: Graph Stylesheets

IsaViz/GSS User Manual - Graph Stylesheets

Graph Stylesheets are a way to associate style to node-edge representations of RDF models, but also to hide part of the graph and to offer alternative layouts for some elements. This means that based on some selectors (detailed later), it is possible to assign, among other things, color, stroke width, bitmap icons or font style to specific nodes and edges in the graph. It is also possible to hide selected nodes and edges, or to lay them out (along with the node at the other end of the edge) in tables in order to group them in a region of the visualized space.

IsaViz 2.0

IsaViz Overview

IsaViz is a visual environment for browsing and authoring RDF. It's now at version 2.0.

Jython

Jython Home Page

Jython is an implementation of the high-level, dynamic, object-oriented language Python written in 100% Pure Java, and seamlessly integrated with the Java platform. It thus allows you to run Python on any Java platform.

I just got this to work with PyServlet. It's a servlet w/ a Jython interpretor built-in. It can reload the python file when it changes, which is really nice.

The more I think about it, though, the more I want Eclipse to handle Python. I know Jython is really cool, but I can't take advantage of all the amazing code completion and refactoring tools Eclipse has to offer.

In short, I am looking for Eclipse + Python + Servlets. I just need a less verbose language that doesn't need to get compiled that has a kick ass IDE and that has a nice, mature web framework.

So close!

Enhancing Data Interoperability with Ontologies

Enhancing Data Interoperability with Ontologies, Canonical Forms, and Include Files

There are many different units-of-measure. Lengths, speeds, locations, etc can be expressed in many different ways. Fusing two independent pieces of data that, for example, express the same length but use different units requires the fusing agent to recognize that the data is related via a transformation. How can relationships which involve transformations be declaratively expressed?

Just In Time Design

Demystifying Extreme Programming: Just-in-time design

People who aren't familiar with XP are bothered by the concept of just-in-time (JIT) design -- designing and implementing what you know you need right now and not worrying about future design issues until absolutely necessary. While this approach might seem unwise or even reckless, XP advocate Roy Miller wraps up his series by showing you how safe and easy JIT design is -- and how it just might revolutionize the way you write code.

Struts and WebArch

The Apache Struts Web Application Framework

At first I thought this post wouldn't fit this blog's theme, but then again, I realized it's all about Web Architecture.

I've been using Struts for years, and it's a true love/hate relationship. Actually, it's more of a Like/Hate.

I'm going to try to enumerate why I like it, and why I don't.

Why I like it:


Automatic form validation. In retrospect, I only use this sometimes. Still, it's nice to have a form fail validation and get redirected to the input page.
Automatic form filling for those failed forms. It's nice to have the select box, for instance, come up to the correct option.
It's a well known framework. Don't have to teach people much.


Why I don't like it:


No support for action name with wildcards. For instance, you can't setup a mapping for /person/*. There is some hacking you can do, but it only gets you half way. In the <html:form> tag, you can't use those wildcards w…

Mapping London as RDF

this is a kind of collaborative mapping project. it consists of geographical models which are represented as RDF graphs. you can wander round them, like a MUD or MOO, with a bot interface which you can use to create and connect new places.

RDF is the new sex

Ecademy - RDF is the new sex

RDF is the new sex. 'nuff said

The Future of Human Knowledge

TechNewsWorld.Com: Real-Time Technology News from Around the World

Under an interdisciplinary project collectively known as the Semantic Web, computer scientists around the world are working on ways to revolutionize the Internet. The researchers -- from Europe, Asia and the United States -- are developing standards, protocols and technologies that will advance the development of a more meaning-oriented Web.