Friday, May 14, 2004

REST stands for REpresentational State Transfer

FrontPage - RESTwiki

REST stands for REpresentational State Transfer. The basic idea is to simplify rather than add complexity. The reason for the success of HTTP is its simplicity. There are a few well-understood and simple commands that a web-server supports. Any other program can access the data on the web server. There is nothing tying either the server or the client to a specific platform.

UNIX pipes are similar. A very simply interface that allow for powerful systems to be build without undue complexity. Wouldn't it be great if the GUIs of the world allowed programs to be "piped" like command line programs.

In the shell, you "create" a pipeline by entering the command like:
ls -s | sort -n > /tmp/sortedlist
What this does is to start two programs, sort and ls. The output from the first is read by the second. The output from the second is written to the named filed. The pipes don't need to exist on a single computer but can be run over a network.

So why does this work?

  1. The is a shell that allows for the creation of a pipeline of programs
  2. There are a set of programs that accept input from STDIN or output to STDOUT or both
  3. There is a way to order the execution of the programs such that the output of one program is read by the input of another
  4. There is a way to terminate the pipe so that the output of the final program is written either to a terminal or to a file. Actually terminals and files look the same.
  5. The programs produce the data in a well understood way. The ouptput of ls -s is always the same.


So what would it take to have "pipelined" GUI elements? First off, just as in the command line version, you wouldn't need to see the data as it flowed through the GUI pipe. So the data would flow in a non-GUI way.

Ok, to create a pipeline. First, the GUI would need a pipeline tool like the shell. It could be a gui based tool or support a command line like bash. With a GUI tool, you could have a pallet of programs that you place on a pipe looking background. At each point in the pipe, a sample output of the program could be shown.

Next, we need a set of pipeline-able gui tools. The source tools already exist: ls, wget, etc. What we need are some sinks. A couple of useful sinks would be:

  • A progress bar. It would read from STDIN and write to STDOUT and show a window that counted the number of bytes that had gone through it as well as having a percent complete, if known.
  • A GUI less program that would allow the user to page through the output. It could understand columns.
  • A multi-pipe sink that would show several pipelines. This could also be a passthough allowing the user to watch data.


Then we need a way to keep track of a pipeline and to be able to reuse it, like a bash script. The gui pipe building tool could support this. It should also be able to be in a pipeline itself, allowing the user to create a pipeline from the output of another pipeline.

The GUI should also allow for adding of sinks to a running program. For instance, if you have a pipe running, you could insert a tee into it while it was running. The tee could then be connected to a progress bar allowing you to see how much data was flowing without interupting the pipe.

Also, it would mean a need to move to open, simplier structures for data. The same document can be stored in XML as in some propietary Microsoft format.

So how to create a complex document with imbedded graphics, spreadsheets, whatever? Use the multipipe displayer and create a pipe for each element to be displayed. One pipe could simply be a file, treated as an image. Another could be text. Yet another could be a complex pipe that pulls data from a speadsheet application. The multipipe displayer is capable of applying filters to regions. So it doesn't need to know how to resize an image, but is does know how to apply a filter to the image source pipe that does know how to resize it. Same with fonts, and everything else. The displayer will then output the entire things so that is can be saved as a single document or as a the set of input pipes. For output, there could be an HTML filter or an XML filter or a Postscript filter or a PDF filter.

By using small and simple tools, any arbitrarily complex system could be created, using only the resources required. Contrast this with the current bloat mentality of put everything in that could possibly be used, even if only 1% of the population would ever use it.

Thursday, May 13, 2004

Benjamin Franklin | PBS

Benjamin Franklin | PBS

At Toastmaster's today I was the Table Topics master. The meeting topic was "Ways to Improve the Club". So, I decided to follow the old adage and steal from the best: Ben Franklin. He had started a club for mutual improvement called the Junto. They had 24 standing questions. At each weekly meeting, a person should come prepared to dicuss at least one.

