FeelingElephants’s Weblog

18 November, 2007

How to Find Information Fast (2 of 3 How Tos)

Filed under: open source, politics-tech, workflow — feelingelephants @ 6:06 pm

I often find myself researching something I know nothing about. And I usually don’t have much time to find out what I need to know. I have a fairly simple process through which I find out information which I thought was a pretty weird way to do it, until I asked a friend with similiar research needs and found out he did it the same way. Go figure. Anyhoo, here is my process.

Define what you need to know

This can be done with the simple question: what do I need to do to get where I want to go.

Get a good webpage on it

I and about 50/50 on wikipedia. I usually need a great deal more depths and more instructions than wikipedia will give me.

Look up *every single term* which you don’t know

Many will be hyperlinked out, just click on the hyper link. Don’t feel a need to read the content at the end of the link unless that terms comes up multiple times.

Keep records

It could be an NeoOffice Spreadsheet, a bookmark list, heck, an index card. But find a dynamic way to keeping track of where you’ve been. I like the spread sheet because I can put a link, a description of the webpage that links takes me to and a brief reason why I care about that web page.

Keep learning

If you realize 3/4s of the way through a project you have no idea how you got there, go back to your first good web page and your resource list and refresh yourself. Odds are you’ll find you understand a great deal more about the subject than when you started.

Here’s an example using the process outlined above.

Define what you need to know

I need to get mail functionality on my jbpm workflow.

Get a good webpage on it

The official jbpm user guide gives basics and code.

Look up *every single term* which you don’t know

However it does not give me nearly enough information. Having narrowed what I want to an email sent off by an AAction as part of a State Node, I put the following code into my Process Definition (the actual nodes names have been changed for their own protection. My nodes are too young to have a web presence :-D):

Then I tried running my code to see if anything different happened. Ok, I knew it wouldn’t work, but I wanted to see if it would.

<end-state name=”Sucess”>
<event type=”node-enter”>
<action name=”Bake Muffins”>
<name-mail to=’MyEmailAddress’ subject=’urgent’ text=’Put in the Muffins’ />
</action>
</event>
</end-state>

It didn’t do anything.

Going back and reading the User doc more carefully I found the following statement:

“16.7. Mail server

If you need a mailserver that is easy to install, checkout JBossMail Server or Apache James

Ok, so I need a mailserver. Apache has some of the nicest intro docs I have seen in a long time. I fell a little bit in love.

But before I went and set up a mail server, I wanted to make sure I could make my workflow communicate in some way. Therefore I put in the code (again, the anonymity of my nodes are protected by false identities):

<state name=”Baking Muffins”>
<action name=”OpenOvenDoor” class=”com.OpenOvenDoor”>
<message>Don’t Touch Hot Oven!</message>
</action>
<transition to=”Run Ingest”></transition>
</state>

com.OpenOvenDoor reads:

package com;

import org.jbpm.graph.def.ActionHandler;
import org.jbpm.graph.exe.ExecutionContext;

public class OpenOvenDoor implements ActionHandler {

private static final long serialVersionUID = 1L;

String message;

public void execute(ExecutionContext context) throws Exception {
context.getContextInstance().setVariable(”Don’t Touch Hot Oven!”, message);
}
}

Now this code worked. It is definitely not the most elegant way I could have done this (Don’t Touch Hot Oven shows up in two places–I will need to figure out which one actually is forcing the display of that message) but I did figure out that I could make my jbpm run java.

Keep records

I have a spreadsheet I keep updated with every website I have found which was relevant to my jbpm searchings. I go back through it sometimes when I’m stuck to see if there’s a resource I’m neglecting. It is a very nice way to keep organized.

Keep learning

Now I just have to figure out how to set up a mailserver. It should be fun! When I get it to work I’ll post. This would be me learning. :-D

Inspirational Quote:

“Gravitation cannot be held responsible for people falling in love.” Albert Einstein

12 October, 2007

I have conquered Unix!

Filed under: open source, workflow — feelingelephants @ 9:46 pm

