February 2004 Archives

brian d foy

AddThis Social Bookmark Button

I got my Nokia 3650 in the mail today (after waiting for T-Mobile to send it to my wife, then my wife to send it to me through the military postal system) , and earlier this week I got a USB Bluetooth adapter (from a friend through the same process). Everything was a cinch to set-up—easier than finding things in the manual even.

Once I plugged in the USB Bluetooth adapter, I got a Bluetooth control panel. With the Bluetooth Setup Assistant (or something close to that name) I paired my Mac with my phone without a problem. On the phone side I only had to enable Bluetooth.

In less than five minutes I had taken a picture and transfered it to my desktop (these images are really 640×480, but I scaled them by 50% to put them here).

image

I then went to dinner, where I could have gotten a picture of Tommy Thompson (and his many bodyguards), but I took a picture of my dinner instead (something I picked up from Randal Schwartz).

image

I took another picture when I got back to my tent.

image

John Catsoulis

AddThis Social Bookmark Button

Related link: http://www.newscientist.com/news/news.jsp?id=ns99994714

A silicon microrobot just half the width of a human hair has begun to crawl around in a Los Angeles lab, using legs powered by the pulsing of living heart muscle. It is the first time muscle tissue has been used to propel a micromachine.

Read about it at New Scientist.

Mark Finnern

AddThis Social Bookmark Button

Related link: http://groups.yahoo.com/group/bafuture/

Long overdue, this morning I updated the Future Salon Yahoo Group Description, announcing that our March 19th Future Salon Speaker will be David Sifry founder and CEO of Technorati.

I loved his Etech Technorati Hacks session and I wrote about it in the Yahoo Group Description, but they would not let me save my text, because it contained a word that Yahoo perceives as not appropriate. The word is “Hack”. Who would have thought?
hack_not_permitted.jpg
Wow and that just when O’Reilly is giving the word hacks a positive spin and coolness by coming out with a whole Hack series, and I hear that it is very successful.

Of course I had to check which other words are banned. From George Carlin’s Seven Dirty Words that you can’t say on television or radio two make it through: Piss and C*sucker.

Society has agreed to ban the dirty seven, because people are offended by them, which I don’t have a big problem with.

Hack on the other hand is different. I don’t think anyone is offended by the word hack, you may be if someone calls you a hack, but not in a description of a Yahoo Group. Fear is the motivation for blacklisting that word.

In the media hacking is often portrait as a criminal activity and the capabilities of hackers are greatly blown out of proportion. For example Kevin Mitnick said, that he was denied access to a pay phone in prison, because prosecutors argued he might launch a nuclear strike by whistling into the handset.

There thinking, I assume, goes like this: Don’t give Hackers a place to bond together and exchange ideas. Or if they do, don’t make it easy for others to find them. Just ban the word “Hack” and no search engine will index that group under that term. If you are not in the search index, no one will find you and your reach is limited. Subtly, but very powerfull.

Let’s not forget, that there are so many other definitions of the word hack. (Check Google with “define:hack”) The funny thing is, only the last one is mentioning to malicious hacking: “…refer to a program that’s clever but not very useful, to the process of breaking into computers–which more properly should be referred to as “cracking,” …” (The Wikipedia definition is way better then all the ones that Google lists)

Of course “crack” or “cracking” is not banned, but “hacking” is. By the way “Hacks” is not banned, so I used that.

What other words are blocked?

John Catsoulis

AddThis Social Bookmark Button

Introduction

INMOS introduced the first transputer in 1985. The transputer
was an innovative device. For the first time, a processor had been
combined with a communications subsystem for the specific purpose
of constructing scalable, parallel machines. Transputers
communicated with each other over four, high-speed serial links.
The transputer also implemented a hardware process-scheduler,
allowing easy implementation of multi-processing. Though
origninally designed for building supercomputers, the most common
application of transputers was in embedded systems. Some of the
most impressive arcade games (featuring high-resolution 3D
graphics and stereo sound) had transputer arrays at their heart.
INMOS produced a range of transputers. A summary of the processor
family is given in the table below.









































































































Property





T222





T225





M212*





T414





T425





T800





T9000



Architecture (bits)



16


16


16


32


32


32


64


Internal Cycle Time (ns)



50



50


50


50


33


33


20


Performance (MIPS)



20


20


20


20


30


30


100 - 200


Floating Point Unit



No


No


No


No


No


Yes


Yes


On-chip RAM (bytes)



2 K


2 K


2 K


2 K


4 K


4 K


16 K


Internal Bandwidth (M/sec)



80


80


80


80


120


120


200


Address Space (bytes)



64 K


64 K


64 K


4 G


4 G


4 G


4 G


Interrupt Response (ns)



950


950


950


950


630


630


unstated


Link Speed (Mbits/sec)



20


20


20


20


20


20


100


* The M212 was a special 16-bit transputer designed to
provide an interface to disk subsystems.

 

Transputer Architecture

The basic transputer (the original T414, for example) consisted
of a conventional, sequential, RISC processor, a communication
subsystem (implemented as four high-speed, inter-processor links),
4 k of on-chip RAM and an on-chip memory interface.

Functional Diagram

The processor had only three general-purpose registers, A, B
and C. These registers are treated as a stack by the transputer
instruction set. Loading a value into A pushes the previous
contents of A into B, and the previous contents of B into C.
Similarly, storing a value from A pops B into A and C into B. The
instruction set works with this register stack implicitly.
Performing an add instruction adds the top two operands on the
stack. In other words, an add instruction always adds B to A,
leaving the result in A. There is no mechanism provided to ensure
that a stack overflow does not occur. This is left to the compiler
or assembly language programmer.

A similar programming model exists for the floating point unit
found in the T8-series of transputers. In addition to the three
general-purpose registers, the transputer also has a workspace
pointer, an instruction pointer and an operand register. The
workspace pointer points to a region of memory where the
parameters of the currently executing task are stored. The
instruction pointer references the next instruction to be fetched
and executed by the processor. The operand register is used in the
formation of instruction operands (the transputer’s instruction
set is somewhat unusual in this respect). The programmer’s model
is shown below.

