Friday, September 06, 2002
Generics and Method Objects
In this article, I'll introduce you to the new Generics Specification (which came out of the Java Community Process) and then rebuild the command object framework using it. This won't actually change the performance of the application or add any new functionality. It will, however, add a substantial amount of compile-time type checking to the framework, thereby making the code easier to maintain and extend.
The Warriors Stood in the Shape of a Heart
Here's a picture of Warsingers funeral. Warsinger was an in-game persona in the rather good MMORPG Dark Age of Camelot". and generally well-liked. The real person behind Warsinger was a 32-year-old with heart trouble, who really died. So the players on his server organized an in-game funeral.At the funeral, players from the three realms of Camelot, who normally kill each other gleefully on sight, stood in the shape of a heart (check the pic above); the two figures in the center of the heart are Warsinger's real-life sister and girlfriend."
I don't know whether to laugh or cry.
From a comment...
For all of us who have logged on at 4am just to talk to friends and occasionally do some killing it is nice to see this sense of community alive and well. I just hope there weren't any trolls wandering around causing unnecessary mayhem at such a sacred time. (emphasis mine)
When the absurd becomes serious. #
Thursday, September 05, 2002
Moving beyond StreamTokenizer and StringTokenizer for pattern matching
While previous versions of the Java language supported pattern matching, the StreamTokenizer and StringTokenizer classes barely scratched the surface of what you can do with patterns. The Java 1.4 (and now 1.4.1) release contains support for pattern matching with regular expressions in the java.util.regex package. In this installment of Magic with Merlin, John Zukowski shows you how to parse sequences of characters with the new regular expression library to add power to your search patterns.
Replacing the byte-array and piped streams
While the new Java I/O framework, java.nio, addresses most of the performance issues with I/O support, it does not address all the performance needs of internal application communications using byte-arrays and pipes. In this final article in a two-part series, Java cryptographer and author Merlin Hughes develops a new set of streams that complement the standard Java I/O byte-array and piped-stream classes, emphasizing performance as a design goal.#
Wednesday, September 04, 2002
core Servlets and Java Server Pages
The complete text of Core Servlets and JavaServer Pages is now available on-line in PDF. Click on a link below to download the PDF for that chapter. All text is freely available for personal use, but you may not reproduce or redistribute the chapters.
Feature Bloat aka Everybody Wants to Rule the World
They want to right-click on a feed to chat with the editor of the feed. I like this feature because it's user-driven, and because I like working with Brent (he used to work at UserLand). But the problem is, according to Brent, who is researching it, there is no standard way to refer to an account on an instant messaging service. It's funny because we didn't know that when we did tcp.im in Radio and Frontier, we just went ahead with this format: service://screenname/, and no one seemed to object (if they did we didn't hear from them).
See, this is how it starts. Users make some off-the-wall request and developers feel compelled to solve the problem even though the problem is outside their domain. The problem of contacting the author of a blog over IM has absolutely nothing to do with syndication but it'll creep into there, you watch.
(This is also why I wanna kill RSS. It does too much and yet it never does enough.)
Also Dave, please consider using existing XML standards whenever possible. Use XLink to describe URLs. Metadata about the feed, such as the object that generated the feed, should be stored in RDF not in a <generator> tag. Also, the value of the tags like the generator tag should not be arbitrary strings, they should be URLs which uniquely identify the generator and might possibly be queried to retrieve more information. This also applies to the cloud tag. As far I can see, this tag has nothing to do with the content of the site itself it's more metadata about the site. Use RDF here too.
And again, please use XLink to identify links in RSS documents. I know this probably breaks backwards compatibility but it's very important to be able to analyze an RSS document without knowing that it's an RSS doucment but still having the ability to identify what it's related to. #
Science and Consensus
In college, a friend of mine named Lewis Gannet (whom I've long lost touch with) wrote an amazing paper drawing ideas from Claude Levi-Strauss's book The Savage Mind and Wallace Stevens' sole book of essays, The Necessary Angel, to argue that while earlier societies had shared belief systems, our challenge today is to build shared beliefs knowing that they are not "true". Stevens' solution, in "Notes Toward a Supreme Fiction", was to recognize that the construction of reality is an artistic act, not just a scientific one.#
Interaction Design and Agile Methods
Classically, design-intensive approaches have at least paid lip service to the idea that users--to the extent it was feasible to inject them into the design process--could improve the outcome. Cooper flatly rejects that notion. Designing complex systems is hard, he said; only minds that are innately talented, and then specially trained, can do it well. Users can't articulate what they need, and may not even recognize it when they see it. So it's up to the interaction designer to figure out what they really need--as opposed to what they think or say they need.#
Weblogs and communities
There are a lot of great ideas going around and I look forward to the tools and discussion this will generate. However, I think of this issue in a slightly different way, while linking neighborhoods, syndications, etc. all highlight the mechanical connections between related weblogs what interests me most are the conceptual threads of conversation that cross through many weblogs. This means extracting the relevant portions of many conversations, organizing the responses, editorializing the content, etc.
Web Services: Objects or XML Endpoints?
However, the syntactical similarity between Web service use and ordinary class use can lure a programmer into practices that aren't suited to a distributed environment. For example, it's easy to forget that Web service communication takes, comparatively speaking, a long time -- thousands of times longer than a comparable in-process method invocation. For this reason, it's simply not practical to use a chatty interface that requires multiple method calls for a single task, or (even worse) relies on property procedures. Each separate call to a Web service multiplies the performance hit on the client application, and the load on the network. It's far better to use a "chunky" interface that sends all of the required data in one pass...
Sometimes I can only just wonder at the SOAP people. Why do they insist on reinventing HTTP/REST? #
Which Table, Which Column?
Many potential problems lurk when you do not fully qualify column names using either table names or table aliases. In this article, I'm going to focus on just one such problem recently brought to my attention by a perplexed reader.#
The Death of EJB As We Know It?
Developers seek simpler alternatives to EJB for a simple reason: EJB is not only way overkill for most enterprise applications, but it also represents a huge learning curve for the average Java developer. The goal of "making enterprise applications easier" for developers (a stated aim of the EJB Specification) has been sacrificed on the altar of vendor-neutrality.
Accelerating JSP Tag Development with Jakarta Velocity
Tags are cool. Tags are, however, a pain to write for the same reasons Servlets are a pain to write; namely, putting HTML inside of Java code, which is neither pretty nor maintainable even in the short term. JSP was supposed to make mixing Java and markup easy.#
Tuesday, September 03, 2002
Secrecy is Our Enemy
The opinion was forceful and frequently eloquent.#
China Blocking Google [via boing boing]
"Please tell the world, that we need Google, or Yahoo or something else that's useful to do the research. We don't care about politics, but please help us to reach Google."#
Monday, September 02, 2002
DevelopMentor: Conference.NET Materials
I don't merely want a backlink - I want that blog entry to appear in my aggregator. And not just that entry, but probably the next several too. While at the moment, this is just wishful thinking at this point. But it seems obvious to me that blogrolls and subscriptions are vital enough elements in the blogging experience that there should be more tools to help manage these resources.#
If you listen to the tale Paul Prescod tells, Google had in its possession a vastly superior API which it chose to forsake, relegating it to a lifetime locked away in an ivory tower, waiting for a prince to rescue it. Meanwhile, a much hyped evil and ugly stepsister has been paraded around town. At this point, we have all the essential elements of a fairy tale.#
Using the Mozilla SOAP API
Although still in its infancy, the age of Web services and SOAP has already created a demand for a wide array of client technologies. A search for "SOAP client" turns up myriad implementations for C++, Perl, .NET, PHP, and Java. If you dig a little deeper, you can even find clients for languages such as Ruby, Python and Tcl. Most of these clients operate at the server level, either as middleware or as a component of a larger system.#
RSS 0.92: A Step-by-Step Beginner's Guide to Creating Your First Document
In this article, you will learn the basic nitty-gritty details of RSS 0.92, how it can help your site content reach a wider audience, and step-by-step instructions on how to write an RSS document for you own site.#
Sunday, September 01, 2002
OSAccess is a centralized Entitlement Engine. This is not meant to be a replacement for OSUser. Where as OSUser provides for user authentication across different server platforms and then give you access control at deployment time, OSAccess provides portable single point of entry for authorization to an subset of data. Security engines like OSUser let you state that a user can see account information. The Entitlement Engine the OSAccess implements then lets you state that the user can only see his account. Further it says that the support services can see his account but not change it. Thus, OSUser provides a generalized level of security that is effective for securing the website itself. And OSAccess is for securing the data that is displayed by the website resources.
Yes Susan, I think I will completely steal and rip-off this API. And yes, imitation is the sincerest form of flattery. #
An Introductory Guide to Building and Deploying More Secure Sites with ASP.NET and IIS, Part 2
Forms authentication is one of the most compelling and useful new features of ASP.NET. It enables developers to declaratively specify which files on their site can be accessed and by whom, and allows identification of a login page. When an unauthenticated user attempts to retrieve a page protected by forms authentication, ASP.NET automatically redirects them to the login page and asks them to identify themselves. Included here is an overview of forms authentication and what you need to know to put it to work. Also included is hard-to-find information on the security of cookie authentication and on combining forms authentication with role-based URL authorizations.#
The BlogMD Initiative
The guiding principle behind the BlogMD initiative is that by creating standards in the weblog metadata "problem space", we can enable greater collaboration and interaction between existing applications, as well as paving the way for future, currently unforeseen metadata applications by reducing or eliminating much of the redundant, "reinventing the wheel" work currently involved in creating a new weblog metadata application.
There people are doing exactly what I'm doing. I should probably help and offer up a few of my ideas.
But I wont. Why?
Technology like this shouldn't be developed by committees. Committees suck. I mean they really suck. I'm talking Pauly Shore type suckage. Let the lone wolves solve this problem and then solve the interop problem (using XSLT). #
An ascetic view of XML best practices
MonasticXML.org is a look at XML from a different angle, focusing on what markup is best at rather than what markup can do to solve a particular problem or set of problems. While XML is powerful, developers seem insistent on using XML in ways which seem convenient for a moment but which cause much greater trouble down the line to both their projects and to markup itself.
I agree some with what he says. At this point I'm ready to throw everything but XML, XSLT 1.0, XLink and Namespaces out the window. Even RDF irritates me to no end because it's just so heavily abused. #