1. Have you met with any thing in the author you last read, remarkable, or suitable to be communicated to the Junto? particularly in history, morality, poetry, physics, travels, mechanic arts, or other parts of knowledge?
2. What new story have you lately heard agreeable for telling in conversation?
3. Hath any citizen in your knowledge failed in his business lately, and what have you heard of the cause?
4. Have you lately heard of any citizen’s thriving well, and by what means?
5. Have you lately heard how any present rich man, here or elsewhere, got his estate?
6. Do you know of any fellow citizen, who has lately done a worthy action, deserving praise and imitation? or who has committed an error proper for us to be warned against and avoid?
7. What unhappy effects of intemperance have you lately observed or heard? of imprudence? of passion? or of any other vice or folly?
8. What happy effects of temperance? of prudence? of moderation? or of any other virtue?
9. Have you or any of your acquaintance been lately sick or wounded? If so, what remedies were used, and what were their effects?
10. Who do you know that are shortly going [on] voyages or journies, if one should have occasion to send by them?
11. Do you think of any thing at present, in which the Junto may be serviceable to mankind? to their country, to their friends, or to themselves?
12. Hath any deserving stranger arrived in town since last meeting, that you heard of? and what have you heard or observed of his character or merits? and whether think you, it lies in the power of the Junto to oblige him, or encourage him as he deserves?
13. Do you know of any deserving young beginner lately set up, whom it lies in the power of the Junto any way to encourage?
14. Have you lately observed any defect in the laws of your country, of which it would be proper to move the legislature an amendment? Or do you know of any beneficial law that is wanting?
15. Have you lately observed any encroachment on the just liberties of the people?
16. Hath any body attacked your reputation lately? and what can the Junto do towards securing it?
17. Is there any man whose friendship you want, and which the Junto, or any of them, can procure for you?
18. Have you lately heard any member’s character attacked, and how have you defended it?
19. Hath any man injured you, from whom it is in the power of the Junto to procure redress?
20. In what manner can the Junto, or any of them, assist you in any of your honourable designs?
21. Have you any weighty affair in hand, in which you think the advice of the Junto may be of service?
22. What benefits have you lately received from any man not present?
23. Is there any difficulty in matters of opinion, of justice, and injustice, which you would gladly have discussed at this time?
24. Do you see any thing amiss in the present customs or proceedings of the Junto, which might be amended?

Wednesday, May 12, 2004

What I like about GMail

Let first state that I consider web based email a necessary evil. Its
slow, cumbersome, in-the-way, and just an all around bother. Give me
something like Thunderbird and I can really get through my email in a
hurry.

GMail has changed all that. Here are the current list of things I
like about using GMail:
* It is fast. I can get through my email faster using the web than
I can using a client like thunderbird
* My inbox is not cluttered. I don't have to worry about losing
anything so I label and archive. As a matter of fact, I have filters
setup on all my mailing lists so once a read a message, I can just
archive it.
* Did I mention is was fast?
* I don't have to wonder, "Am I going to need this sometime in the
future". Just archive it and if I need it, I can use Google's Super
D. Duper searching.
* The way it handles conversations is amazing. No my mail doesn't
fillup with various pieces of a conversation, but just a single
conversation that can be expanded or ignored. Nice.
* It pretty fast to.

Ok, its not perfect
* The contact list could use some attention.

It is fast though

Weather Rock

WEATHER ROCK
Sam Houston Area Council
A really different weather, forecaster, hut just about as accurate as the
highly paid ones.
Cut three 36" lengths of twine or jute.
Fold the strands in half and form a loop about 2" from the top, as shown.

Cut a short piece of jute and tie under the loop.
Braid the 6 strands together about another 8" down from the loop.
Now, place a large smooth rock within the jute and knot to hold.
Continue braiding another 3 inches.
Knot, leaving about 2" for the tassel at the end.
On a white index card write the message below.
WEATHER ROCK
This rock is always 100% accurate!
A dry rock - fair weather
A wet rock - rainy weather
A dusty _rock - polluted air
A swaying rock - wind is blowing
A disappearing rock - heavy fog
Rock jumping up & down - earthquake
Rock is white - snow
Cover the front and back of the card with clear adhesive paper.
Glue the card to the rope below the loop.

Tuesday, May 11, 2004

Congruence between purpose and action

Dictionary.com/Congruence: "Congruence

n : the quality of agreeing; being suitable and appropriate"

In life, our actions and our wishes must be congruent in order to achieve our goals and maintain balance in our lives. It has been said that a journey of a thousand miles begins with a single step. It is likewise true that to complete a journey of a thousand miles, each step must be in the direction of the destination. If we deviate from the course, our trip will be that much longer, or we may never get there.