Transputer Programmer’s Model

It can be seen from the above that the transputer programming
model is a simple one. The transputer exploited the high-speed,
internal RAM to overcome the limitations of a small register set.
The small register set and RISC instructions meant that the
transputer had simple and fast data-paths and control logic.

The instruction set of the transputer is an unusual one. A
design decision was taken early in the transputer’s development
that the transputer should be programmed in a high-level language.
One look at the instruction set for these machines is sufficient
to convince even the most die-hard of assembly-language
programmers to follow the INMOS suggestion. The instruction set
contains a relatively small number of instructions. Each
instruction is one byte long. The upper four bits of the opcode
specify the function to be performed, the lower four bits contain
the data. Two of the function codes allow the operand of an
instruction to be extended to any length up to the size of the
operand register.

The transputer supported two priority levels for executing
tasks. High-priority tasks took precendence over low-priority
ones. A low-priority task will only be executed if there is no
high-priority task in the schedule. At any one time, a process may
be either active (executing or awaiting execution) or inactive
(waiting for I/O, waiting until a specified time or waiting for a
semaphore). The architecture of the transputer is such that
inactive processes do not use any processor time. The transputer
had two registers which point to a linked list of workspaces. This
list of workspaces constitute the process table. The task
switching time is very small and hence the transputer
implementation of multi-tasking is a very efficient one. The
transputer instruction set directly supports process creation and
termination.

Programmer’s Model of the Transputer Process
Table

 

Transputer Clocks and External Buses

Most fast processors require an external clock at their
operational frequency. This can cause the system designer some
problems as high-frequency clocks can be affected by noise, skew
and termination problems. They can also be a source of noise for
the rest of the computer system. The engineers at INMOS took a
slightly different approach in addressing this problem. Rather
than having an external, high-speed oscillator, all transputers
ran off an external 5 MHz clock. Each processor had an internal
clock source which is phase-locked to the external clock. In this
way, the system designer did not have to worry about the problems
normally associated with high-frequency clocks.

A T255 transputer memory cycle is divided into four clock
states. Address and control setup occurs in state T1. Data is
setup in state T2. State T3 is when data is read or written. State
T4 is data and address hold time after an access. The signal,
ProcClockOut is an output clock from the processor. An
access begins in clock state T1 with an address becoming valid on
MemA0-15. The address strobe, notMemCE goes active
indicating that a valid address is on the address bus.

T225 Read Cycle

For a write cycle, notMemWrB0-1 will go active low (both
for 16 bits, one only for 8 bits). For a read cycle,
nonMemWrB0-1 will stay high. During a read cycle, data is
latched by the processor in state T4. The processor outputs data
during a write cycle in state T2 and holds this until state
T4.

T225 Write Cycle

Wait states may be generated by driving MemWait high
within 25 ns of ProcClockOut high in state T1. The
processor inserts wait states between clock states T2 and T3. Wait
states may be easily generated using flip flops. A circuit to
generate two wait states for a transputer is shown below.
notMemCE enables the flip flops at the beginning of a cycle
and (re-)SETs them at the end of the cycle. Initially
MemWait is high. After two clocks, MemWait goes low.
Adding additional wait states is just a matter of adding extra
flip flops.

Wait State Generator for a T225

Interfacing a T225 is straight forward. The example below shows
a T225 interfaced to two, 32k x 8 static RAMs. Note that since
transputers are able to work as processing elements in
multi-processor systems, it is common to have transputers
interfaced to memory alone. In such cases, the transputer is
booted over one of its communication links and uses I/O devices
interfaced to other transputers. (Note that not all pins are shown
in the example below.)

Interfacing a T225 Transputer to Static RAM with No Wait
States

BootFromROM is tied low. This causes the transputer to
wait to be booted over one of its communication links after reset.
If this processor was connected to a ROM, BootFromROM would
be tied high. This causes the processor to automatically begin
executing code after reset.

The communication links in the above example are used to
connect this transputer to other transputers in the system. The
Link0-3In lines should have 100k pull-down resistors to
ground. The Link0-3Out lines should have 56 ½ resistors in
series with the link.

 

Transputer Communication

Communication between processes is achieved through channels.
Channels are uni-directional, synchronised and unbuffered. A
channel may be between two processes running on a single
transputer, in which instance the channel is implemented using a
word in memory, or a channel may be between processes executing on
separate transputers, where the channel is implemented using the
high-speed, external links.

The external links between transputers are implemented using
two uni-directional lines connecting each transputer pair. The
data is transferred serially at high speed.

A major problem with the conventional architecture of the
transputer is the distinction between inter-process communication
via an on-chip channel or via an external link. Software has to be
written and compiled specifically for the transputer system it is
to run on and is not easily portable to other transputer networks.
In addition, algorithms have to be specifically matched to the
architecture of the transputer system to ensure efficient use of
the machine. This had to be specified at or before compilation
time. The T9000 processor was an attempt to address these
problems. It was intended as a standard architecture machine to be
used in message-passing MIMD computers. Inter-process
communication is achieved through virtual channels rather than
distinct hard or soft channels. This greatly simplifies the
programming of the transputer system and leads to greater software
portability.

 

T9000

The T9000 was the last processor in the transputer family. It
comprised a superscalar 32-bit processor, 64-bit floating point
unit, a dedicated communications processor with four links, an
inbuilt external memory interface and 16 K of onchip memory, which
may be used as cache, normal memory or a combination of the
two.

The IMS T9000 processor had a peak performance of 200 MIPS and
25 MFLOPS whilst operating as a single processor running at 50
MHz, which given the time of its design and that it was running
off a 5 MHz crystal, was quite amazing.

T9000 Functional Diagram

