tag:blogger.com,1999:blog-82729792008-08-17T23:05:32.607-07:00TAKASHI'S WORKSPACETakashihttp://www.blogger.com/profile/00275489652316753838noreply@blogger.comBlogger56125tag:blogger.com,1999:blog-8272979.post-88863321946776324342008-08-17T23:04:00.000-07:002008-08-17T23:05:32.618-07:00My next three months goals.<p>The main point of my previous three months goals was making a text
editor on Ian's stuff <a href="http://tinlizzie.org/svn/trunk/bottle/">http://tinlizzie.org/svn/trunk/bottle/</a>. I admit
that it has not been finished in terms of building a really useful
text widget. Making a text editor looks simple requirement. But even
just a substitute widget for Squeak's ParagraphEditor from scratch is
quite complicated because it has to deal with a large number of issues
like text layout, scroll, font rendering, etc. To make the goal
clearer and smaller, I propose one concrete prototype and one real
implementation.
<h3>An authoring tool for Active Essays on web browser.</h3>
<p>It will be direct successor of TileScript <a href="http://tinlizzie.org/jstile/">http://tinlizzie.org/jstile/</a>
and YUI-based tool for Active Essays
<a href="http://tinlizzie.org/ometa-js/alan/essays.html">http://tinlizzie.org/ometa-js/alan/essays.html</a>. Those were difficult
to use even sometimes for myself because they were too heavy and UI
was complicated. The focus of this project is brushing up the UI. I
will not add a new function, but it will have enough features to
express some of examples in Appendix A of STEP paper and Ted's puzzle.
<ul>
<li>Basic text emphasis (header, list, in-line image)
<li>Wiki based collaboration mechanism.
<li>"include" mechanism
<li>OMeta/JS can be used through "include"
<li>Supported platform: IE6 and Firefox3
</ul>
<h3>A basic widget component for Active Essays on Ian's stuff.</h3>
<p>This is a real stuff based on above prototype. Every necessary widget
which needed for text editing including text emphasis and in-line
image will be implemented. Wiki-based collaboration part won't be
included.
<p>This text widget can be used a part of Ted's DB Jr.Takashihttp://www.blogger.com/profile/00275489652316753838noreply@blogger.comtag:blogger.com,1999:blog-8272979.post-11655559902059431962008-08-17T00:24:00.000-07:002008-08-17T00:25:35.287-07:00Next Goals of My Hobby<p>I need my next three month research goals by next Tuesday's
meeting. But it is too hard for me to write a documentation before
writing source code. Because I'm a 100% pure programmer, I program
therefore I am.
<p>But I have to write something anyway. It might be better to write
something fun idea before serious documentation. So my brain will
switch to "writing mode" smoothly. So I made up my next three month
hobby goals. This is it.
<h3>Simple Electronics Device</h3>
<p>When I was first interested in electronics was around ten years
old. I have tried a couple of electronics projects. However, I had
never understood how to decide parameters of component. Sure, resistors
and ohm's law are pretty easy, but capacitor, transistor, coil, such
components are quite difficult. I hate numbers and I am too lazy to
handle complicated equation.
<p>Those knowledge is completely unnecessary as a programmer. But same
time, I couldn't tolerate the fact that I was ignorance about
electronics. So I got started to learn it again a couple of month
ago. First goal is to make a simple device to communicate between a
computer and real world. This is one of early attempts.
<p><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/aQxPazQgKUw&hl=en&fs=1"></param><param name="allowFullScreen" value="true"></param><embed src="http://www.youtube.com/v/aQxPazQgKUw&hl=en&fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"></embed></object>
<h3>FPGA Block RAM and Demonstration</h3>
<p>I happen to get a source code of tiny CPU in Verilog. This is quite
beautiful so I bought a Spartan-3A FPGA board for $200 to test this
code. FPGA is very interesting gadget. But it requires different ways
of thinking against programmer's view. So I still do nothing for
it. One of the problems is I don't understand how to use Block
RAM. And I don't have nice idea to demonstrate it. Just running a CPU
is too boring. I wish I can run the verilog CPU with fun demo
perfectly.
<h3>A Compiler in Javascript</h3>
<p>It still doesn't go beyond a joke. I have played a tiny source code
in x86 assembler with GNU as. It was when I was teen that I played Z80
CPU, and I was surprised the some essence of Z80 machine code is still
alive in modern CPUs (I had imagined as if modern CPU might have
hundreds and thousands of generic registers, but still we call EAX
register as an accumulator!). I can't say as it is good though, it is
very appealing to me.
<p>So I think that it would be fun if I will make a compiler,
assembler and linker in Javascript on a web browser. It might support
only one CPU and one platform like x86 linux, still it should be a
good exercises.
<p>I could write those ideas more. But this is it today.Takashihttp://www.blogger.com/profile/00275489652316753838noreply@blogger.comtag:blogger.com,1999:blog-8272979.post-60247973449780946812008-08-16T01:16:00.000-07:002008-08-16T15:26:50.930-07:00Documentation and Programming Language<p>A number of major programming languages have its own documentation system. Those variations themselves interest me very much. I picked up some of them and examined.</p>
<p>There are some interesting points to characterize those systems.</p>
<ul><li>Text base VS Memory base: A text based documentation system is implemented as just a text formatter. But some are integrated in the language itself, so you can access the documentation in run time. Emacs Lisp is a significant example of Memory based documentation. I think Memory based documentation is more useful though, sometimes Text base is handy because it doesn't need to load a program only for the documentation.</li><li>Description part and Reference part: A documentation might include a description part, which describes overall goals and functions of a part like a class or a module. In contrast with description part, a reference part describes detail of a particular entity like a function or a variable. A reference part is connected with its source code of definition.</li></ul>
<h3>Perl</h3>
<p>Perl's documentation is described by POD (Plain Old Documentation). POD is a text based system. It has only description part.</p>
<p>POD is a very simple markup language and it has only enough mechanism to represent traditional UNIX manual style which includes certain sections like NAME, SYNOPSIS, DESCRIPTION, etc.</p>
<p>A POD document is embedded in a Perl program as a comment and the Perl's parser just ignores it. A POD parser just ignores program. POD doesn't use any information from the program source code.</p>
<a href="http://search.cpan.org/perldoc?perlpod">http://search.cpan.org/perldoc?perlpod</a>
<h3>Java</h3>
<p>JavaDoc is the standard documentation tool for Java. It is a text based and it has both description part and reference part.</p>
<p>JavaDoc parser uses not only comments but also program codes to extract type information and class hierarchy. Even it works if you don't write a comment. Very structured HTML documentation is generated by the tool.</p>
<p><a href="http://java.sun.com/j2se/javadoc/">http://java.sun.com/j2se/javadoc/</a></p>
<h3>Emacs Lisp</h3>
<p>Emacs Lisp has memory based documentation. And it has only reference part.</p>
<p>Emacs Lisp's documentation is highly integrated with Emacs editor. You can access help document for every functions and variables without external tool.</p>
<p>A documentation is described as a first comment in a function or a variable definition. This comment is parsed by Emacs lisp parser, and shown by help command e.g. M-x describe-function. Help system of Emacs Lisp doesn't have description part, but info manual of Emacs lisp complements overall information.</p>
<p><a href="http://www.gnu.org/software/emacs/emacs-lisp-intro/html_node/defun.html">http://www.gnu.org/software/emacs/emacs-lisp-intro/html_node/defun.html</a></p>
<h3>Python</h3>
<p>Python has memory based and text based documentation. And it has description part and reference part.</p>
<p>Basically Python's documentation is same as Lisp's. A documentation is described as a first comment of an entity (module, class, variable, etc...), and parsed by Python parser. You can access the documentation through __doc__ property in run time.</p>
I don't know much about Python. But Python is unique because there seems to be a way to extract documentation by text processing like Java and Perl. I'll learn about it later.
<p><a href="http://www.python.org/dev/peps/pep-0257/">http://www.python.org/dev/peps/pep-0257/</a></p>
<h3>Squeak Smalltalk</h3>
<p>Squeak Smalltalk doesn't have documentation system. It is not necessary because the IDE is strong enough. But you can see IDE itself as a memory based documentation system. Class comment is used as a description part, and method comment is used as a reference part. Class browser has mode to hide source code but comment.</p>Takashihttp://www.blogger.com/profile/00275489652316753838noreply@blogger.comtag:blogger.com,1999:blog-8272979.post-31255186721147077862008-08-13T23:12:00.000-07:002008-08-16T15:29:40.265-07:00What does documentation lose?<p>I realized that Knuth emphasized narrative way to express a program documentation instead of formal way in "Literate Programming" paper. The reason why WEB needed macro mechanism which Pascal didn't have was that it was needed to make the program flexible enough so that an author can keep order of original thinking flow on the text. Using WEB, whatever each symbol dependents on others, you can write down in any order which you like.</p>
<blockquote> a program is, likewise, ready to comprehend it by learning its various parts in approximately the order in which it was written. -- LITERATE PROGRAMMING</blockquote>
<p>Such consideration have been lost in current documentatin mechanisms like JavaDoc. Major goal of documentation generator for programming language is to make a comprehensive reference, certainly, literary value would be out of scope in those systems. I expect thet My Active Essays project would be a missing link following the lost feature.
<p>However, before diving too deep, I need to know current art and science of program documentation... to be countinued.Takashihttp://www.blogger.com/profile/00275489652316753838noreply@blogger.comtag:blogger.com,1999:blog-8272979.post-75351015400840760922008-08-10T23:34:00.000-07:002008-08-16T15:30:30.396-07:00Things in my mind recently<img src="http://f.hatena.ne.jp/images/fotolife/p/propella/20070202/20070202205219.png" alt="" border="0" />
<p>A couple of people asked me about this blog, so I add a new post finally. Because I don't spent my major time for Squeak recently, I changed the title of it with more general flavor than "Squeak Everyday". But "Workspace" is still a keyword from Smalltalk. What I am doing everyday is still dynamic hacking with / without computer.
<p>I'm quite interested in relationship among programming and documentation. It was 80' when Knuth wrote about literate programming <a href="http://www.literateprogramming.com/knuthweb.pdf">http://www.literateprogramming.com/knuthweb.pdf</a>. In this article, he seems to be too excited about his idea that a program is a literature. How far we have elaborated the idea since then. Yes, from Emacs's documentation to JavaDoc, there are a lot of great works. But I'm not sure those are really literature, in other words, those are fun to read. In fact, although I am really fun of API documentation as a hacker, it could be more entertainment. That's what I am thinking these day.
<p>When I was working on my old work <a href="http://metatoys.org/propella/js/workspace.cgi/Home">http://metatoys.org/propella/js/workspace.cgi/Home</a> (2007), such idea was in my mind, too. And I'm going to visit it again.Takashihttp://www.blogger.com/profile/00275489652316753838noreply@blogger.comtag:blogger.com,1999:blog-8272979.post-59515491124004265952007-07-05T15:55:00.000-07:002007-07-05T15:58:57.439-07:00ODECo on OLPC<a href="http://www.flickr.com/photos/propella/730663760/" title="Photo Sharing"><img src="http://farm2.static.flickr.com/1007/730663760_ca8a9eda83.jpg" alt="P1030229" height="375" width="500" /></a>
ODECo <a href="http://languagegame.org:8080/ggame/15">http://languagegame.org:8080/ggame/15</a> is an easy tool kit for making dynamics simulation based on ODE <a href="http://www.ode.org">http://www.ode.org</a>. It was developed for Squeak 3.6 in 2004 though. Now I did small fix to work on OLPC etoys and Squeak3.9 for linux (I've tested it on Fedora 7).
How to Play:
- Download and extract the image.
- Install the plugin.
(for OLPC, you need to copy ODEPlugin to /usr/lib/squeak/3.9-11/)
- Open the image. And try examples.
Download: (image + examples + plugins for linux, windows, mac)
<a href="http://languagegame.org/pub/ODECo-OLPC-2007-07-05.zip">http://languagegame.org/pub/ODECo-OLPC-2007-07-05.zip</a>
Source Code:
<a href="http://squeaksource.com/ODE/ODE-Plugin-tak.2.mcz">http://squeaksource.com/ODE/ODE-Plugin-tak.2.mcz</a>
<a href="http://squeaksource.com/ODE/ODE-Base-tak.39.mcz">http://squeaksource.com/ODE/ODE-Base-tak.39.mcz</a>
Website:
<a href="http://www.languagegame.org:8080/ggame/15">http://www.languagegame.org:8080/ggame/15</a>Takashihttp://www.blogger.com/profile/00275489652316753838noreply@blogger.comtag:blogger.com,1999:blog-8272979.post-1175958085947132882007-04-07T07:46:00.000-07:002007-04-07T08:01:25.960-07:00OpenDocument on Squeak<p align="center"><a href="http://photos1.blogger.com/x/blogger/7724/552/1024/568636/odfWorkspace.jpg"><img style="CLEAR: all; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://photos1.blogger.com/x/blogger/7724/552/400/424461/odfWorkspace.jpg" border="0" /></a></p>
<p>
The end of last month, a french student asked me about my OpenDocumentFormat module for Squeak. ODF??? Yes, I have been written a ODF exporter based on Diego's stuff for a project. <a href="http://www.squeaksource.com/OpenDocument.html">http://www.squeaksource.com/OpenDocument.html</a> But I haven't maintenance for a while because I was busy for another project now. I was feeling somewhat guilty because it should be useful even on normal Squeak image if I put some fix. So actually his bug report was a good opportunity to clean up my code. And this is one. It works with Squeakland, Squeak3.8, and Squeak3.9 (YAXO is needed).
</p>
<ul>
<li><a href="http://www.squeaksource.com/OpenDocument/OpenDocument-Core-tak.35.mcz">http://www.squeaksource.com/OpenDocument/OpenDocument-Core-tak.35.mcz</a></li>
<li><a href="http://www.squeaksource.com/OpenDocument/OpenDocument-Workspace-tak.1.mcz">http://www.squeaksource.com/OpenDocument/OpenDocument-Workspace-tak.1.mcz</a></li>
<ul></ul></ul> <a href='http://picasa.google.com/blogger/' target='ext'><img src='http://photos1.blogger.com/pbp.gif' alt='Posted by Picasa' style='border: 0px none ; padding: 0px; background: transparent none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial;' align='middle' border='0' /></a> Takashihttp://www.blogger.com/profile/00275489652316753838noreply@blogger.comtag:blogger.com,1999:blog-8272979.post-1126178852834253592005-09-08T04:27:00.000-07:002005-09-08T04:27:32.840-07:00UNDO!To tell the truth, I haven't cared about UNDO in my work at all. Although I am really interested in brand new feature and fancy demonstration of computer programming, but I never have been concerned real user's experience. Ah, but the time seems to be coming to do about UNDO.
From the stand point of developer, I'm really taking care of undo. Programmer's undo is revision control systems. I love to use Monticello to manage my private project in Squeak, and Subversion for other stuff. I couldn't do anymore unless such system. So I realize that one interesting issue here is why undo system is implemented in various way?!
In minimal scale, we can use just undo key in your editor. Each application has its own undo policy. But the undo buffer is removed when the editor is shutdown. Revision control helps the situation. Besides, sometimes we use more file oriented backup system. So far, my company did differential backup for whole PCs at office into file server (I made the script in Perl). In any case, the goals are same, we want to back some point in history of our computing activity. Are there any core concept in?
Let's talk about other angle of undo. Sometimes undo is implemented as command pattern. Look, we have already have another commands in our etoys system, a tile, so we can imagine if undo buffer is made in etoys tiles. If so, one can learn how tile script is written looking undo history. This is basically same as macro recording (actually, I have learned emacs lisp to record/read macro scripts so far). To achieve such feature, all operation including painting a form and editing a text should be recorded as commands (as HyperTalk has all commands for menu / editor operation).
If all operation is recorded into undo buffer, we can see the undo buffer is document itself. That is an interesting side-effect. Instead of saving document data, we can save a sequence of command. The benefit of it would have a power of generalization. Documents, undo, playback, etc. are formed same way of commands.
To proceed this concept, you can see two different documents as two snapshot from same revision tree. Because certainly, a document is written from empty document. We could see any document of same application derives one root. Hence, any document of Squeak space is regard as different version of one big revision tree described in commands.
I know the idea is based on too simplification. I didn't care any performance issue neither space nor time. But it is important to start where the simple enough point.Takashihttp://www.blogger.com/profile/00275489652316753838noreply@blogger.comtag:blogger.com,1999:blog-8272979.post-1126055230053720912005-09-06T18:06:00.000-07:002005-09-06T18:07:10.060-07:00Meeting with JulianI had meetings with some NICT's researchers and Julian for these two days. Although I still felt slightly jet lag as I just had backed from L.A. on last Sunday, I was excited by a lot of interesting topic at the meeting.
I also showed a demonstration about Chibi-Robo stuff. We were talking about to create 3-D scripting system. I realized this goal will be not easy as I expected. I regret my work should be stopped for a while to do another work, but I hope I will be able to make up more generic version.
Most interesting topic came in the last dinner. Julian asked to one researcher to use iChat to corroborative work. Now we have enough infrastructure to use video conference, so it is free to use such tool whenever you need. Actually Julian said he already sets up iChat in his home during the entire day, it isn't necessary to turn off, and he can be chatting to his son whenever he want even he is on other side of the world. The important point is you don't need to disturb by noisy bells to aware enyone. One can look at peer not to be busy now nor not.
I imagine the world where such video conference technology becomes just a trivial technique, as if today's HTTP or SMTP protocols, the applications of VOIP will become different than today's one (Croquet?!). Early web is just a thing for static document, but now it becomes more dynamic thing. Julian seems to try such experiment with his iChat.Takashihttp://www.blogger.com/profile/00275489652316753838noreply@blogger.comtag:blogger.com,1999:blog-8272979.post-1125837884619657872005-09-04T05:41:00.000-07:002005-09-04T05:44:44.626-07:00Implementation of TVML with CroquetAt last entry, I wrote the brief story of the Croquet project with NICT. But now, I am trying to describe more detail implementation of that project as I have a time on the airplane. In term of implementation, I could not say it was a good work. There were a lot of ad-hoc things, dirty patch, and less reusable. All the mess were from its primary goals.
- Novice user can use.
- Connect with P2P network more than 7 hosts.
- The croquet space is regarded as if real NICT interior.
Imagine these are not easy in current Croquet release as it is too early stage. For instance, the most strongest demand in here was we didn't have to show any error messages whenever a child touches anywhere, thus it needs a bunch of hooks in UI-related code. The lack of generalization was why I didn't show neither Squeak image nor source code of the project (I am ready to show you my source if you send me a mail). But I think I should contribute parts of codes for this project with some ways.
Anyway, let's talk about points of the implementation.
** Describe animation as TVML script
Honestly, the script that I described for the project was actually not TVML itself. Although much portion of the script was due to TVML, but I didn't TVML itself because;
- Implementation of full set of TVML needs need effort.
- I don't want to carry with new syntax into Smalltalk.
Finally, the script I introduced looks like;
- character:walk (name="Bob" x=10, y=0, z=10) (TVML notation)
- Bob tvBehavior runSpec: #(walk x 10 y 0 z 10 length 1000). (Croquet notation)
Basic idea is similar, but its expression is different. Croquet version is just a Smalltalk array, and it doesn't need the key "name" because the subject of the script is described as its receiver (Bob tvBavior references a TVML animation engine).
Another significant thing is Croquet version stats the length of animation (by millisecond). The length of the animation was essentially platform dependence in original TVML (you can tune with magical numbers to try and error). But in Croquet, accurate timing was needed in network interaction.
** User interface
For using as a direction board, I made the user interface be much simpler to eliminate walk-through motion, pop up menu, and dock menu. In stead of that, I put simpler UI.
- Both right button and left button mean selecting menu.
- The stand point of user does not move.
- The degree of view can be moved by operation a mouse (180 width and 30 height).
The main differences from regular Croquet is eliminating walk-through. In this work, User doesn't need to move the stand point. Besides, anyone can not make new objects or new windows.
** Network
Network was the hardest work to do. Did you know current Croquet just supports up to 3-4 clients? I realize the fact when 3 days before of the demo, it makes my face pale with fear (I regretted I had been too late binder). The problem I met there was;
- Become slow down.
- A number of shared message was dropped down.
- All host was down after one host was down.
- Whenever one host is down, I have to restart all the host for synchronizing their states.
I couldn't fix those problem in precisely right way as I had no time,
but I managed the issue relatively ad-hoc way.
- Each host has just atomic, limited states.
- Reducing shared message (Cutting lasers, falling down, etc).
- The interval of Heart beat (TeaParty>>runKeepAlive) was made longer.
- Don't use TCP to avoid blocking.
** The fact we met from the "Open House" event.
- It is hard to use if many user operate in same time.
- The trackball has too many buttons.
- Menus are too large for using in large display.
- The pointer cursor is too small to see where is pointed.
- It is hard to know each host is connected each other.
- Out of memory happened each an hour.Takashihttp://www.blogger.com/profile/00275489652316753838noreply@blogger.comtag:blogger.com,1999:blog-8272979.post-1123084403905567842005-08-03T08:53:00.000-07:002005-08-03T08:54:51.856-07:00TVML Crouqet exhibition<a href="http://photos1.blogger.com/img/146/1669/640/TVMLOpenHouse.jpg"><img style="border: 1px solid rgb(0, 0, 0); margin: 2px;" src="http://photos1.blogger.com/img/146/1669/400/TVMLOpenHouse.jpg" border="0" /></a>
TVML Crouqet exhibition <a href="http://picasa.google.com/" target="ext"><img src="http://photos1.blogger.com/pbp.gif" alt="Posted by Picasa" style="border: 0px none ; padding: 0px; background: transparent none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial;" align="middle" border="0" /></a>
The final demonstration of my work about TVML + Croquet had finished last weekend in NICT "Open House" exhibition. We had up to 900 guests including families of the NICT reserchers in the exhibition one day. It was a very exciting day even I was lack of sleep...
My work was a kind of computer guidepost. There were six connected Croquet client in varied places like the cafe, gallery, or so, and users can ask the computer the directions for a bunch of display items. In the screen, the space is build as same as actual place, and there is a robotic character named "Chibi-Robo", who leads user to right place.
There are a couple of differences than usual Croquet application, most different thing is users never walk in the Croquet space. For example, a Croquet client placed at the cafe is always shows the cafe. If a user moves the mouse, the viewpoint is just rotated, but not moved. If a user wants to follow walking "Chibi-Robo", the user must walk to next Croquet client in actual space. When the user reaches next Croquet, wow! "Chibi-Robo" would be waiting for you in the host. There are six Crouqet, but there is only one "Chibi-Robo" in the space, so children (there are a lot of children!) have to run in the floor to chase Chibi-Robo.
Honestly, a number of children played with Chibi-Robo, and began to like Croquet. I thought this was a succesful demonstration.
In the technical degree, there were a couple of challenges. Especially, TVML animation and connected 6 hosts are very difficult thing. Actually, I had to reboot each 10-15 minutes for memory leak (about one hour per a host). That was tough experiment for Croquet.Takashihttp://www.blogger.com/profile/00275489652316753838noreply@blogger.comtag:blogger.com,1999:blog-8272979.post-1119111877454243152005-06-18T09:23:00.000-07:002005-06-18T09:28:05.886-07:00Squeak and stdin/stdoutI had a discussion with a couple of squeakers today. The main theme of the meeting was about our new web site for Japanese squeak develpers, but there was another interesting topic in the discussion.
Standard input and output support in Squeak should be one of key aspect to make Squeak more populer.
Sometimes, I've heard that the difficulty to combine another program is a reason that ordinary programmer feels Squeak unfamilier. Although, most of end users don't use stdio/stdin to connect applications these days. But programing fan including me still like to use such traditional way as its simplisity.
For example, I am writing this topic with an emacs derivative in WindowsXP. Frequency, I strike a key Control Alt $ to invoke spell checker, or Control C + w to invoke English Japanese dictionary. These function are not in emacs, but external commands with a pipe stream. That was originaly a common operation style in Unix, and we can share bounty of the philosophy even if we use Windows. So non-support of stdio in Squeak seems a defect for hackers daily use.
Fortunately, I found a work about this area named OSProcess. That was a impressive work! but a bad news is OSProcess does not support stdio in Windows. I don't know about how OSProcess works, but I start to think to make Windows support of it.
Abe-san said he had used a proprietary Smalltalk as a batch language like /bin/sh. I imagine Squeak also should be good language as such glue.Takashihttp://www.blogger.com/profile/00275489652316753838noreply@blogger.comtag:blogger.com,1999:blog-8272979.post-1118733496723411082005-06-14T00:18:00.000-07:002005-06-14T01:49:08.766-07:00Planning a demonstration of TVML + CroquetI have a plan to show my work of TVML + Croquet at NICT public exhibition day the end of July. I have made a PowerPoint slide (I prefer Sqeueak! but they demanded it) and show at last NICT meeting. In the exhibition, main audience are neighborhood children. A lot of kids who are science fun would come. So we have a plan to show 10 PCs connected with Croquet for one whole day.
10 PCs ?! I have never seen such number of hosts connected with Croquet. I know current Croquet network implementation is a bit fragile. Actually, a friend of mine have tried to know how many number computers which can connected in Croquet same time, in that time (2 years ago), the result was only 4 hosts for a few minutes.
Besides, this is not just a presentation, but a real demo. the users are hackish children who like to type the keyboard randomly. But I think this is exciting challenge.Takashihttp://www.blogger.com/profile/00275489652316753838noreply@blogger.comtag:blogger.com,1999:blog-8272979.post-1118711901103618742005-06-13T18:18:00.000-07:002005-06-13T18:38:00.146-07:00Kansai Daigaku Workshop<a href="http://photos1.blogger.com/img/146/1669/640/P1010056.jpg"><img style="border: 1px solid rgb(0, 0, 0); margin: 2px;" src="http://photos1.blogger.com/img/146/1669/400/P1010056.jpg" border="0" /></a>
Kansai Daigaku Workshop <a href="http://www.hello.com/" target="ext"><img src="http://photos1.blogger.com/pbh.gif" alt="Posted by Hello" style="border: 0px none ; padding: 0px; background: transparent none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial;" align="middle" border="0" /></a>
Last week, I conducted a Squeak Etoys workshop at Kansai University. There were 60 students from media course, conputer science, and education cource. For the workshop, I used a special version of Squeak with numeric color control tiles, customized viewer, and morph sharing tab (Super Parts Bin). Although we had troubles some bugs of etoys, I think workshop itself was succees.
The workshop was 7 hours. First 3 hours are tutorial for basic technique as "Drive A Car" curriculum. Rest 4 hours are for discussion and practice for theme. The theme of the workshop was "Introduce yourself". Some students could make really impressive work even if such short time.
But again, I always think that programming etoys is not easy if you want to complicated project especially for conputer science students. They have complained me Squeak is harder than C++! ;)Takashihttp://www.blogger.com/profile/00275489652316753838noreply@blogger.comtag:blogger.com,1999:blog-8272979.post-1115762024703222722005-05-10T14:53:00.000-07:002005-05-10T14:53:44.710-07:00Palo Alto a week and tweakToday is a day that I have spent at Palo Alto for a week. It is good weather and good temperature. I became fond of bay area as soon as I came here. Now I am sitting front of a desk in HP lab. The laboratory has huge place and a number of numerous scientists from many countries, the accents of discussion through the wall have a exotic taste.
I am starting Tweak in here, this is a brand new programming environment that I am puzzled at first. But I begin to like Tweak especially the structure of visual component. The model for solving dependency and constraint is not complete, but neat. Besides, Tweak's small process model is interesting.
I don't understand much for Tweak yet, so I still finding my goal of Tweak. During contributing some code for bug fix, I am amusing new world new.
My first favorite object is CFieldReference. This behaves as a kind of watcher or proxy object. In Tweak etoys, this object plays interesting role. Making CFieldReference is easy, you would just say;
CObject fieldNamed: #fiedName
And then, this object watches the value of the field described as #fieldName. If you set the CFieldReference as a player of any player like a drop down list, the list points the value continually.
The point what I'm interested in is all fields of any object could be etoy's slot with CFieldReference. In former Squeak etoys world, etoys is in a slight special position. Smalltalk world and etoys world are completely different logic. But in Tweak, all object could have etoys-sh interface.
I know having all slot for all variable is not good idea. The system would becomes too complicated withoug proper information hiding manner. But the possibility of integration between etoys world and source code world excites me.Takashihttp://www.blogger.com/profile/00275489652316753838noreply@blogger.comtag:blogger.com,1999:blog-8272979.post-1112198238504012182005-03-30T07:57:00.000-08:002005-03-30T08:00:38.366-08:00Rendering 3-D objects through dll<a href='http://photos1.blogger.com/img/146/1669/640/tvmlDll.jpg'><img border='0' style='border:1px solid #000000; margin:2px' src='http://photos1.blogger.com/img/146/1669/400/tvmlDll.jpg'></a><br />Rendering 3-D objects through dll <a href='http://www.hello.com/' target='ext'><img src='http://photos1.blogger.com/pbh.gif' alt='Posted by Hello' border='0' style='border:0px;padding:0px;background:transparent;' align='absmiddle'></a>
For a few weeks, I was trying to connect original TVML viewer (written in C) and Croquet through FFI. Once I have written a code for rendering TVML object and playing simple animation in pure Smalltalk, but I took a strategy to make a hybrid system using C and Smalltak because writing all code in Smalltalk would need much time.
Connecting original TVML viwer was not so easy, TVML viwer has a bunch of I/O codes, windows thread codes, and infinity loops. I trimed those issue and finally made a DLL wrapper around TVML. It could render TVML animation in Croquet space.
Although using the DLL has a couple of problems. I can't see the animation through croquet network, an avator can't touch 3-D objects in TVML. These objects are like ghosts in Croquet world, we can see the objects, but these are not in a memory in Croquet.
But it was still fun at least as a demonstration.Takashihttp://www.blogger.com/profile/00275489652316753838noreply@blogger.comtag:blogger.com,1999:blog-8272979.post-1110352845208078272005-03-08T23:20:00.000-08:002005-03-08T23:35:41.753-08:00OBJ importer<a href="http://photos1.blogger.com/img/146/1669/640/stage.jpg"><img style="border: 1px solid rgb(0, 0, 0); margin: 2px;" src="http://photos1.blogger.com/img/146/1669/400/stage.jpg" border="0" /></a>
OBJ importer <a href="http://www.hello.com/" target="ext"><img src="http://photos1.blogger.com/pbh.gif" alt="Posted by Hello" style="border: 0px none ; padding: 0px; background: transparent none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial;" align="middle" border="0" /></a>
Finally, I have finished an OBJ importer with PIC image texture. In the fact, the importer lacks some important features like smoothing and normals handling. But I can get a brief snap shot to find out next goal of TVML. Kidawara-san required me special functions on TVML, kinds of network support and interactive user interface, which is not in original TVML. So I have to pursuit how to implement such feature.
Anyway, today's result is on Squeakmap;
<a href="http://map1.squeakfoundation.org/sm/package/0d9b7a69-b789-4490-8c59-24fa32a67af7">http://map1.squeakfoundation.org/sm/package/0d9b7a69-b789-4490-8c59-24fa32a67af7</a>
(I post the announce to Croquet-list but it didn't delivered yet).Takashihttp://www.blogger.com/profile/00275489652316753838noreply@blogger.comtag:blogger.com,1999:blog-8272979.post-1109901338358840092005-03-03T17:55:00.000-08:002005-03-03T18:16:48.383-08:00Showing TVML Object and OBJ in Croquet<a href='http://photos1.blogger.com/img/146/1669/640/TVMLStage.jpg'><img border='0' style='border:1px solid #000000; margin:2px' src='http://photos1.blogger.com/img/146/1669/400/TVMLStage.jpg'></a><br />TVML Stage <a href='http://www.hello.com/' target='ext'><img src='http://photos1.blogger.com/pbh.gif' alt='Posted by Hello' border='0' style='border:0px;padding:0px;background:transparent;' align='absmiddle'></a>
In TVML, OBJ file format is used for importing 3-D model. It was terrible that there are a lot of incompatible 3-D format in the world. But anyway, for playback TVML contents in Croquet, I have to make OBJ model exporter.
Actually, OBJ format was not complicated. I would say it is relatively straightforward and easier than ASE format (ASE in 3dsmax was ugly), thus parsing the format and building objects were not hard job. But what I remain is texture. In OBJ, PIC file format is used to represent image file. OBJ??? I didn't know such format. In the fact, my picture viewer in windowsXP could not show the PIC image. So today's my task is learning what is PIC and building PIC file importer for Squeak.Takashihttp://www.blogger.com/profile/00275489652316753838noreply@blogger.comtag:blogger.com,1999:blog-8272979.post-1109773531346722842005-03-02T06:25:00.000-08:002005-03-02T07:46:58.976-08:00Hakodate Workshop<a href="http://photos1.blogger.com/img/146/1669/640/DSC00640.jpg"><img style="border: 1px solid rgb(0, 0, 0); margin: 2px;" src="http://photos1.blogger.com/img/146/1669/400/DSC00640.jpg" border="0" /></a>
<span style="">Hakodate Workshop
I and Abe-san conducted Squeak workshop last week in Hakodate Future University. The main part of the workshop was using World-Stethoscope; it is a small device to get external input like luminance, temperature, and voltage. Students made some devices with World-Stethoscope and simple materials like paper cups or balloons.
One student developped a kind of toy that is a computer interface for babies. When a user shaked the device, the luminance sensor reacted its movement, and mon's face became glad in a computer screen.
The goal of the workshop was discussing possibility of user interface. To invent original user interface, each student
exchanged deep ideas of different possibilities of computer devices. That is to say, our workshop was to imagine the feeling of former computer scientists.
Although I regret I couldn't tell how the works by students were exciting, that was good experience for me and Abe-san (this was the first World-Stethoscope workshop for university students).
After the workshop, we have a plan to publish a booklet with the result of the workshop. It is not only for the record of the workshop, it will includes a text for advanced etoy's user.
</span><a href="http://www.hello.com/" target="ext"><img src="http://photos1.blogger.com/pbh.gif" alt="Posted by Hello" style="border: 0px none ; padding: 0px; background: transparent none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial;" align="middle" border="0" /></a>Takashihttp://www.blogger.com/profile/00275489652316753838noreply@blogger.comtag:blogger.com,1999:blog-8272979.post-1107914390321901372005-02-08T17:58:00.000-08:002005-02-08T17:59:50.320-08:00TVMLFinally, I started to make interface between Croquet and TVML. I had a meeting to make sure the role of its implementation with Hayashi-san and Aikawa-san, and they agreed to share current source code written in C. Although I think I should rewrite all aspect of animation in Smalltalk for good compatibility with Croquet, but now I strongly curious how to realize the animation of TVML style. So at first, I am going to make bridge for TVML library.
Actually, the bridge of Croquet-to-TVML was quite easy. TVML player already has its API for other windows application, and I could implement a plugin to send TVML text in Croquet to TVML. But I guess getting animation informations form TVML would be harder because TVML animation engine did not suppose to use without TVML native render (I have to use a render in Croquet not TVML Player).
Takashihttp://www.blogger.com/profile/00275489652316753838noreply@blogger.comtag:blogger.com,1999:blog-8272979.post-1105697599479797672005-01-14T02:05:00.000-08:002005-01-14T02:14:46.403-08:00Two Teapot in One Squeak<img src="http://d.hatena.ne.jp/images/diary/p/propella/2005-01-14.png" align="right" />
I posted a change set at mantis <a href="http://bugs.impara.de/view.php?id=831">http://bugs.impara.de/view.php?id=831</a> for running two Teapot in one image. Sometimes I am asked why ODE doesn't work well through network, but I didn't investigate deeply because it is a pain to set up two PC for debugging network. Also, I tried to run two images in one PC, but it doesn't work well. If one image is running, another would be stop. So I decided to run two croquet in one image.
Takashihttp://www.blogger.com/profile/00275489652316753838noreply@blogger.comtag:blogger.com,1999:blog-8272979.post-1104929574155422062005-01-05T04:51:00.000-08:002005-01-05T04:53:01.133-08:00Super Parts Bin<img src="http://d.hatena.ne.jp/images/diary/p/propella/2005-01-05.png" align="right" />
I made a special parts bin named "Super Parts bin". You can get morphs made by other guys from network. It is named after "Super Swiki", which is a mechanism to share project through network. The reason I made it is because I feel a project is too large to share individual's idea each other. If you could share a morph freely, You can make a collaborative project more easily.
In this image, <a href="http://metatoys.org/tmp/2005-01-05.zip">http://metatoys.org/tmp/2005-01-05.zip</a> "LanguageGame" flap tab in right hand is connected my home server. So you can share any morph to drag-n-drop. The image is based on Japanese, but you can change language to push a button of earth in an orange flap.
Takashihttp://www.blogger.com/profile/00275489652316753838noreply@blogger.comtag:blogger.com,1999:blog-8272979.post-1103854541485960562004-12-23T18:14:00.000-08:002004-12-23T18:16:22.290-08:00Japanese FontI have almost fixed problems related with Japanese font in Squeak 3.8. These are very complicated, but what is good for me is I could be familiar with font mechanism. The main issue around showing font is how characters should be shown in any rectangle beautifully. Before I fixed, Japanese characters were shown roughly and sometimes tearing. This is because Japanese font is shown implicitly when Japanese character is appeared even if a user select Latin font like accuny.
I am interested in Font system because Font in Smalltalk has long history. Abe-san said Smalltalk-80 had StrikeFont class same as Squeak. Also, font is very important as one of the design elements. Personally, I think Squeak should handle commercial fonts more easily. Some squeakers says it is enough to use free fonts. But friends of mime who are artists prefer sophisticated commercial fonts, and I want Squeak attracts such art guys. Especially, Japanese free fonts are much few as there has huge amount of characters.
Other aspect why I tried around font is I want to reduce my work. Now Japanese version of Squeak is a bit different with latest English distribution. So I have to port my application for Japanese Squeak when I develop some tools in English. That was much boring thing (actually, sometimes I show English version Squeak demos even for Japanese people, but my mother couldn't understand it and complain me...). When my work finished, and basic parts of both Japanese and English Squeak become same, what I need is just prepare a translation data.
Takashihttp://www.blogger.com/profile/00275489652316753838noreply@blogger.comtag:blogger.com,1999:blog-8272979.post-1102437404688220472004-12-07T08:34:00.000-08:002004-12-07T08:36:44.690-08:00Textual representation of tile scriptingI couldn't this blog these days because this site was toooo slowly...
I am working a lot about etoys these days. Actually, I did not know about etoys well before I had my own etoys workshop because I felt it's ability was too restricted. But I have found that a number of interesting things are remained in the tile scripting system yet. Surely, etoys lacks fancy features as programming language. But I don't think rich system is better system. So I have tried to small improvement etoys without big change.
One of my challenges is textual representation of tile scripting. As you know, you can see tile script both as tile and text code (Smalltalk expression). But when you modify the text code, the script would be never seen as tile as the script loses the modified information. I think this is a reason why serious Squeak programmer is not interested in etoys. If tile script is made from textual representation. A programmer could write applications with etoys tile script by Smalltalk code (change set, Monticello, or so).
So I have write converter between text and tiles. At first, Smalltalk expression is hard to convert to tiles. And I use S-expression like notation. It works almost well. I am going to make some examples of etoys animation without any drag-n-drop!
Takashihttp://www.blogger.com/profile/00275489652316753838noreply@blogger.comtag:blogger.com,1999:blog-8272979.post-1101344770663386872004-11-24T17:05:00.000-08:002004-11-24T17:06:10.663-08:00ODE AgainNow I am updating ODE bridge for Croquet. Bernd send me great ODE demo few month ago for impara Croquet. But I have let it alone up to now. There were much interesting gadgets in Bernd's demo, so I was trying to adapt it for Jasmine. Actually this was not difficult and I am going to upload it soon.
Takashihttp://www.blogger.com/profile/00275489652316753838noreply@blogger.com