computing (104)

Software nudge system

You know how you have to nudge appliances to get them working when they get stuck having a glitch? Like hit the TV to get it to sync, fiddle with a faulty switch, etc.?

Right now, the only nudging mechanism we have in software is to kill the faulty process. This is equivalent to destroying the appliance and getting a new one in its place! Surely we can do better.

Internet-wise authorship attribution

In the pre-Internet days, an author's works (essays, novels, letters, articles) were published in book form by a publishing house. In the Internet age, however, the author publishes most of his works and his thoughts on the Internet directly, the paper publishing industry having lost its monopoly. The advantages of direct Internet publishing are: lower publishing costs, lower error-correction costs, more information granularity, more specialized structures for different information (e.g., USENET, forums, Wiki, source code, etc.), more interactivity and more democratic access to publishing.

Class lifecycle and business workflow

The main classes of an object model correspond to domain entities discovered during the business analysis phase of the software project. For example, Employee, Customer, Product, Order, Invoice, all are entities that find their way to become classes and associated data tables. Often, if not always, these entities have a well-defined lifecycle specified by the business process being automated. For example, Invoice goes through several states of Draft, Approved, Sent, Returned, Paid, etc., with well-defined transitions, before becoming inactive and ready for archival. In simpler situations like Customer, there can be as little as two states Active/Inactive with no final end state.

Fun filesystem-level ideas

The file and folder metaphor lies at the heart of computing. It is such a powerful concept that it has acquired a status of "reality" as strong as a book, even though a computer file is nothing more than some bytes strung together in a filesystem entry, disseminated randomly on a disk. This concept has tremendously helped us organize digital information, and here are a few ideas on how to extend it as we go towards the unified computing environment.

1. CVS filesystem\A filesystem that integrates CVS functionality. The idea is to enable rolling back (i.e., 'undo'ing) any version of a file, individually or as part of a transaction, like a process that modified several files during its execution.

Grokking Drupal

in

I credit the Riff Blog for this great title.

Drupal distinguishes itself by its structure for organizing and structuring information. The combined concepts of content type and multi-dimensional taxonomies provide a great framework for modelling information in many diverse application domains. To this end it would be nice to extract the UML model of its core system (The Riff Blog entry currently only has an image of it) and use it as a base for application-specific models, that can then be transformed into code of any language via model-driven development (MDA, MDD, MDXX).

Drupal as Wiki container

in

To migrate from a Wiki to Drupal, we need to preserve two things: the content represented as HTML pages containing Wiki syntax, and the structure built by Wiki terms referring to content that contains other Wiki terms. We'll discuss the structure first.

In Drupal, the Wiki structure can be represented by a vocabulary with the following properties: flat (hierarchy disabled), multiple select and required. Each Wiki term will be translated to a Drupal vocabulary term. Each node will correspond to one Wiki page. A node will be tagged primarily with the Wiki term that refers to it. In addition, it will also be tagged with Wiki terms referring to nodes that link themselves to the original Wiki term. And so on recursively (until a cycle occurs).

Drupal as portlet container

in

The title is pretty self-explanatory. The idea is that PHP is great for layouting and templating while Java is really needed for business and data tiers. Implement JSR-168 and WSRP. Augment the Portlet context to include a Drupal context. This would need some sort of PHP-Java bridge.

Drupal as project management information system

in

Many types of information are used to deliver a software project. These types include:

  * Requirements
  * Risks
  * Tests
  * Release notes
  * Instructions (manual, how-to, FAQ)
Traditionally these informations have been stored in text documents as bullet points. The problem with this approach is that each point is highly dynamic, quickly leading to outdated documents as the project evolves. The approach suggested here is to use Drupal's ability to define new content types and taxonomies, to efficiently stored those informations in a way that allows easy retrieval and update.

Drupal-based filesystems

in

The idea is to replace the single hierarchy of current filesystems with hierarchies and tags in more dimensions. For example, does the proposal document belong to the "software process" hierarchy under the "proposals" branch or under the "clients" hierarchy under the customer's name? It can be both.

A Drupal module would expose the new content type "filenode". This can represent a single file or a folder which is a collection of other filenodes. Drupal taxonomies can then be used on physical files and folders. The module is mounted on a physical filesystem path and can be navigated from there.

Don't fight Windows, assimilate it!

in

Windows is an operating system that works. Not flawlessly, but then neither does Linux, its flagship open source "competitor". One of the main promises of open source is to integrate heterogeneous systems, and Windows is definitely heterogeneous. But its user interface, however restrictively linear it can appear to Linux users, is within the grasp of most of today's humanity, which is in itself no small feat.

What's my point? A company that wants to be based on open source software must be able to use Windows as part of its standards-based network, not insist on rooting out Windows completely. To start with, all servers should be Linux-based. Open server systems are equivalent if not superior to their closed counterparts. The choice to use Windows on the workstations is made case-by-case, depending on the needs of each user or department. For example, Windows is still needed for tasks like graphic design. Shifting the designers from using software like Photoshop, Freehand or 3ds Max to their still-clunky open source equivalents will result in a massive creative and operational disruption that is unwarranted. Same goes for sound and video design. Other options here include the Macintosh/Macintel as it is based on an open source variant of UNIX and much easier to integrate (TO VERIFY). Of course, the Mac is more expensive but I don't think the markup is only for Apple's brand name.

Syndicate content