The T9000 executes processes sequentially, but implements a
process scheduler in hardware. In transputers, multi-tasking is
moved from the software kernel to the hardware of the processor.
The T9000 has three registers to implement the process table. The
Front register points to the first process in the table and the
Back register points to the last process in the table. Each entry
in the process table contains a pointer to the next process. The
Workspace Pointer points to the process currently being executed.
A process may either be active or inactive. Active processes are
either being executed or are awaiting execution. Inactive
processes are descheduled and may be waiting for I/O, a semaphore
or until a specified time. The scheduler of the T9000 works in
such a way that inactive processes do not consume any processor
time. This is a very efficient implementation of multi-tasking and
is quite different to that used on machine with multi-tasking
implemented through a kernel.

The instruction set of the T9000 supports multi-tasking
directly. Two instructions, startprocess and endprocess directly
affect the process table. They allow, as their names suggest, the
creation and destruction of processes in the process table.

Process scheduler has two process queues, one for high-priority
processes and one for low-priority processes. A low-priority
process will only be executed by the processor if no high-priority
process is waiting. In addition, a high-priority process becoming
active causes the scheduler to suspend the current low-priority
process and begin execution of the high-priority process.

 

T9000 Communication

The message-passing system implemented in the T9000 is
point-to-point and synchronised. By employing this form of
communication, the T9000 does not require message queues or
buffers to be implemented directly by the processor. This is the
same communication mechanism employed in the first-generation
transputers. However, the T9000 extends the communication system
implemented in earlier transputers through the use of virtual
links rather than specific hard links. A virtual link may
represent a communication channel between a local process and a
process located elsewhere in the parallel machine. Several virtual
links may use a single hardware link for message routing. This
allows for an arbitrary number of virtual links to exist over a
limited number of physical links. Thus, the communication
limitation of the earlier transputers is overcome.

The virtual links are controlled by a dedicated, communication
processor located within the T9000. This processor is known as the
virtual channel processor (VCP). The VCP accepts packets
for communication along the virtual links and routes these either
directly to another T9000 or through a network of routers using
the hardware links of the T9000.

 

T9000 Memory Interface

The clocks for the T9000 are generated internally. These clocks
are phased-locked to an external 5 MHz clock. This avoids problems
associated with routing high frequency clocks throughout the
computer system. The processor has three input pins which may be
used to specify operating speed. Maximum speed for the T9000 is
expected to be 50 MHz for the first version of the processor.

The T9000’s bus interface provides direct support for dynamic
RAMs. The address lines of the T9000 behave as multiplexed address
lines when accessing a region of memory defined as dynamic RAM.
The timing of ~RAS and ~CAS may be configured under
software control to suit the memory devices used.

Interfacing a T9000 to 8 Mbytes of DRAM

The T9000 provides direct support for booting from an EPROM. It
has a dedicated chip enable (notMemBootCE) for an EPROM and
dynamically sizes its bus down to eight bits when accessing the
ROM. The T9000 also generates appropriate addresses for the ROM on
address lines MemAdd2 through MemAdd15. These
address lines correspond to A2 through A15 on the
ROM. Two programmable strobe lines (notMemWrB2 and
notMemWrB3) become address bits A0 and A1
when the processor is accessing the ROM address space.

An input to the T9000 (StartFromROM) determines whether
the transputer will boot off a local ROM, or will remain idle,
waiting to be booted by a root transputer over one of its
high-speed links. Normally only one transputer would have a boot
ROM and this transputer would then configure the other transputers
in the network through the communication links. However, it is
also possible for individual transputers to have their own ROM.
This ROM may contain local boot information or software to
configure and control I/O devices local to that transputer.

The basic configuration for interfacing a T9000 transputer to a
boot EPROM is shown below.

Interfacing a T9000 to a Boot ROM

C104 Crossbar

An essential element of the T9000 system architecture is the
ability to pass messages quickly between processing nodes of the
parallel machine. Interconnection is provided by dedicated VLSI
routers implementing a 32-way crossbar. The INMOS C104 is the
companion router to the T9000. Separating the processing unit
(T9000) from the router (C104) has a number of advantages
[May, et al. 1993] :


  • Systems not requiring message routing may interconnect
    T9000s directly.
  • Routers may have a relatively large number of links
    allowing large systems to be constructed from a small number of
    routers.
  • Transputers are not required to implement message passing
    between neighbours.
  • The architecture of the parallel machine is scalable.

Each C104 has 32 communication links capable of operating at
100 Mbits/sec. The router provides wormhole routing of incoming
data packets. As the header of each packet arrives on a given
link, the C104 determines the destination link for the packet and
generates the appropriate internal route before the main body of
the packet is sent. The C104 is capable of routing packets through
all links concurrently. The C104 uses the header of each packet to
identify which output link to use.

Wormhole Routing through Multiple C104s

The C104 is also capable of arbitrating between multiple data
packets requiring the same output link and causes them to be
output sequentially along the required link. [May, et al.
1993]

The C104 provides for header deletion. This allows a packet to
contain multiple headers specifying a path through several
routers. Each router routes the packet and deletes the current
header, exposing the next header for routing by the next C104.
Thus, C104s may be combined together to form large, multi-layered
networks.

 

MIMD using T9000s

Barnaby, May and Nicole in Networks, Routers and
Transputers
[May, et al, 1993] propose a
fully-interconnected, folded-Clos architecture for a
multiple-T9000 parallel machine. Groups of four T9000s are
interconnected using C104 crossbars. These crossbars are in turn
connected to a second layer of crossbars, providing not only full
interconnectivity for the system, but multiple, concurrent paths
between processors.

Folded-Clos MIMD Machine using T9000s and
C104s

In this system, each T9000 has its own local memory for program
and data storage. Some T9000s may have I/O facilities and as act
I/O servers for the rest of the system. Only one T9000 requires
ROM and is capable of first booting the network, then booting the
other processors over the network.

A separate control network interconnects the other T9000s and
crossbars and allows them to be configured by the boot transputer.
Note that the control network is separate to the data network
which carries interprocess communication. Each T9000 and C104 have
dedicated control links (Clink0 and Clink1) in
addition to the four data links. Clink0 is the control
input link and Clink1 is the output control link. In small
systems using only T9000s and no routers, the control links are
daisy-chained together. The Clink1 of one transputer is fed
to the Clink0 input of the next transputer.

