Showing posts from December, 2003


JXPath to rescue! Querying a database is no big deal. SQL has been around for a long time and has become the de facto standard for doing that. So has JDBC, even though nowadays it is being used more as the foundation of other solutions and frameworks. But what you do when you have to query objects? Most people wouldn't be able to answer it, really. Three more common ways of querying your objects in Java are custom indexing, OQL and JXPath. This entry is specifically about JXPath.

Raptor RDF Parser 1.1.0

[redland-announce] ANNOUNCEMENT: Raptor RDF Parser Toolkit 1.1.0 Raptor is a free software/Open Source C library that parses RDF syntaxes such as RDF/XML and N-Triples into RDF triples. It handles all RDF vocabularies such as FOAF, RSS 1.0, Dublin Core and OWL. Raptor is designed to work closely with the Redland RDF library but is fully separate. It is a mature, portable and high performance library that works across many POSIX systems (Unix, GNU/Linux, BSDs, OSX, cygwin) and others. It has been tested on multiple architectures (x86, IA64, powerpc, alpha, sparc). Raptor has no known memory leaks and is suitable for embedding in long running applications. This version is a major release with the main addition that of a new parser for the N-Triples Plus[1] syntax which is based on N-Triples with selected useful syntax added from Notation3.

Matz on Craftmanship

Matz on Craftsmanship Programmers can get a lot of benefit from reading source code. You can't simply tell people how to be good programmers. You can offer them some principles of good programming. You can describe some good design experiences you've had. But you can't give them a real knowledge of how to be a good programmer. I believe the best way for that knowledge to be obtained is by reading code. Writing code can certainly help people become good programmers, but reading good code is much better.

Linux 2.6 Scheduler

Ars Technica: Linux.Ars (12/24/2003) Welcome to this week's edition of Linux.Ars. Today we feature a detailed description of one of the most important parts of the newly-released Linux 2.6 kernel: the scheduler. The new scheduler features several improvements over that in 2.4; we will not only explain the improvements, but also describe how the scheduler works and why these improvements are important.

End of Life for Servlets?

MBlog : Greg Wilkins The Container would be able to efficiently implement transport features such as compression, conditionals, encodings, ranges and protocol specific features. The application components could be written with no concern for transport and thus application developers need not become protocol experts in order to write save, portable and efficient code.

World of Ends

World of Ends Fortunately, the true nature of the Internet isn't hard to understand. In fact, just a fistful of statements stands between Repetitive Mistake Syndrome and Enlightenment...

Quit Slashdot

Quit Today! Welcome to the home of the Quit Slashdot movement.

Interview with Kent Beck

Working smarter, not harder: An interview with Kent Beck Java is so pessimistic. You have this compiler saying, "I'm not sure this program isn't going to run so I won't run it." I find that attitude disturbing in a program. I notice that the safety in pessimistic languages is an illusion.

XML 2003 Reflections

Xml 2003 Reflections - Adam Bosworth Keynote Adam Bosworth of BEA delivered the opening keynote address on Wednesday. He started by reminding us of the dream that XML geeks shared back in 1998: Information should not get lost in presentation. Actual XML practice has to some extent diverged into two separate streams -- documents on one hand, and application data on the other -- but together they have helped take back the world from the "hideous complexity and fragility" of information presented in .DOC, .EXE, etc. files. Web Services too complicated?? YES! Remember, I can still buy a book on Amazon with just HTML and cookies. Why the trend for complication?

Wonderful World of Linux 2.6

Wonderful World of Linux 2.6 - Joe Pranevich Although it seems like only yesterday that we were booting up our first Linux 2.4 systems, time has ticked by and the kernel development team has just released the 2.6 kernel to the public. This document is intended as a general overview of the features in the new kernel release, with a heavy bias toward i386 Linux. Please also be aware that some of the "new" features discussed here may have been back-ported to Linux 2.4 after first appearing in Linux 2.6, either officially or by a distribution vendor. I have also included information on a handful of cases where a new feature originated during the maintenance cycle of Linux 2.4, and those will be marked as appropriate in the text.

Atom Project

FrontPage - Atom Wiki We're writing specifications for syndicating, archiving and editing episodic web sites. RSS is SOOOOO last week.