Ok, not Unix as a whole, but command line with shell scripts, yes, I have conquered it. For months I was sketched out by a tiny bit of code which presented itself as a text document in my jbpm download.

#!/bin/sh
cd bin
./run.sh -c jbpm

I had no flashing idea what that was about. I didn’t really know about command line or unix commands. Like a lot of relative n00bs I talked to my computer (Amelia is her name) mostly through her GUI. Now, she’s a beautiful Mac, so we rarely have miscommunication issues though I rarely talk to her directly. But today, I figured it out! I must admit the process started a month or more ago when my stepdad worked through the commands with me over the phone (thank you so much!) but it took Computing at Carnegie Mellon for me to really get command line. There is something to be said about a class which is so low level all of the student know almost all of the material already. But for C@CM one of the few topics which was not obsequiously boring was Unix commands. Here are the online notes which I used. In class we moved from directory to directory, changed access rights, fiddled with file location and silly stuff like that. But it taught me what it was supposed to: the principal behind command line.

Horray for some redeeming social value!

And once I got those commands, I could run jBPM on Amelia, I created processes, deployed them, successfully manipulated them through the web interface, downloaded other people’s processes and played with them–so small a thing made so much difficult.

Anyhoo, have a great night!

Inspirational Quote:

Indecision may or may not be my problem.
- Jimmy Buffett

6 August, 2007

Accolades for StubHub

Filed under: open source, workflow — feelingelephants @ 11:07 pm

Recently I purchased tickets for Projekt Revolution through StubHub. They came on top of my search for affordable tickets because they were well-organized online and were truthfully the cheapest tickets I could find (when you’re at Shoreline the view is good from anywhere [esp when 'anywhere' gets you out of ear-drum bursting sound]). So I order the tickets about a month in advance and get ready to wait. In that month I must have received 1/2 a dozen brief emails, all of which included my ticket price, my seat placement and the current status of my order.

This is all very comforting, but when it gets to be a week and less before the concert I need the tickets in hand to feel secure. I receive an email telling me the distributor has not sent out the tickets yet and they will arrive the Thursday before the concert (which is on a Sunday). I get home from work Thursday:

No Tickets.

Now, I am feeling generous and refusing to freak out until they don’t arrive Friday. I mean, maybe there was some huge influx of late order HP books and the tickets got shuffled in the mix. Just as I’m starting to worry more (about 11am Friday) I receive a cell phone call. It’s StubHub, with a live human on the phone asking me a little concernedly if I received my tickets. I replied I had not. She said they were making the distributor do some research into where my tickets were, she read my confirmation number to me over the phone and said I would get a call soon. She also gave me a phone number to call if I had any more questions. Throughout the interaction I had the distinct impression that a) they cared about my little two ticket order enough to be calling me up to check in b) they were well organized.

About half an hour later I get a phone call. She is having my tickets overnight fed exed to me and she gives me a tracking number so I can follow them all the way to my front door. She double checked I had all my numbers and reiterated that I should call them if the tickets had not arrived by 11am and they would figure something out.

It was so relieving to be taken care of by customer service–and by a bargain ticket site!

I came away with such a sense of furious organization that I didn’t feel a need to check in on my tickets as they traveled to my front door. And do you know what? They arrived. And the concert was good.

30 July, 2007

Feeling Elephants: the title explained. Also, a selection of tech vocabulary–not for the non-geeky!

Filed under: DRM, Metadata, copyright, news, open source, politics-tech, workflow — feelingelephants @ 9:15 pm

This summer I had my first non-family non-babysitting actually-being-paid-with-money kind of job. One of the things I realized is that when I am learning about something new (jbpm (java business process management), java, whatever) I spend a great deal of time getting detailed knowloedge of only one aspect of it. This reminded me of the old story about the blind men and the elephant. See below for pretty shiny hyperlinks.

I wasted a good part of my day with this. It is my vocabulary list for my job, as a software developer. I found dozens of definitions for each of these so please tell me if I just described the elephant’s tail in detail but missed it’s trunk or foot. For an explanation of this metaphor see here.

For a less clinical description, see here.