Configuring a Small, Routerless, MIMD
System

However, it is also possible to use a C104 to provide routing
of the control network. This is preferable in larger networks
where latency in the communication channel can cause unacceptable
delays if daisy-chaining is used. The C104 is configured through
its control link, however the data links of this C104 are
connected to the control links of the T9000s in the MIMD machine.
This is achieved by connecting the C104’s output control link,
Clink1, to one of its data input links.

Thus control packets may be routed by the C104 to other devices
(T9000s or data-network C104s) in the system as though they were
data packets. The control links, although functionally different
to the data links, use the same protocol for communication. The
C104 used to implemement the control network is not used as part
of the data network.

Configuring an MIMD System using a C104 Crossbar
 

 

Booting

There are six levels of reset for a T9000-based, MIMD machine.
When the machine powers up and undergoes a hard reset, all T9000s
in the system are in their reset state. This is reset level 0.
Each transputer checks its StartFromROM input. All
transputers, save one, will have this tied low and will therefore
wait to be booted over their links. The transputer with
StartFromROM high will configure its bus interface
appropriately and begin executing code from its boot ROM. This
processor is the root processor for the network and the control
processor for the machine. The software executed by this
transputer identifies and ‘labels’ all devices connected to the
control network. This includes configuring the control-network
C104. The system is now at reset level 1.

The boot transputer, under software control, uses the control
network to configure all devices. The system is now at reset
level 2
.

The virtual links are configured, boot code is downloaded to
each transputer and executed. All transputers are now operational
and the system is at reset level 3.

The processes belonging to the application software are
downloaded and distributed throughout the system over the data
network. Each transputer in the system configures its virtual
links as required by the application. The system is now at
reset level 4.

The application is then executed by the machine. The system is
now at reset level 5 and is operational.

Normally, the system is only taken through the above sequence
by a hard reset. However, the control process (operating system)
may reboot the machine by sending a Reboot message to some or all
devices in the system.

 

Conclusion

The transputer was a great architecture, in many ways ahead of
its time. Its novel stack-based architecture, inbuilt
mutli-tasking support and inter-processor and inter-process
communication were revolutionaly. It was a beautiful machine.
Unfortunately, it was killed not long after its company was taken
over by another, and no further development was done on the
architecture.

Chris DiBona

AddThis Social Bookmark Button

Related link: http://www.musiccdsettlement.com

Back in “the day” when the music and hardware companies were touting the astounding benefits of the CD format, they promised a number of things to the consumer, including, but not limited to:



    Perfect sound forever

    Inexpensive CD cots

    Conversion of their entire catalogs of music.



We did get a terrific general improvement in sound quality (yes, vinyl lovers, I have a very nice turntable too so don’t bother reminding me about the dangers of solid state technology) and durability. And CDs are indeed much less expensive to manufacture, not that consumers ever saw that benefit. In fact, in return for higher prices, the industry promised that their entire back catalogs would be available, which we all know was just another way of saying “nah, it’s just gonna cost more, and , no, we’re not releasing that “The Sparks” album featuring their groundbreaking 70’s appeal to citrus consumption: ‘Pineapple’”


Yes, I know large consortia lying to the consumer is nothing new, and noone really bought this stuff when the different people pushing the CD format we’re hucking these lines. But when they recently were accused of and settled with the California court on charges of price-fixing, there was a handy website where you could make sure you were part of the class.


Today, funnily enough, I received my check (see the accompanying letter) for $13.86 cents. Which isn’t so bad, I mean, that’s $13.86 cents I didn’t have, but it really makes you wonder about the nature of such things. I mean, I’ve probably bought somewhere around 800 cds through my life, and if each one was just a teeny rip off of say a $1 a piece (ha!) then that check should be much larger.


That said, money is good, and I wanted to see who else on O’Reilly had this nice gift from Bill Lockyer show up in their mailbox today? Do you think such settlements are a just punishment or just a waste of time and money that no one will learn from?

Did you get your CD settlement check?

Adam Trachtenberg

AddThis Social Bookmark Button

In the last week or so, I’ve gone from getting 2-300 hundred pieces of spam a day to about 500 message a day. While I’m sure there are many other people out there who get 10 times as many messages as I do, I’m still not pleased at this development. Even worse, almost 20 of these messages are making it though my spam filtering combo of spamassassin (sa) and Mail.app. I used to only get one or two uncaught messages.

Fortunately, most of the messages that slip through aren’t spam per se. They’re not trying to sell me anything. Spamassassin does a great job at nabbing those. Instead, they’re virus e-mail trying to get me to click on a Windows file. Too bad I use a Mac, so they’re not only annoying, but useless.

Normally, when a big spamming virus starts flooding my account with messages, I write a custom sa rule to block it. However, I don’t really want to be in the business of writing spam filters. Partially, I just don’t have the time and partially because I’m always afraid I’ll accidentally filter out something important.

So, I’ve come up with a solution to my problem. What I want and would find really useful is a sa virus rules RSS feed. Then, whenever a nasty virus comes around, I’m automatically notified and presented with a rule I can cut and paste into my user_prefs file to filter it out of my life. (I don’t trust automated filter updates because I prefer not to be forced to dig out legitimate messages from my spam box if the filter is too loose.)

Does such a thing exist? I checked out the sa wiki, but they only have virus bounce rules. Does somebody want to start one? I can guarantee one customer.

How do you combat virus spam with spamassassin?

brian d foy

AddThis Social Bookmark Button

Apparently Apple does not like to use AppleScript for their own applications. Fed up with iPhoto’s poor performance, I started playing with AppleScript so I could automate some of my tasks. Alas, iPhoto is missing a lot of things, apparently.

I would like to see iPhoto’s AppleScript suite support:

  • Film rolls - I can access albums and selections, but not film rolls. What gives?
  • Import - I want to choose a bunch of files or directories and tell iPhoto to import them.
  • Export - While we are at it, let’s go the other way too.
  • Retouching - I can do it in the application, so I should be able to do it programmatically.

