<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=us-ascii">
<META NAME="Generator" CONTENT="MS Exchange Server version 6.5.7232.84">
<TITLE>Some Erlang problems</TITLE>
</HEAD>
<BODY>
<!-- Converted from text/rtf format -->
<BR>

<P><FONT SIZE=2 FACE="Arial">Hello,</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">Here are some Erlang problems.</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">Now each of these problems has at some stage been solved - since I have seen</FONT>

<BR><FONT SIZE=2 FACE="Arial">the solutions - the problem is that the solutions are either not-maintained, or</FONT>

<BR><FONT SIZE=2 FACE="Arial">have totally degenerated to the point where they are unusable, or the code has</FONT>

<BR><FONT SIZE=2 FACE="Arial">just mysteriously vanished.</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">They are the kind of problem that I need solutions to every day, but take more than</FONT>

<BR><FONT SIZE=2 FACE="Arial">30 minutes to hack together, so often don't get done. They are not *very* difficult</FONT>

<BR><FONT SIZE=2 FACE="Arial">but they do require a certain familiarity with the system. They also don't get done</FONT>

<BR><FONT SIZE=2 FACE="Arial">because to solve them would interrupt the flow of what I'm working on, so I tend to</FONT>

<BR><FONT SIZE=2 FACE="Arial">program around them, rather than stop what I'm doing and solve them.</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial"><< these fall into the funny category of nice to have stuff that never gets done,</FONT>

<BR><FONT SIZE=2 FACE="Arial">     essential-but-difficult stuff (compilers, run-time, GC) gets done,</FONT>

<BR><FONT SIZE=2 FACE="Arial">     trivial stuff gets done, but this stuff gets missed >> </FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">I'd like to make a list of such problems, and I'll publish the list at regular intervals</FONT>

<BR><FONT SIZE=2 FACE="Arial">and the best known solutions.</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">To help with this I'd like you to send me either a problem, or a solution to the problem,</FONT>

<BR><FONT SIZE=2 FACE="Arial">I will try to test all solutions, and I will publish all of this in some form.</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">For each new problem I'd like a one line summary and a description of the problem.</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">Here's my starter list:</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">1. How do I read raw characters in the shell in live-no echo mode?</FONT>

<BR><FONT SIZE=2 FACE="Arial">2. How do I start an xterm from Erlang, with raw character input/output?</FONT>

<BR><FONT SIZE=2 FACE="Arial">3. How do I trace a sequential program?  </FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">Description:</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">1)  How do I read raw characters in the shell in live-no echo mode?</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">I want to do live keyboard input in the shell. I want to be sent a message</FONT>

<BR><FONT SIZE=2 FACE="Arial">every time there is a keyboard event. This should be at different levels</FONT>

<BR><FONT SIZE=2 FACE="Arial">of granularity (ie I might want to get key-up key-down events, or merely</FONT>

<BR><FONT SIZE=2 FACE="Arial">key-pressed events - I want to control echoing). I want to issue control codes</FONT>

<BR><FONT SIZE=2 FACE="Arial">for cursor addressing. </FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">Typical applications read passwords, full screen editor with explicit</FONT>

<BR><FONT SIZE=2 FACE="Arial">cursor control.</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">Can this be done in the Erlang shell at all?</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">2. How do I start an xterm from Erlang, with raw character input/output?</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">This is a generalisation of 1) - I'd like to say Pid = xterm:start() and</FONT>

<BR><FONT SIZE=2 FACE="Arial">a new xterm would pop up - then I should be able to get keyboard events</FONT>

<BR><FONT SIZE=2 FACE="Arial">from the xterm and write raw character to the xterm. I'd also like keyboard resize events.</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">Applications - write your own editor (I have a pico emacs that would work if</FONT>

<BR><FONT SIZE=2 FACE="Arial">anybody can provide the xterm)</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">3. How do I trace a sequential program?  </FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">Is there an *easy* way to just trace a sequential bit of code, like in a Prolog debugger.</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">I'd like to say</FONT>
</P>

<P>        <FONT SIZE=2 FACE="Arial">> trace(Mod, Fun, [Args])</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">And then see a Leap-Trace-Back style debugger interface</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">The entry point to each function should be displayed. I am given the options</FONT>

<BR><FONT SIZE=2 FACE="Arial">of Leaping to the next function call, or return value, or Tracing into the function</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">I should also be able to go back at any stage. If I lept to a return value and the return</FONT>

<BR><FONT SIZE=2 FACE="Arial">value was wrong, I'd like to go back one step and retry with a Trace instead of a leap.</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">Cheers</FONT>
</P>

<P><FONT SIZE=2 FACE="Arial">/Joe</FONT>
</P>
<BR>

</BODY>
</HTML>