These are a mix of jargon I knew and jargon I’m learning. Most people don’t care what DSL stands for, but knowing the technical definition helps a true understanding.

And now, for the tech vocab:

CVS: Concurrent Versioning System. CVS is an open source version control and collaboration system.

component: [Definition quoted from the CCA Forum] A component is a software object, meant to interact with other components, encapsulating certain functionality or a set of functionalities. A component has a clearly defined interface and conforms to a prescribed behavior common to all components within an architecture. Multiple components may be composed to build other components.

beans: A collection of Java components

ide: Integrated Development Environment.

jbpm: java business process management

server: A process that runs on a host that relays information to a client upon the client sending it a request. Servers come in many forms: application servers, web servers, database servers, and so forth. All IP-based servers can be load balanced. See Web Server.

SDR: Stanford Digital Repository

execute: To perform a data processing operation described by an instruction or a program.

sql: Structured Query Language (SQL), pronounced “sequel”, is a language that provides an interface to relational database systems. It was developed by IBM in the 1970s for use in System R. SQL is a de facto standard, as well as an ISO and ANSI standard.

CGI: common gateway interface

Perl:(Short for Practical Extraction and Report Language), is a programming language specifically designed for processing text, and because of this trait is one of the most popular languages for writing CGI scripts. note from me: this is acutally wrong. On more research I found that Perl was just a name the creator came up with and liked and then defined. go figure.

W3C: The World Wide Web Consortium (W3C) develops interoperable technologies (specifications, guidelines, software, and tools) to lead the Web to its full potential as a forum for information, commerce, communication, and collective understanding.

Schema: A schema is the set of objects (tables, views, indexes, etc) belonging to an account. It is often used as another way to refer to an Oracle account. The CREATE SCHEMA statement lets one specify (in a single SQL statement) all data and privilege definitions for a new schema. One can also add definitions to the schema later using DDL statements.

XML or here: (eXtensible Markup Language) A widely used system for defining data formats. XML provides a very rich system to define complex documents and data structures such as invoices, molecular data, news feeds, glossaries, inventory descriptions, real estate properties, etc. As long as a programmer has the XML definition for a collection of data (often called a “schema”) then they can create a program to reliably process any data formatted according to those rules. Or: Extensible markup language; a markup language for documents and data structures such as invoices, molecular data, news feeds, glossaries, inventory descriptions, real estate properties, etc. As long as a programmer has the XML definition for a collection of data (often called a “schema”) then they can create a program to reliably process any data formatted according to those rules.

JMX: Java Management Extensions or JMX is a Java technology that supplies tools for managing and monitoring applications, system objects, devices (e.g. printers) and service oriented networks. An interesting detail of the API is that classes can be dynamically constructed and changed.

API or here: Application Programming Interface. In the world of software, APIs are structured abstraction layers between the gory details of an individual application, operating system or hardware item and the world outside that software or hardware. Or: A formalized set of software calls and routines that can be referenced by an application program in order to access supporting system or network services.

UI: User Interface. The user interface of a program is the part of it with which a user (person) interacts, such as a menu, button or toolbar. Mozilla’s user interface is often referred to as the Chrome.

DIP: Dissemination Information Package-the means by with information in a digital archive is conveyed to a user of the archive. The term comes from the Open Archives Information System model.

DSL: Digital Subscriber Line is a technology for bringing high-bandwidth information to homes and small businesses over ordinary copper telephone lines. A DSL line can carry both data and voice signals and the data part of the line is continuously connected.

bre: business rules engine

lisp or here: (which stands for “LISt Processing”) is a programming language oriented towards functional programming. Its prominent features include prefix-notation syntax, dynamic typing (variables are type-neutral, but values have implicit type), and the ability to treat source code as first-class objects. Or: List Processing Language — A high-level computer language invented by Professor John McCarthy in 1961 to support research into computer based logic, logical reasoning, and artificial intelligence. It was the first symbolic (as opposed to numeric) computer processing language.

LAS: Log ASCII Standard (file format)

Stub: A temporary implementaion of part of a program for debugging purposes.