What do you want in the iPhoto AppleScript suite?

brian d foy

AddThis Social Bookmark Button

Related link: http://www.catb.org/~esr/writings/let-java-go.html

The human race has been hearing reports that “solar energy
is our friend”. We are glad to hear that, and your support
of photosynthesis certainly puts some biomass behind that
claim, but your support is inconsistent, especially on
cloudy or rainy days, which suggests you may be confused
about what we expect you to do.

Certainly your confusion shows up in other ways. Many of us
think the Sun is good, and we install solar panels, go to
the beach on sunny days, or have gardens. However, you waste
so much of your energy just radiating it into space, as if
something else exists that can use it. Give us a
break—space is only three or four Kelvins, but most of our
planet is quite comfortable in shorts and sandals. Why not
give all of that energy to us, the only intelligent Life in
the universe? Indeed, we, along with a few other
insignificant species, grow things in open fields which turn
your Light into things we all can eat, save a few people
with strange allergies.

The informal equation between Life and Light suggests that
you do not understand what we are talking about. Life is
hardly all about Light—just ask the benthic sea creatures
living off chemosynthesis, completely without the sun, or
some of the blind fish living in caves, or even the bats
that fly around at night. Some animals have already given up
on you.

It does not need to be this way. If you could go all the way
with Life giving Light, you could retake your position of
vital leadership. You are the only thing that has the fuel
and the proximity to do better than other energy sources.
Indeed, on historical grounds, you can do even better
because you will probably be around a lot longer, and all
that coal that we burn originally came from plants which
used you. However, you radiate energy to other planets, even
though they are lifeless, and probably immoral and godless
at that. The rest of your energy just dissipates to nothing
according to an inverse square law.

You have done other things to make us question you. You
continue to hide neutrinos, plaguing our scientists with a
“solar neutrino problem”, causing us to rely on supernovae
and other astrological events for these. Some report that
you are turning away from your original mission of hydrogen
burning to using carbon. Furthermore, every 11 years or so,
you disrupt our atmospheric and communications equipment,
but you do not let us look inside you to figure out why or
how that happens. You insist on keeping an external
temperature that prevents us from approaching to closely,
and even burns us this far away. Your efforts at mitigating
the effects of our thinning ozone layer have been less than,
well, stellar. You even cause cancerous growths in some of
us. You appear to choosing control—some people are
allergic to you and can only come out at night because you
do not let us choose an alternate radiation pattern.

Sun, open up that mantle! You have billions upon billions of
organisms over here on Earth who would love a sunny day if
only you could throw all of your energy our way and cut
down on the ultraviolet wavelengths. If you are serious
about Life, you will adjust your radiation, and if you are
serious about living longer, you will let our scientists
figure out your secrets so we can fix whatever is happening
at your core. Let Light go!

brian d foy
President, Opine Sores Initiative
20 Feb 2004

Have something you want to say? Elect yourself president of something and get yourself a website, or just post comments here.

chromatic

AddThis Social Bookmark Button

Related link: http://wgz.org/chromatic/perl/trustabit/Trustabit.tar.gz

Existing social networks have several flaws of implementation. Most obviously, they’re too coarsely-grained. Are you my friend or not? Do I trust you or not? My personal and professional relationships aren’t that binary and yours aren’t either.

Of course, if you want to make these relationships flow between users, you run into scary math with directed graphs. If someone well-connected changes something, how many nodes and edges do you have to recalculate? Yuck.

Another flaw is that most don’t let you retain control of your own information. Some details of my work aren’t appropriate to share with acquaintances (or friends, in the cases of books as yet unsigned) and some details of my private life aren’t appropriate (or even interesting) to my work colleagues. It’s important to be able to control what information I provide as well as who sees it.

I’ve been thinking about this problem off and on for a year or so. During ETech, the two problems above started to solve each other. Why not let users control their own data and make them calculate their own trust flows?

That’s where Trustabit comes in. It’s a proof of concept trust and rating network with working (if limited) code.

In brief, Alice rates items, such as “The Princess Bride” and publishes a list of those ratings on her site. Her friends fetch that list and apply their ratings of Alice’s ratings to the items and publish the results, as they choose. If Bob trusts Alice’s taste in movies but not in restaurants, he can ignore her ratings of restaurants while viewing — and passing along — her ratings of movies to his friends.

There’s a bit more to it, so see the Trustabit README for the fuller, gorier details. You’ll need Perl 5.6 or better with YAML to run the code, though it should be reasonably easy to reimplement in any other decent language.

I’ve tried to stay away from dictating much policy. I’ve limited the code deliberately. The idea is pretty simple and I think it’s rather workable as it is.

(I did look at FOAF briefly, but the complexity is too high. Try to explain the mechanism in two paragraphs as I did above. Also, its goals are different. I don’t particularly care if machines can infer semantic meaning from Trustabit data. It’s for humans anyway.)

That’s my wacky idea. It may not be entirely practical, but I think it’s worth playing with. Drop me a line if you find it useful.

Suggestions? Enhancements? Existing projects I overlooked?

Andy Oram

AddThis Social Bookmark Button

Related link: http://www.linuxpipeline.com/showArticle.jhtml?articleID=17603119

Mitch Wagner, on
Linux Pipeline,
airs pretty much the same arguments I made in my blog

To push desktop Linux, radical shift may be required
.

Will the move to desktop Linux take place?

Andy Lester

AddThis Social Bookmark Button

I have a reputation as a pain in the ass when starting a project. Whether it’s
the Phalanx project or
WWW::Mechanize, or the data-transfer system we’re setting up at work that we called “Moto”, I think naming projects is critical to their continued success. I’ll literally spend hours before the project starts, working to find the perfect name. I’m glad I’m not alone.


Simon Cozens, Perl wizard and editor of
perl.com, has started a new project. Like most of
Simon’s projects, it is not modest: It’s a generic MVC-based web application framework that pulls together disparate parts such as web server and database interfaces.

What to call it? From Simon’s weblog:

Let me start by saying that the plan was always for Apache::MVC to be abstracted into a more general MVC web application framework, and so Apache::MVC would eventually become the Apache-based subclass of this more general project. And such projects need a name - Struts, Brazil, Quixote, Wafer, and so on.


Also, having a name like that allows the project to have a decent web presence, show up on people’s CVs, and so on. I really do see [the project] as being Struts for Perl programmers.

Simon understands the importance that naming holds, that this entity will forever be tied to a few syllables. He could have called it something techie and uninspiring, like AppFrame or WebGirders, that tried to tie into what the actual product is, but leaving it completely bland.


No, he called it Maypole.


So why Maypole? I wanted a name which reflected the fact that the framework was a focal point for various different “strands”; that in a sense it tied everything together. I got thinking about knots and anchors and things but that wasn’t helpful.


In the same way that a maypole is nothing special by itself, but needs dancers around it, Maypole isn’t really very interesting on its own but works wonderfully when combined with a data source library, a view layer and a presentation mechanism. Equally, though, you can’t have a maypole dance without the maypole.

It’s brilliant as a name, and it evokes an instant image. One other parallel that he didn’t mention is the interleaving of the various threads, combining to make the specific look of the maypole.


If only all projects were named so evocatively…

What great project names do you like?

brian d foy

AddThis Social Bookmark Button

I made my decision—I got the Nokia 3650.

I could have tossed a coin to pick between the two finalists, and the Nokia won because it has a goofy button design, and the T-Mobile description of it specifically listed its BlueTooth feature (which it omitted for the T610, although it has it). It was a close match for me, so it came down to these little things.

I did not have to make this decision alone though. Even though I looked at reviews for both phones, read message threads, customer complaints, and other internalia, I found the reader feedback from the O’Reilly Network more valuable. Thank you to everyone who had something to say, even if I did not choose your favorite phone.

Now I have to figure out which BlueTooth accessories to buy. The Jabra headset looks very Trekkie and cool, and I have a USB BlueTooth adapter for my G4 PowerBook on the way (and, the Apple Store says the 12″ and 17″ PowerBooks have it built in. Why not the middle model?)

After I bought the phone, I also found some interesting news that I could have used earlier:

brian d foy

AddThis Social Bookmark Button

About five years ago, one of my friends thought that online wedding registries and planning services would be a huge market, and the situation now seems not much farther along.

My wife and I had a quick civil wedding (two minutes, sign here, pay there) before I left for Iraq, and we are going to have the real thing once I get back. While we were instant messaging one night, we decided to set up an online wedding registry. We are not really excited about the technology, and we realize that a good portion of our guests will probably have trouble using it, but it is something we can do together even though I am on the other side of the world.

Tiffany makes you call them to talk to a registry consultant first, and Mikasa tells you to visit a store first. Several other places we checked had no mention of their wedding registry on their web site.

So, we tried Amazon.com, which, despite its geeky and progressive TK, has a online registry that we can set up in a couple of minutes without talking to anyone else. Their selection of traditional wedding gifts (e.g. china) is very limited, but we found some of the stuff we wanted that they offer through third parties.

Setting up the registry is much like shopping at Amazon.com, although you never checkout. Using the registry to buy gifts looks exceeding difficult. If you find the wedding registry link, which shows up in different places on different pages, but usually near the bottom, you can search by the couple’s name and town of the wedding to find out just how many other brides share my wife’s less common spelling of her name. The search results got better over a couple days, and Amazon had made some remark on how that might be the case. They must have some sort of delayed indexer at work. This is not a huge problem though, since we can just provide our guests with the appropriate link.

How is this going to work out? You will have to wait to find out, just like me.

Does a good online wedding registry exist?

AddThis Social Bookmark Button

Related link: http://csrc.nist.gov/publications/nistpubs/800-61/sp800-61.pdf

There’s a new version of the Computer Security Incident Handling Guide from NIST (Jan 2004).

The guide (148 pages, 2.8MB) covers the complete range of the Incident Handling process and includes chapters about: organizing an Incident Response Capability, handling an actual Incident, handling Denial of Service Incidents, handling Malicious Code Incidents, handling Inappropriate Usage Incidents, and much more. It also features checklists, FAQs and other resources.

This NIST Special Publication 800-61 contains a wealth of information and really should be on the desk of every IT Security manager — No excuse.

For even more Incident Handling resources, visit the overview at Intrusions.org

chromatic

AddThis Social Bookmark Button

Related link: http://www.theregister.co.uk/content/4/35481.html

Neil Davidson’s analysis of Mono and .GNU is flawed, but it’s a good springboard for a more interesting question. Is .NET Microsoft’s exit strategy for Windows as we know it?

There’s fair evidence that the next version of Windows will have — or be — the CLR at its heart. Apart from some drivers and a few pieces of unmanaged code no one can quite escape, the rest of the OS will be CLR components.

That’s positive in a few ways. I most appreciate that it will finally add credibility to something besides C and C++ as system programming languages. (As a side benefit, Microsoft might finally escape buffer overruns.)
Further, if their developers really embrace the idea of well-designed components, it’ll make Windows even easier to script. Admittedly, you’ll have to use some flavor of C# to do it, but at least it’s an intrinsic goal. You can port any language to the CLR as long as it’s C#. (Before you send me angry e-mail, I know that you can add layers and layers of code to add nice things like dynamic typing, but I don’t consider that a port. Deal with it.)

To convince the “I overclock to run the idle loop faster” crowd that CLR components can run fast, or at least, fast enough on the average new machine of 2006, Microsoft has to brag about aggressive JITting. (That’s more or less a runtime optimization step that produces raw machine code from opcodes. While it seems like this
would be slower than producing raw code from the start, it can actually be faster in cases where the additional information at available at runtime allows better
optimizations. This is all an oversimplification, but it should be true enough to make the point.) Since the JITter is necessarily bound to a specific processer (it’s machine-dependent code), the CLR will only JIT
on officially blessed targets. Then again, Java’s “platform independence” meant “some flavors of Win32, Solaris, and, in a few years, an old version will run on Linux” for quite some time too.