Take losing weight for example. The wish would be to weigh a certain amount, or to be fitter, or something. To write that down, or somehow fix it firmly in mind would be the first step of a long journey. Yet, to complete the journey, one needs to constantly be working towards the destination. Each time the path to the destination is left, more effort must be exerted and more time expended before the goal is reached.

It is the little, daily decisions that mean the difference between success and "next time". It you want to reach the north pole, you can only get there by going north. Any movement south is going to have to be redone or the goal will not be reached.

Consider each act thourghout your day. Is it helping you to reach some definate goal you have in mind? If so, do it the best that you can and as diligently as you can to make as much progress in the least amount of time. If not, why are you doing it? If you are not making progress toward your goal, you must be moving away from it.

J2SE 1.5 in a Nutshell

J2SE 1.5 in a Nutshell

References:


New Language Features for Ease of Development in the Java 2 Platform, Standard Edition 1.5:
http://java.sun.com/features/2003/05/bloch_qa.html



Tiger Component JSRs


003 Java Management Extensions (JMX) Specification
http://jcp.org/en/jsr/detail?id=3


013 Decimal Arithmetic Enhancement
http://jcp.org/en/jsr/detail?id=13


014 Add Generic Types To The Java Programming Language
http://jcp.org/en/jsr/detail?id=14


028 Java SASL Specification
http://jcp.org/en/jsr/detail?id=28


114 JDBC Rowset Implementations
http://jcp.org/en/jsr/detail?id=114



133 Java Memory Model and Thread Specification Revision
http://jcp.org/en/jsr/detail?id=133


160 Java Management Extensions (JMX) Remote API 1.0
http://jcp.org/en/jsr/detail?id=160


163 Java Platform Profiling Architecture
http://jcp.org/en/jsr/detail?id=163


166 Concurrency Utilities
http://jcp.org/en/jsr/detail?id=166


174 Monitoring and Management Specification for the Java Virtual Machine
http://jcp.org/en/jsr/detail?id=174


175 A Metadata Facility for the Java Programming Language
http://jcp.org/en/jsr/detail?id=175



200 Network Transfer Format for Java Archives
http://jcp.org/en/jsr/detail?id=200


201 Extending the Java Programming Language with Enumerations, Autoboxing, Enhanced for Loops and Static Import
http://jcp.org/en/jsr/detail?id=201


204 Unicode Supplementary Character Support
http://jcp.org/en/jsr/detail?id=204


206 Java API for XML Processing (JAXP) 1.3
http://jcp.org/en/jsr/detail?id=206

J2SE 1.5 (SYS-CON)

J2SE 1.5 (SYS-CON): "# Java 2 Platform, Standard Edition 1.5.0 Beta 1 release: http://java.sun.com/j2se/1.5.0/download.jsp
# J2SE v 1.5.0 Beta 1 Documentation: http://java.sun.com/j2se/1.5.0/docs/index.html
# JSR 176, J2SE 1.5 (Tiger) Release Contents: www.jcp.org/en/jsr/detail?id=176
# JSR 14, Add Generic Types to the Java Programming Language: www.jcp.org/en/jsr/detail?id=014
# JSR 201, Extending the Java Programming Language with Enumerations, Autoboxing, Enhanced For Loops, and Static Import: www.jcp.org/en/jsr/detail?id=201"

Java 1.5

Overview of several new features of Java 1.5 (tiger) : for, autoboxing, generics and enumerations.

There is a new for construct to iterate over collections of things. For each element in this collect, array, etc, perform these commands. Finally, a truly useful improvement.

Autoboxing allow for conversion to primitives to their Object siblings: itn to Integer for exmaple.

Generics is a feature that has long been missing from Java. Similar to C++ templates, the seem to be better implemented in Java. Caveat: The collections interface also supports the old, non-generic class and so allows you to "break" generics if you want.

Enumerations are good, better that their C/C++ counterpart. They make real object.

JSF: Ultimate in Flexibility? or Complexity?

JSF

The editorial on JSF exposes some of the weaknesses of the new and upcoming JSF spec, from someone who has worked on competing or alternate ways of doing things:

  • It has too much flexibility and is too granular. The net result is that it is harder to use, rather than easier.
  • It has been a long time coming and is still not here yet


At a time when Microsoft is making strides to make application development easier, JSF adds complexity to Java application development.

The atricle also mentions Struts but says it is "non-standard", I guess meaning that it doesn't come from Sun.