Real World XP Story

Mission-Critical Development with XP & Agile Processes Thanks to our process, we have complete confidence that we can fix bugs and add features without introducing new problems. This article is preaching to the choir, but still a good read.

Common HTTP Implementation Problems

Common HTTP Implementation Problems This document is a set of good practices to improve implementations of HTTP and related standards as well as their use. It explains a few basic concepts, points out common mistakes and misbehaviors, and suggests "best practices".

RDF is Proposed Recommendation

Archive of W3C News in 2003 W3C is pleased to announce the advancement of the Resource Description Framework (RDF) to Proposed Recommendation. Comments are invited through 19 January. The RDF language is presented in six technical reports. RDF is used to represent information and to exchange knowledge in the Web.

Mock Objects in Java

Java(TM) Boutique - Using Mock Objects in Java A mock object is, as the name implies, a simulation of some real object. In Java, a mock object would typically be an implementation, with very limited functionality, of an Interface. Mock objects play a significant role in unit testing, for a number of reasons. You'd consider using a mock object for your unit test if the real object has a complex set-up, uses many system resources (like cpu power), or doesn't yet exist! If you're writing an application that uses a database, there's no need to wait for the team that develops the database modules before you start coding the rest of the application. What you need is a mock object that behaves like the database modules. If you have interfaces defined to the database modules you're ready to go. Coding with these interfaces might even bring some problems in the Interface design to the surface before the coding of the database modules has even started!

SemWeb Tips

Semantic Web and Resource Description Framework Hints and Tips It is important that on the Semantic Web, people produce data that is clean and interoperable. Some RDF techniques can currently only be learned through the RDF community, through hours of research, or through implementation experience, so this is an attempt to gather some useful but quick hints and tips into one place.

Hibernate Turns 2.1

Hibernate - Object/Relational Mapping and Transparent Object Persistence for Java Hibernate 2.1 is intended to be completely backward compatible with Hibernate 2.0.x. In addition to a number of bugfixes, 2.1 introduces support for native SQL queries, a powerful Query by Criteria and Query by Example API and improvements to the Hibernate Query Language. A new, fully pluggable second-level cache framework provides built in support for the JGroups-based JBossCache clustered cache, EHCache, SwarmCache and OpenSymphony's OSCache (Tangosol Coherence may also be used with Hibernate 2.1). A number or new performance-enhancing features were added, including batch-loading, more aggressive second-level cache utilization and a brand new query result set cache.

Practical RDF Town Hall

xmlhack: Practical RDF Town Hall Around 30 people attended the Practical RDF Town Hall at the XML 2003 conference this week, watching demos and asking questions. Norm Walsh inaugurated the festivities, noting that "I initially ignored RDF for a number of years, and eventually Dan Connolly showed me a few clever things you could do with it, and then I realized I could come up with a few clever things as well without waiting for the Semantic Web to emerge in the fullness of time."

Research into Effectiveness

Software Development Online: Proof Positive Solid research supporting the value of agility is beginning to come in, but the tough task of convincing the Doubting Thomases to "cross the chasm" may take further effort. Stupid web site makes you register to view article.

The Poetry of Programming

The Poetry of Programming Richard Gabriel is a Distinguished Engineer at Sun Microsystems, where he researches the architecture, design, and implementation of very large systems, as well as development techniques for building them. He is the author of three books: Writers' Workshops and the Work of Making Things, Patterns of Software, and Performance and Evaluation of Lisp Systems. He received his Ph.D. in computer science from Stanford in 1981 and returned to school to get a Master's in Fine Arts in poetry in 1998 at Warren Wilson College. In addition, he has in the works a program that would offer an MFA in software design. We recently caught up with him to trace the connections between creativity, software, and poetry. In which Richard Gabriel argues for a MFA in Software Engineering.


BeanShell - Introduction BeanShell is a small, free, embeddable, Java source interpreter with object scripting language features, written in Java. BeanShell executes standard Java statements and expressions, in addition to obvious scripting commands and syntax. BeanShell supports scripted objects as simple method closures like those in Perl and JavaScript(tm). Remind myself to check this out.