jpeg2000: JPEG 2000 is a wavelet-based image compression standard. It was created by the Joint Photographic Experts Group committee with the intention of superseding their original discrete cosine transform-based JPEG standard. The usual file extension is .jp2.

pointers: In computer science, a pointer is a programming language datatype whose value is used to refer to (”points to”) another value stored elsewhere in the computer memory. Obtaining the value that a pointer refers to is called dereferencing the pointer. A pointer is a simple implementation of the general reference datatype, although it is quite different from the facility referred to as a reference in C++.

metadata: Data about other data, commonly divided into descriptive metadata such as bibliographic information, structural metadata about formats and structures, and administrative metadata, which is used to manage information.

mets: a standard for encoding descriptive, administrative, and structural metadata about objects within a digital library, expressed using XML. METS is being developed by the Digital Library Federation (DLF) and is maintained by the Library of Congress.

abstraction: In computer science, abstraction is a mechanism and practice to reduce and factor out details so that one can focus on few concepts at a time. It is by analogy with abstraction in mathematics. The mathematical technique of abstraction begins with mathematical definitions; this has the fortunate effect of finessing some of the vexing philosophical issues of abstraction.

EDI: (Electronic Data Interchange) This is a set of computer interchange standards for business documents such as invoices, bills, and purchase orders. or here. The inter-organizational, computer-to-computer exchange of structured information in a standard, machine-processable format.

mapping: A process of matching a Client to a specific Console system, so that it cannot be controlled by another Console system with unauthorized access.
or here. It is the association of data field contents from an internal computer system to the field contents in the EDI standard being used. The same mapping takes place in reverse during the receipt of an EDI document.

relational database: (1) A data structure organized so that it is perceived by its users as a collection of tables. (2) A database that is organized and accessed according to relations. T. A relational database has the flexibility to generate new tables from existing records that meet specified criteria.

domain model: “The domain model should serve as a unified, definitive source of reference when ambiguities arise in the analysis of problems or later during the implementation of reusable components, a repository of the shared knowledge for teaching and communications, and a specification to the implementer of reusable components. …

Object-oriented: Programming languages and techniques where data carries with itself the “methods” (also known as “functions”) used to handle that data. An OO programmer, for instance, can write a statement such as “object.print()” without having to be concerned about what kind of object will be involved at “run time” or what its printing method is. Object-oriented code is both more flexible and more organized, so it is far easier to write, read, and change than procedural code. …

Hibernate or here: Hibernate is an Object-relational mapping (ORM) solution for the Java language. It is free, open source software that is distributed under the LGPL. Hibernate was developed by a team of Java software developers around the world. It provides an easy to use framework for mapping an object-oriented domain model to a traditional relational database.

JMX: Java Management Extensions or JMX is a Java technology that supplies tools for managing and monitoring applications, system objects, devices (e.g. printers) and service oriented networks. An interesting detail of the API is that classes can be dynamically constructed and changed.

dtd: Document Type Definition file that specifies how elements inside an XML document should relate to each other. It provides “grammar” rules for an XML document and each of its elements. DLESE’s metadata records are XML documents.
www.dlese.org/documents/glossary.html

tei: A project to represent texts in digital form, emphasizing the needs of humanities scholars. Also the DTD used by the program.
www.cs.cornell.edu/wya/DigLib/MS1999/glossary.html

Sandbox: A network or series of networks that are not connected to other networks.
www.krollontrack.com/legalresources/glossary.asp

QC: Quality Control The regulatory process through which we measure actual performance, compare it with standards, and act on the difference. Also sometimes used to distinguish inspection and test activities from other quality activities (see QA: Quality Assurance).


Observer pattern
: The observer pattern is a design pattern used in computer programming to observe the state of an object in a program.

beanshellasynchronous: A type of two-way communication that occurs with a time delay, allowing participants to respond at their own convenience. Literally not synchronous, in other words, not at the same time. Example of an application of asynchronous communication is electronic bulletin board.

beanshell: BeanShell is a Java scripting language, invented by Pat Niemeyer. It runs in the Java Runtime Environment (JRE) and utilizes Java’s own syntax.

Next Page »

Blog at WordPress.com.