A couple of thoughts:

  1. Just because something isn't from Sun doesn't mean that it is not valid. Part of the power of Java is that it is not rigidly controlled by Sun. The specs are freely implemented by others, witness BEA, IBM and JBoss with j2EE containers; eclipse as an IDE, Jikes as a compiler. All of these "non-standard", non-Sun products add to the power Java and its ability to be used in a variety of applications.
  2. JSF may be complex, but it would be just the thing a descent GUI builder would need. The same GUI builder could make Swing apps and Web apps and have to power to really do everthing that needs to be done. Isn't a GUI builder exactly what Java is missing that Microsoft has?



Encouragement, not discouragement

When we try to encourage someone to correct some behavior, it is often
easy to discourage them instead. They need to hear twice as much good
about themselves as they hear bad.

Monday, May 10, 2004

What is precious?

The things of least value in the long-run are the things that are
diminished in the using: moeny, cars, property, clothes, etc. The
things of most value are the things that are increased in the using:
love, charity, health, etc.

Somethings, like people, fall into either category. You can use them
in such a way that they are used up. Contrarywise, you can "use"
people in such as way as they are increased afterwards. Its up to
you.

A Sunny Forecast for Open-Source - Computerworld

A Sunny Forecast for Open-Source - Computerworld

Weather.com switched to open-source, saving a boat-load of money while increasing through-put. Support was at least as good as the other guys.

espite the self-serving air of fear, uncertainty and doubt (FUD) that commercial vendors create around open-source software, lots of open-source products work very well and can be deployed and run for about half the cost of commercial products.

"Literally, in some cases it was orders of magnitude cheaper to go to the Linux boxes," he says. "We replaced machines that were $500,000 with machines that were $50,000."

Weather.com's software developers also found WebSphere to be cumbersome and slow. As a work-around, they frequently developed applications using another tool and then ported them to the WebSphere application server. majority of team members preferred Tomcat, so the group decided to pilot-test the software with a new version of the Web site's local activity page, which dynamically serves up weather data for selected cities. For the test, the team had configured the servers to switch back and forth between WebSphere and Tomcat.

The switch to Tomcat software and Intel-based commodity servers also enables the Web site to add capacity quickly and relatively inexpensively. "In our architecture, which is very flat, scalability comes by buying more machines and throwing more Web servers on them. It's much more cost-justifiable to add 30% more capacity by buying 12 more machines," says Tim Bolser, director of application development. "We don't have to write a check to IBM [for WebSphere licensing fees], and it gives us a lot more flexibility in terms of deploying assets."

"Now when I talk to senior management about moving from Oracle to MySQL they don't ask me, 'Are you sure?'" he says. "They ask me, 'When?'"

Feds push standards for health care IT - Computerworld

Feds push standards for health care IT - Computerworld

he U.S. Department of Health and Human Services last week announced a pair of initiatives to kick-start development of a standardized electronic medical records system that could be used nationwide. But some top health care companies said it could take years for the envisioned technology to be broadly adopted.

HHS said it has licensed a medical terminology database that was developed by the Northfield, Ill.-based College of American Pathologists and plans to make the technology available without charge throughout the U.S. health care industry.

Liang said Kaiser plans to incorporate the database into a new automated medical records system that it's developing with software from Epic Systems Corp. The database developed by the College of American Pathologists includes uniform terminology and descriptions for more than 340,000 medical concepts; the collection is formally known as the Systematized Nomenclature of Medicine Clinical Terms.

English and Spanish versions of the database will be distributed through the HHS-developed Unified Medical Language System.

Health Care IT Plans Get a Renewed Push - Computerworld

Health Care IT Plans Get a Renewed Push - Computerworld

Bush described paper-based approaches to maintaining medical records as "antiquated".

Sharing electronic medical records among providers.
Using bar-code to ensure that patients receive proper medications. I assume this is in the hospital

The Leap Frog Group http://www.leapfroggroup.org/ will be posting surveys of compliance with 30 patient-safety practices including CPOE.

Where is the ROI for developing a EMR? Just lawsuits?

The U.S. Department of Health and Human Services last year commissioned a unit of the National Academy of Sciences in Washington to design a model of an electronic patient record that health care companies could use at no charge http://www.computerworld.com/governmenttopics/government/policy/story/0,10801,82779,00.html