Role Fragmentation

Role Fragmentation - Software Reality One of the consequences of J2EE's deployment strategy is that developers can be seen staring aimlessly around the room for 5 minutes, or wandering off for cups of tea after changing a line of code and waiting for their EJBs to rebuild and redeploy. I've never drunk so much tea in my life; programming has started to become a background task. I now know what it felt like to punch programs into cards and wait my turn in the queue for the mainframe. In thirty years we've gone from computer tapes to red tape. This site is so bitter, but often they have excellent points.

JSP 2.0 Error Handling JSP 2.0: The New Deal, Part 2 [Dec. 03, 2003] This article is the second in a series of articles describing the features added in the JavaServer Pages (JSP) 2.0 specification. In part one, I described the new Expression Language (EL), but there's a lot more. This installment discusses the improvements made in the area of error handling and the new deployment descriptor features. I have assumed that you're familiar with JSP 1.2 and have at least heard about the JSP Standard Tag Library (JSTL).

Themes and metaphors in SW discussion

Peter Van Dijck - Themes and metaphors in the semantic web discussion In this article, I am trying to identify some of the themes and metaphors used in discussions about the semantic web

JXTA P2P Sockets Introduction to the Peer-to-Peer Sockets Project [Dec. 03, 2003] By the end of this article, you will understand the motivation and need for the P2P Sockets package, how to configure and set up the P2P Socket libraries to run on your system, how to create and run P2P server and client sockets, how to work with the P2P InetAddressclass, and security issues and limitations in the framework.

ApacheCon 2003 Roundup

O'Reilly Network: one more post about ApacheCon 2003 [Dec. 02, 2003] i got the opportunity to attend ApacheCon 2003 in Las Vegas (Vegas baby! ) two weeks ago. i thought i'd blog my notes so that you could get a feel for what was presented and how it was received. given BEA's growing commitment to open-source and Apache, i was looking forward to an interesting conference (and i wasn't disappointed). oh, there's also an official conference wiki you can check out too

Styling RDF Graphs with GSS Styling RDF Graphs with GSS [Dec. 03, 2003] GSS is a stylesheet language for styling RDF models represented as node-link diagrams. It is itself an RDF vocabulary and draws many of its instructions from existing W3C Recommendations, namely, CSS and SVG. GSS features a cascading mechanism; its transformation model is loosely based on that of XSLT.

GNU libavl - binary tree implementation

Ben Pfaff: GNU libavl Binary search trees provide O(lg n) performance on average for important operations such as item insertion, deletion, and search operations. Balanced trees provide O(lg n) even in the worst case. GNU libavl is the most complete, well-documented collection of binary search tree and balanced tree library routines anywhere.


Metalog - the semantic web query/logical system Metalog is a next-generation reasoning system for the Semantic Web. Historically, Metalog has been the first system to introduce reasoning within the Semantic Web infrastructure, by adding the query/logical layer on top of RDF. How did I miss this?

Pyrple RDF API in Python

pyrple - An RDF API in Python Pyrple parses RDF/XML, N3, and N-Triples. It has a queryable store, many utilities, and is small and minimally interdependent. It can do graph isomorphism testing, rule application, etc.

Rapid Development Using Python

Rapid Development Using Python Our interest in Python developed from a prototyping standpoint, but we quickly adopted it as the language of choice for our management interface as well as for ad-hoc prototyping of future concepts. Numerous developers have come up to speed with Python quickly, and they have expressed pleasant surprise at the simplicity of the language and how quickly they are able to fulfill functional requirements with it. Moreover, Python's robust string and file handling (as well as its built-in types) make it the language of choice for our user interface. We're quite excited about the potential that Python has given us.


Build a Java Web App Using HttpUnit and the Test-driven Methodology, Part I Unit performs automated testing for standalone Java applications that either run on the command line or serve as components. If you develop large-scale or distributed applications, however, you are most likely going to work with Java Web applications. Because Web applications communicate via HTTP rather than Java method calls, JUnit is poorly equipped to test Web applications. HttpUnit comes to the rescue. This freely available toolprovides Web testing functionality that complements JUnit. Don't forget about JWebUnit. I think it's a lot easier to work with.