There’s another important part of .Net here. Microsoft’s strategy has included distributed components for years. This also shows up in .Net. It’s conceivable that a .Net Office suite will consist of small, downloadable stubs
that connect to an Office server online to do the real work. Expect to pay a license fee.

What are the implications? It’s pretty simple, if a little subtle. If I’m right, Windows will become a virtual machine that allows you to rent applications. Because the CLR isn’t tied to any specific platform — Rotor runs on FreeBSD and Mac OS X, for example — it’s
possible that this most of this new version of “Windows” will run on any complete enough Rotor port, though perhaps not as fast as on the blessed version. Hey, it worked for J++.

It’ll run okay on Mono too. I’ll get to that in a moment.

Microsoft could give up its whole operating system monopoly by shifting it into a CLR monopoly. It may seem like a stupid strategy, but add in the renting of software and it’s not so bad. Think about handheld computers,
cell phones, and PDAs and how well they’ll run the CLR in a couple of years and it’s more and more likely.

Now again, the JIT is important. I’m not sure if Microsoft’s really publicly concerned about anything much more than x86 and its successor. (If Intel’s and AMD’s 64-bit lines emulate x86 instructions, they may
not have to care for a while.) While I’ve run NT on an Alpha, way back when, Microsoft hasn’t shown much of a history of portability. If you want code that runs on multiple architectures, look at the open source and free software folks.

That’s where Mono comes in. Runs on Linux? Yep. Has JIT for PPC? Yep. Goes places and does things that Rotor doesn’t? Yep. Sure, Microsoft loses no
love on the GPL, but they could overcome their institutional view that Windows is the crown jewel to make the argument that renting applications in perpetuity is valuable even if you don’t use the official CLR. (Alternately, they could claim patent infringement and try to grab rights to the Mono source that way, but that seems extraordinarily risky.)

Why port Office to Linux when you can port Windows to .Net?

Is it farfetched? Maybe a little bit. Microsoft has the opportunity to bet the company on a big shift in the desktop market. By making anything-but-.Net a dead end for Windows development and redefining the platform, they have yet another shot at their grail: complete control over your data and applications.

I can’t quite fit DRM into these schemes though, so there may be more (or less) to the story than this idea. Still, there’s a possibility that free software fans should keep in mind. What if the desktop turns out not to be the
right goal after all?

Yep, it’s speculation. Do you have evidence pro or con? Let me know!

chromatic

AddThis Social Bookmark Button

Related link: http://conferences.oreillynet.com/etech

It’s easy to have a dozen interesting conversations every day at a conference. One person wanders up, two wander away, and the topic winds from idea to idea.

That also happens online, although the idea of presence is much more difficult. Besides the non-physical components, which allow for many times more lurkers than participants, many forums have no realtime interaction.

That’s a good feature — it allows more participation. It’s much easier for me to collaborate with authors in Europe and Asia without one of us having to go to bed very late or wake up very early.

Of course, it’s more difficult to capture the idea of ad-hoc conversations with this model. Either you use a real-time chat system such as IRC or an IM system or you use a more permanent system such as e-mail, Usenet, or a web forum.

My wacky idea is to make it easier to hold ad-hoc conversations. That’s part of the idea behind Mail::SimpleList. It should be easy to create a conversation between several people. That conversation should have a defined topic and a scope.

Of course, there are thousands of existing conversations already. The trick, then, is identifying these conversations, discovering participants in existing (and, likely, completed) conversations, and putting people in contact with each other.

The real magic may be not requiring existing participants to register with a central server. I’m not convinced that’s workable and scalable. Instead, it may be more important to identify, classify, and point out these conversations to people who want to participate. Dale Dougherty pointed out that many SourceForge projects are statements of interest, not code repositories. “I’m interested in the idea of writing games in high-level languages. Who else is? Where are they discussing this?”

There’s probably another component. It’s likely necessary to help people create their own ad-hoc conversations. That might mean bridging between Usenet, e-mail, and web forums, as Jon Udell suggested several years ago in Practical Internet Groupware.

Remember, though, applications such as Wiki perform similar services very, very simply. The real trick may be emulating self-organizing behavior among conference participants. At least, any software should allow it.

That’s the wacky idea. It has lots of handwaving. I’ll try to make up for it by providing actual, working code with tomorrow’s wacky idea. Don’t worry — it’s a lot more practical.

How do *you* start and manage ad-hoc conversations? Is it valuable?

Jono Bacon

AddThis Social Bookmark Button

You know, I like Open Source, and I also like free software. Although this may not be the most shocking revelation that you have heard from an article bearing my name, I wanted to not only clarify my affection of this software, but also one of the reasons why I love this software.

We all come from different computing backgrounds, and although I sailed the fairly common seas of a Commodore heritage, there are of course many of you who have trudged through the darkened waters of restricted technologies that
not only restrict what you can do, but also restrict what you can’t do. These technologies have typically been developed by companies with more of an interest in profit margins, marketability and sales rather than the technology and how it works. Luckily, a ray of hope is shining into the IT industry, and we can thank the legions of free software hackers firmly seated behind their whirring PC’s the world over.

If you take an honest look at software usage, it is quite clear that Microsoft play a very dominant role in the IT world. Not only does this behemoth sell a a stable of Operating Systems but they also sell productivity software, servers, development tools, consumer applications and games
consoles. Despite whether you may look at Microsoft’s dominance as a monopoly or whether it is the media tarnished success of a large corporation, there is no doubt that Microsoft technology runs many computers.

With the problem of dominance comes equality. Microsoft is a closed source company. They sell closed sourced software, use proprietary file types and generally hold their cards fairly close to their collective chest. When you combine a large multi-application vendor and a closed sourced OS, there is a real distinctive possibility that the vendor may not have provided as complete and thorough details on their OS API as you may think. This is a possibility that immediately puts other application vendors at a disadvantage, particularly if they are competing with with the OS vendor in the first place. The problem here of course is that we will never know - closed sourced software cannot give us an authorotive answer. I am certainly not accusing Microsoft of holding certain API details from the general application development community, but the possibility exists, and while it exists, it poses a problem.

