Thursday, December 23, 2004
I 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.
Tuesday, December 07, 2004
I 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!
Wednesday, November 24, 2004
Now 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.
Tuesday, November 16, 2004
I am hacking LangageEditor for few days. LanguageEditor and Babel system is one of major feature of new Squeakland image. You can use multiple language in same Squeak. We have to change words of vocabulary for user interface depend on language, the dictionary of Babel is used for it. My goal is to make it easier editing dictionary. Sometimes, a good engineer is not a good writer. So we need a way of collaborating for making dictionary by both user and programmer. Actually current LanguageEditor is not useful because its output file is internal binary format. I think we should able to exchange, make diff, and be under version control. So I decided to make the file as text. Today I could almost finish the task. I use basic file out (chunk) format for dictionary. I'm going to post the fix when I finish the test in Japanese.
Tuesday, November 09, 2004
Now I am writing a paper for C5 conference at next year. My theme is about last workshop and its concept, prospect, and impact of development. At first, I was thinking that I wrote about Croquet, but I couldn't do because the part of what I know about Croquet was too practical. Probably if I am going to use Croquet for actual workshop next year, I can write some article of it. Anyway, I am writing in Japanese. At first I was trying write in English, but I couldn't as my brain was confused. So I decided writing in Japanese first, then translating in English. I don't know sure the way of the writing is better, but the fact is I have not much time.
Sunday, November 07, 2004
Yesterday, we have a conference named "ALAN-K Project Workshop" for discussing Squeak's curriculum with teachers and developers in Kyoto. Actually, we didn't have enough time to discuss, but it was good opportunity to see how to teach in primary school to high school. What I was most interested in were works by a couple of high school students. In instance, they were making about human powered air plain simulation, and ecosystem simulation; in the simulations, a user could alter each parameter to see what was happen. Other surprised thing was the authors of these works were pretty girls, not nerds wearing glasses. I felt envy the teachers!
Saturday, October 30, 2004
Eventually, my workshop in Hakodate was finished. It was much valuable experience for me as it is my first time to have a workshop directed myself. The workshop will be a start point for making decision of which goal I should do with Squeak and Croquet. The aim of the workshop is to make a tool just for fun. The major of the students is design; almost students in there had experienced to make digital contents with Photoshop, Illustrator, or Flash. I told them to make not only contents, but also a tool for making dynamic contents, which includes paint tool, music composer, game constructor. Students can regard personal computer as meta-media through this workshop. This is different experience than just use softare. At last, almost 70% students could make some tool in 7 hours, and understood this concept despite of that no students know about Squeak before. By the way, I have uploaded the results of the workshop. Althogh all projects was in Japanese, but probably you can understand aim of the project. http://yuri.sakura.ne.jp/~propella/hakodate/hakodateProjects.zip
Tuesday, October 26, 2004
Hakodate is a northern city in Japan. In this week, I am going to have a Squeak workshop at Future University Hakodate. In the fact, this is the first experience to have my own workshop. For the workshop I have planned curriculum and to prepared materials. I am just a programmer, not a teacher, but I believe this workshop should be very helpful to find out my next goal in Sqeuak an Croquet. I know students are not satisfied in just Drive A Car project. They are smart enought and need more interesting subject, but they are not computer science students, so I had to develop different kinds of subject. Also I will use World Stethoscope Morph by Abe-san, and my ODECo morph. At first I considered we use Skeleton or Croquet, but in this time, I abandoned such daring material to be simple enough.
Tuesday, October 19, 2004
Considering Next Goal We discussed about 'meta-toys' which is an idea of curriculum in Squeak workshop. Although I have met much technical issue in Squeak, I have not faced conceptual goal including developers, teachers, and students seriously. Now I have my own workshop in school, so it was good opportunity to think in comprehensive ways. 'meta-toys' is a keyword to show what we have to do. I don't want to make Squeak as PowerPoint or Flash. Squeak would be more meta tools. I had analyzed a lot of interesting projects in Squeak, took some aspects to abstract its nature, and discussed about where is a important point of etoys project.
Sunday, October 17, 2004
In these few days, I am porting my work into Jasmine. Although I had to learn new things involved with different idea in Jasmine like 'meta' message, but in general, I feel happy to go Jasmine because developing in Jasmine is very easy as I can use cool debugger of Squeak. Also, most important point is that Jasmine is completely open and we can see current problem of latest image with Mantis bug tracking system http://bugs.impara.de/. Actually, I felt worry about a lot of 'red' rows in Mantis (new bugs). But but tracking system has definitely benefit to see goals clearly.
Wednesday, October 13, 2004
I didn't Croquet yesterday, but I developed a project for the idea of meta with Abe-san for next workshop in Hokkaido. What's meta? It is one of the most important ideas of cs. To show the idea, I made a project that objects dance along with scenario showed as arrow symbols in a play field. In this project, the morphs of arrow symbols are considered as programming commands. The point is I could implement a simple programming language using etoys. According to Abe-san, etoys lacks still minor ability for making meta. In instance, we can get first object as first submorph (as car), but we can not get rest objects (as cdr). If we could use such whole list operation, etoys would get more flexible power.
Tuesday, October 12, 2004
Croquet was released! We have some discussions in squeak-ja mailing list, too. A lot of people are interested in this new version. I am going to introduce this news in Kansai Open Source Conference next week. Anyway, my today's work was operation with keyboard. Now we can control a soldier character along cursor keys. To realize this feature, what I concerned was where should I put event handling. In normal, event handling is in user camera and each tframe object at pointer, but in the game, we need special keyboard operation like space bar to jump. So I put some trick into TUserCamera >> keyStroke: then I added ability for control general keyboard handling into TSpace. Current my work was about TeaTime Croquet, but I am going to port for jasmine asap. After I collect the change sets of the work, I am going to post these codes (especially, not game specific codes) at mantis.
Monday, October 11, 2004
I tried to merge characters animations. Actually, the basic animation importer was not so interesting work, but from now, the work would be fun as I could move characters freely as a game. http://languagegame.no-ip.com/pub/combi-2004-10-11.avi
Saturday, October 09, 2004
I have finished the work of basic animation importer for Chain Reaction. Althogh I need more minor fix, I guess it is enough quality as first step. The main problem of Drone was that it includes scale factor. I had to take care of scale value of parent frame when reading position values in animation. In spite of using global coodinate to show vertex, the positions of animation is shown as local. Besides, it is important that these values are only connected to location and scale, but don't connect rotation.
Friday, October 08, 2004
I am working around to import Drone animation. Although it should be easier than soldier, but in the fact, the work is much harder as it has complex tree structure. In soldier animation, object tree is consist of helper and geometry, besides Drone is built of group. It is no problem just in static object, but I guess there are some issues in dynamic animation. (Actually, I couldn't find out why Drone doesn't work well yet).
Tuesday, October 05, 2004
There was one assumption which led wrong result in 3ds max's ASE Animation viewer. It is that rotation and position could be handled same way. In OpenGL, 4x4 matrix is a uniform method to deal with rotation, thus I could use matrix combination to combine each property. but in ASE, those are completely different aspect. In animation, position is showed as difference from the position at start frame, but rotation is showed as difference from last frame. So I should handle these properties independently.
Saturday, October 02, 2004
I had found out how 3ds max exports rotation animation in ASE file. In spite of translations are described the coordinate from original position, but rotations are described the angle as difference from last frame. I found that during I made a lot of simple examples of animation. Other trick is that frames are interpolated as spline curve, and each delta are slight different. So it's very hard to find out the parameters are delta. Anyway, I found another documentation about ASE file in http://cs.felk.cvut.cz/~sporkaa/doc/3dsnd/thesis.pdf.
Friday, October 01, 2004
As I couldn't understand the meaning of ASE file, I installed trial version of 3DS Max again. Actually I have installed it before, and I had to reinstall Windows. It was a good opportunity to clean up because my hard drive is almost full by junk. Perhaps if I have another chance dealing with the 3dsmax, it would be better to have the license, but now what I need is just to know how is the basic concept of 3dsmax and how the inner structure is organized as ascii file. Anyway, to make very very simple example again, I found my misunderstanding about the representation of mesh translation soon. But difficult point is rotation. Showing rotation is something different against quaternion, or simple combination of axis and angle. This work is like cryptanalysis.
Tuesday, September 28, 2004
I am building an animation class for Croquet. I have implemented similar mechanism for 3DSMax ASE format, but I am rebuild new class because old one was depend on ASE. The new one would be more compact, clean and readable. There is an issue about where should an animation scheduler belong. Defining animation is easy because animation could regard as function for time, but scheduling animation has environment specific problems. I have several option. - In a TFrame : TFrame and Morph has basic animation mechanism named stepping. This is most straightforward and easy option. An object starts heartbeat itself. - In global scheduler : In instance, AbstractSound uses global scheduler in Squeak. This way has a benefit that it is easy to blend two motions. I could make a scheduler in each TeaParty in Croquet. - In the user camera : Probably it is good for performance. When we don't see an animated object, the animation doesn't need to move. And to put scheduler in the camera, the frame rate of animation could be changed dynamically according to machine performance. At first, I will use TFrame to set scheduler.
Monday, September 27, 2004
To implement benchmark, I used #veryDeepCopy to duplicate a mesh object. I didn't sure this message works well in croquet world, but it worked with very small fix. Actually, I just only add TObjectFramework >> veryDeepInner: In general, we have to use deep copy carefully for fear of copying unnecessarily objects. Hence, I should test more. But it was enough to use benchmark scripts.
Saturday, September 25, 2004
Next month, we have Open-source Conference in Osaka. So we Osaka squeakers proposed to have a booth to show current Squeak activity. In last conference at Tokyo, we had lots of audience in Squeak BOF, I expect to meet many people who are interested in Squeak next month. Anyway, today I was making copies of a soldier animation to get benchmark. Our game would handle up to 6 players, and we have to move these characters smoothly. But I got a trouble to copy an animation object. To copy an animation, we need deep copy. But in general, deep copy has some issue, in instance, a geometry root and an animation frame is pointing same object through different path - diamond reference. In Morphic world, we can use veryDeepCopy to duplicate object. But in Croquet world, the message doesn't work. I don't sure I have to implement deep copier in Croquet world. But just the fact is I couldn't my quota today.
Friday, September 24, 2004
Before optimizing 3D animation, I have made small framework for unit test. The framework is to evaluate small croquet code from standard TestRunner in Squeak as unit test. This is just transitional scheme until Croquet's own development environment is finished, but now, it is useful for me. Actually, I had finished this system last month. But it didn't work in latest image because I just use #inWorld:sendTo: to pass a code from Squeak process into croquet world. Sometimes, it didn't work because local TeaParty (Croquet teaParty) has some restriction (joinRestricted) and #inWorld:sendTo: is invoked in this local TeaParty. And I tried to build other TeaParty and evaluate in it each test case. Thus the framework works well. But I have not understood how joinRestricted works yet.
Thursday, September 23, 2004
When I test a program, usually I use a workspace. In stead of move my mouse, I prefer writing small code which works same way as mouse operation. It is because code has repeatability and it is better if we want to do same test again and again. Also, I use my special workspace named Techo that it has multi-panes and is able to save into file easily. But the problem is I can't use workspace in Croquet. Actually, I fixed my private version of workspace to work in Croquet context several months ago. But last improvement of Croquet have made my workspace crash. I guess the reason is for some changes of TeaTime. TeaTime is an interesting feature in Croquet, but I have not got it completely yet. Anyway, the problem would be good opportunity to understand detail of TeaTime. After fixing the problem, I will try to improve the performance of Croquet.
Wednesday, September 22, 2004
Skeleton is one of my recent works which allows you to make declarative programing with spreads sheets like user interface. I have not touched for several months but it need more improvement for practical use. I made some plans for Skeleton. - Making smaller the goal. When I start the project, I want to do a number of things. But apparently, it is bad to do many things same times. What I need would be small declarative engine and supporting to write self descriptive rules, not whole scripting system. - Remove dependency with Connectors. The main reason of using Connectors was making funny animation in etoys. But for the aim, ODECo is better way. Skeleton should be more independent module to collaborate other project like Croquet. - Abandon original scheduling. Skeleton has an original scheduling mechanism for drawing beautiful graph to avoid randomness of step list. But sometimes it occurs confusing problems. - Discard original window. Skeleton has different UI against Squeak standard system windows. I like this design but it is not so useful. I guess it is better to use standard system window to show spread sheet.
Tuesday, September 21, 2004
I have developed for animation characters, but to tell the truth, my code have not worked in latest Croquet images. Although I had written codes on older images because I prefer stable image as possible, I feel I have to follow current update. So I have worked to merge my code into newest image today. Actually, this was not so easy. Most difficult part is #croquetTwin message which is added last month. The message works like #clone, but sometimes it occurs strange error. I noticed the problem is brought by drop event. When we send a message with any event into croquet world, we had to remove the reference of hand morph (probably any morph). Another reason of difficulty of the problem is that the debugger doesn't work well in the version. I spent all the day to fix the problem. But what I needed was to modify only one line!
Sunday, September 19, 2004
I have tried to hack if we could use a textual reference of a Player in a workspace as substitute for a Morph. It is useful when we introduce Smaltalk language from etoy script editor. But I failed for some reason. Actually we could use a reference name of Player in Japanese, but couldn't in English. That's a bit tricky but the reason is player's reference name is capitalized and it is recogonized as a global variables before parse by the workspace. Japanese has no case sensitive, so when workspace read unknown variable, it is handled by bindingOf: mechanism, but not in English. I gave up the task today. -- The goal is achieved to set Dot (default player) into doItContext. I don't sure the hack is right, but it seems to work well. I posted the changeset to Mantis at http://bugs.impara.de/ that is cool system.
The most interesting issue in Squeak workshop is how we introduce the idea of meta-media. Meta-media is one of the characters of Squeak. We can make a meta poject which aims at make other projcet. Abe-san have made such etoy projcets like a project for making music, a project for paint editor, and tile scripter made from etoys itself. We have to develop a curriculum to bring meta concept for university student.
Saturday, September 18, 2004
I have the first meeting about next schedule with Abe-san tonight. Actually, I don't like such meeting but I know I am too lazy without particular deadline. Also we have discussed next image of Japanese Squeak. He said current LanguageEditor is not useful when people translate other words all at once. I don't have exactly idea but that seems an interesting issue.
Goal 1: Moving all characters
- - Drone doesn't work now because probably it has other hierarchical structure.
- - Positions of weapon and hip are wrong.
- - Follow newest image (current changeset worked two month before image).
- - Optimization. Now Each frame and each mesh move independently.
- - Animation class it is not depend on ASE format.
- - A number of animation should belong to one mesh.
- - Keyboard sensor.
- - Put cubes along to designed data.
- - Use ODE to control character.
Friday, September 17, 2004
I learned about history of karuta today. Karuta is a kind of playing card whose root is from tarot in medieval times. I think we will use karuta as material for Squeak workshop next month. The aim of the workshop is "Art and Computer". So my idea is by connecting old media (karuta) and new media (Squeak), we can make new story in computer.
Thursday, September 16, 2004
Wednesday, September 15, 2004
Some people help me to improve ODECo.
- sumim-san's spring demo http://squab.no-ip.com:8080/collab/odespring
- Bernd's new function of ODE and 3-D demo.
I think ODE is truly useful tool for Squeak. And I am glad to know people are interested in dynamics simulation on Squeak.