Irrespective of whether you say yay or nay to this possibility, the other issue with relying on a closed source base to build software on is that of experience. Microsoft have been writing Microsoft software that runs on Microsoft systems for years. As such, this Microsoft software may run
better on Microsoft systems because Microsoft have been writing Microsoft software for a long time and Microsoft know more about how the Microsoft machine works than anyone. Can you see a pattern here?

Free software has given the world a level playing field. If the code is available and closed source components are not relied upon, it means that every developer and business from a tiny startup to a huge corporation is on the same footing. The code is open, the market is open and the possibility
for innovation is open. This level playing field also paves the way for a variety of software applications that may be either redundant or difficult to compete with from a Microsoft technology based standpoint. Take as an example the actual GUI desktop that forms Windows. Although many would constitute this desktop Windows itself, the reliance of the GUI toolkit that is part of the Windows OS seems to not only bind the user to the desktop, but also binds the developer too. This is simply not the case with an open source system, and this is why we have a variety of development options for free software systems.

This open source platform really unchains the possibility of smaller businesses doing a real and viable business. Take as an example href="http://www.trolltech.com/">Trolltech who develop, sell, and support the popular Qt toolkit. Trolltech have worked exceedingly hard to really push out a great product, and not only has this small company worked to develop
quality, but has also worked to keep it compatible with the open source culture that actually made Qt a viable option. Trolltech will know very well that the KDE desktop is one of the
main reasons why people will have heard about Qt in the first place; a fact that the company can leverage on to push the software into different areas and to different consumers. Not only have Trolltech bended to the reality of running a business and selling software, they have done it in such a way that really provides a quality product that keeps both commercial and free software developers happy. This knock on effect will have no doubt increased the development community of KDE and free software Qt hackers. Many would say this is a truly symbiotic relationship in action.

Pushing the example of open innovation a touch further, another case where free software has opened the doors to smaller scale development is with href="http://www.thekompany.com/">theKompany.com who sell applications and tools that are cross platform. It is clear that theKompany.com were well aware of the potential of Qt, and although they initially tried to write KDE
only software, the company has broadened out to create multi-platform native applications. Once again, theKompany.com have a viable environment to exist
in because the open source platform is a relatively un-tendered base for commercial software. Not only have theKompany.com put together a distributed network of developers from around the world, they have put together and refined a truly modern company that is writing software that will run irrespective of the OS. This factor not only opens up Linux as an option for customers, but does not tie them into the Linux platform in a hostile way; the customer can choose - a factor that cannot be said for various other software vendors.

The reason why I am using Trolltech and theKompany.com as examples is because I think they are really interesting companies that are pushing for a warm relationship between a free software and commercial environment. I have worked with both Trolltech and theKompany.com as a freelancer, and the
reason why I am writing this is not to bolster any kind of sales or promotion, but to give examples of companies are sensitive to their open source heritage as well as their product lines. These two companies have proved that a balance of of quality products, honesty and support of the community can really help develop a business.

I like groups, individuals and businesses who work hard at creating a product that is unique, fair and representative of their passion for their work. I really have a kind of sympathy with vendors that are pushing to wedge their foot in the door, particularly when the market is driven by huge companies with possibly inferior products. It can be done of course, and the list of companies who have a hand in the Open Source framework is increasing all the time. In the same way that fans of a style of music often remain faithful to lesser known artists, I believe that many Open Source and free software users have a real sympathy for companies such as this. Setting up your own business and making money is difficult enough, let alone in an industry dominated by huge businesses where you try to retain some community spirit.

The Open Source and free software community has created a real recipe for equality in the market, and with the predicted growth of the Linux platform in 2004, this rather young industry could see more and more players moving
into the field.

What do you think? Do you think this kind of equality in industry can work? Share your thoughts…

brian d foy

AddThis Social Bookmark Button

Related link: http://www.reuters.com/newsArticle.jhtml?type=internetNews&storyID=4211601

Reuters reports that President Clinton only sent two emails, although his presidential library calls him “the first president of the Internet Age”. Sorting those email should be easy, especially if we remove the test message he sent. I wonder if he typed “Hello World”.

The library, however, will contain 40 million email messages total, and after it opens in November of 2004, I will go there to see what he wrote, what he had in the signature, and maybe, if they kept the mail headers, which program he used.

brian d foy

AddThis Social Bookmark Button

I have narrowed the cell phone field to two contenders, the Sony Ericsson T610 and the Nokia 3650. Neither come close to my initial requirements, but no phone does.

I settled relunctantly on T-Mobile, since my wife already has a phone with them, after I gave up on Verizon, which has served me well but seems sadly stuck in the last century. It is a pity I cannot give my money to the carrier I really want. I wish Motorola had more BlueTooth options, but since they do not, I have to choose someone else, and another company loses my money. Even though we are both in Chicago, Motorola, I cannot buy local and it looks like my money is going overseas.

I have a selection of 11 phones in my T-Mobile service area (Chicago), but only two, these final two, show up on Apples iSync device list. They both have BlueTooth, and they both have a lot of add-on services designed to suck the money right out of my checking accounting. Even though I do not want to send video email from my phone, once I have a phone that does it, I might be really annoying to my friends and family who have already seen enough out-of-focus pictures of my cats.

Timothy Appnel says from the Emerging Technology Conference that the Nokia 3650 is the phone to have”, and I am leaning that way since it is the last thing I read. How can so many Mac users be wrong?

Although T-Mobile does not list the Sony Ericsson P800 SmartPhone, a couple of people have told me I can buy it and take it into their store for programming. I think I would have to pay full price for the phone, in that case, whereas the ones T-Mobile lists have generous rebates. Besides, the notion of a SmartPhone scares me—its only with some trepidation that I am even venturing beyond technology that does caller ID, the most fancy feature on my last phone.

Maybe this is a good thing—I am being forced to try something new and outside my gadget and brand loyalty comfort limits.

Would you choose the Nokia 3650 or the SOny Ericsson T610?

Chris DiBona