Monday, July 14, 2008

Cairo support under SqueakGtk

Cairo is a 2D graphics library with support for multiple output devices. Currently supported output targets include the X Window System, Quartz, Win32, image buffers, PostScript, PDF, and SVG file output. Experimental backends include OpenGL (through glitz), XCB, BeOS, OS/2, and DirectFB.

for more informations go to the cairo website : http://cairographics.org/

The support of Cairo under squeakGtk is not complete but most of the functions are supported, it lacks the support of the transformations functions, ...

May be it will be possible to use cairo for the morphs ?


SqueakGtk status

Here are some news of the SqueakGtk project :

I've extended the Gtk support with new widgets :
  • GtkAboutDialog (added some fields)
  • GtkFontSelectionDialog
  • GtkAccelLabel
  • GtkLinkButton
  • GtkScaleButton
  • GtkVolumeButton
  • WebKit
  • ...
I've corrected a bug with the memory management, it seems that Gtk doesn't like
g_object_unref when there is a parent widget. The support of Gtk
is more stable but there are others problems in the events handling
this is an active waiting so it uses a lot of cpu times, an other problem
is when the user save the image a "Gtk" object in Squeak only contains
a pointer in a C structure and I need to save and restore this structure.

I'm working on the Omnibrowser support and in the improvement of the
new tools :p

Some basic tools :

Squeakzilla a new browser :p

Wednesday, July 9, 2008

Safarà Status

A first prototype of Safarà is ready at last.

Currently it supports basic ascii text editing, that can seem not so much.

Actually I am really happy for the work done as I think (and I hope) I met several goals:
  1. extensibility in terms of features: you can add features (commands gestures syntaxes) to Safarà at runtime, without interfering or having to interact with other layers;
  2. portability over implementations: the model does not know anything about the UI as they are completely decoupled and communication between them occurs by using announcements. Thus, you can write also a non-morphic UI for example. Just make your UI objects subscribe to the right announce and write a bridge to translate the GUI-dependent events to the Safarà events;
  3. Classes and methods are well categorized, documented and tested.
So, what are the next steps?

For the Morphic UI: Do not use TextMorph as base class but a custom morph

For the model: Integrate into Safarà some code wrote by Lukas for syntax-aware commands

You can find the latest snapshot here. There is also a developer mailing list, you can subscribe to. As Safarà partecipate to the ESUG 2008 awards you can find additional documentation about the project goals and design here.

For the most curious, this is a snapshot

Week 6 of GSOC - FreeCAD/Croquet

1) What did you do in the past week?
-Created handles to interactively draw objects.
-Handles allows extending and rotating the drawing.
-Putting in markers and selecting them so that Joints can be created and linked to them.
-2D drawing detection to move drawings and to select it

2) What do plan to do this week?
-Will continue work to create Joints that will reference 2 markers for simulation purpose
-Look into how the camera view can be adjusted for better viewing angles. Any suggestions on this is much appreciated

3) What can possibly stand in the way of your work?
3D transformation is quite complex and i'll need some time to understand it better in order to create better functions.

Here's a video showing some of the work I did:


Tuesday, July 8, 2008

Status

As promised, some news of the project!

So far, the bot framework is on the good way... I tried as much as possible to have an easy public interface so that it should be easy for anyone to develop with the framework. The base is maturing and shouldn't change much in the future.
I've developed some basic functionalities: an administration interface, a help system, a greeting (a bot has to be polite) and a simple infobot that can memorise definitions.

At the moment, the IRC protocol is handled by the existing IRC client in Squeak. Unfortunately it relies on Morphic ( in short; the gui ). I've abstracted it so that the bot isnow completely indenpendant of it. It is planned to develop a clean IRC library which wont rely on any gui.

So what next ?
  • Continue the real world tests (yesterday was the first attempt on freenode :),
  • Polish the admin and help,
  • Add logging functionalities
  • Develop a web interface (with Aida or Seaside)
  • Develop a clean IRC library
  • Write docs

Stay tuned!
(if you see squeakbot on freenode, introduce yourself to him :)

Saturday, July 5, 2008

Squeak - Impressions

Wow.

The more i code, the more i fall in love with Squeak and Smalltalk in general. I've properly started my gsoc project after my last exam (20 June) and i'm already addicted to the different Smalltalk tools. Iknew quite well the classic System Browser but was a little bit intimidated by the other ones.



Little by little, i've started to code in the debugger (i can imagine non smalltalkers shocked while reading this but it _really_ is an eyes opening experience) and guess what...I like it! I've learned to appreciate the refactoring, senders, hierarchy, variables and versions broswers. Most of the modern IDEs have those functionalities but Smalltalk had those for years and they are so well integrated in the environment. All those tools encourage you to explore the image. It feels like reading wikipedia: you start to look at an article about something and link after link you end up reading about the Pyongyang metro...

The only drawback is that you are quickly overwhelmed with windows popping up everywhere... especially on a 12 inches screen :)

Another common problem for beginners is the syndrom of 'Where the hell do i have to start?'. Interesting opinions can be found in the comments of a Ramon Leon's post. Now, there's a fantastic open book that everyone willing to learn Squeak/Smalltalk should read: 'Squeak By Example'.

More news about the project itself very soon!

Monday, June 30, 2008

Week 5 of GSOC - FreeCAD/Croquet

1) What did you do in the past week?
- I have done detection of planes and points on the plane. I can now select a Cube, click a point on it and add another solid on that point.
- Corrected all problems of rendering and picking objects. Had problems rendering and picking objects earlier because of the different coordinate systems used by FreeCAD and Croquet. It took me a while to figure everything out but its all fixed now.
-Completed a window UI to place a solid precisely on a specified point.

2) What do plan to do this week?
-Create more UI windows to manipulate solids
-Enable markers to be referenced by Joints for animation/simulation purposes

3) What can possibly stand in the way of your work?
Nothing much except that my internet connection is no set up yet due to very very slow services by my ISP. Doing online research and replying mails in a cyber cafe nearby at the moment.

Tuesday, June 24, 2008

Week 4 of GSOC - FreeCAD/Croquet

1) What did you do in the past week?
-Coded in picking methods for cubes and cylinders, not 100% working but I'm able to move things relative to their plane
-Combined all solids under one main class & trying to make rendering more efficient

2) What do plan to do this week?
-Continue to implement the face/plane detection for polygons and ellipses.
-Fix some rendering bugs
-Other minor fixes for better rendering efficiency

3) What can possibly stand in the way of your work?
-No internet connection at my new place yet (still waiting for my ISP)

Week 3 of GSOC - FreeCAD/Croquet

1) What did you do in the past week?
Played with FreeCAD and learning the tutorials so that I can replicate most of the interactive stuff on replicate. Still trying to implement the face/plane detection.

2) What do plan to do this week?
Face/plane detection for the 3D solids

3) What can possibly stand in the way of your work?
I just moved to a new place, trying to settle down ASAP.

Week 2 of GSOC - FreeCAD/Croquet

1) What did you do in the past week?
-Cleaning up some code and solved an initialization problem of the Croquet world.
-Also released a working version of FreeCAD/Croquet using Monticello.

2) What do plan to do this week?
-Implement face detection of 3D solids starting with the cube first.

3) What can possibly stand in the way of your work?
-Might not have enough time because I'm moving to another place this week.
-Croquet keeps crashing on me in debug mode due to asynchronous processes thus slowing down progress.

Thursday, June 5, 2008

FreeCAD/Croquet first release

Guys,

I have released the first version of FreeCAD/Croquet (Project that I'm working on).

You can get it here which is the version loaded into Cobalt. After downloading it, launch Cobalt and drag KayefFreeCAD out from the parts bin and it should load.

If you already have a Croquet image then just use the Monticello package. Please follow the instructions in this link on how to install the package.

Once you get that running, follow this link for tutorials on how to use it. Currently, you can create 3D solids and also load sample assemblies. Watch some of these videos too if you have the time.

Week 1 of GSOC

1) What did you do in the past week?
I have already implemented the tree view menu before this but it is not interactive yet. I have just added in a feature that enables the user to select an item on the tree by clicking on it. I have also added a window that controls the simulation of the assembly with options to start,pause and stop and in the same time display the frame rate and a few other info that will be added in time. I have also uploaded my work on Croquet Source but its not quite ready to be installed yet as I still need to configure it to be easily installed by normal users. Should be done in 1 or 2 days.

2) What do plan to do this week?
I will implement the picking and selecting of objects with the mouse pointer and moving them in the Croquet world. I currently have done a bit of work on this but its very buggy with inconsistent results. I will need to fix this and also come up with a good way to move things in a 3D environment.

3) What can possibly stand in the way of your work?
Specifying the TBoundSphere for an object in Croquet seems to be a bit of a problem because it works sometimes but other times it does not. Also, it causes the rendering of the objects to go wrong (occasionally disappearing in different viewing angles). I should study more on this stuff to understand it fully or else the whole click and drag feature will be flawed. Anyone care to shed some light on this?

Thursday, May 29, 2008

OpenNARS port to Squeak using Seaside

Hi, I'm Cédrick Béler, a french PhD student and I've been selected for GSoC of squeak. The selected application consists in porting OpenNARS (Non-Axiomatic Reasoning Systems) to Squeak using Seaside for the GUI. My Mentors are Klaus D.Witzel and Pei Wang (creator/developer of NARS).

NARS is before all a reasoning system but a non-axiomatic one compared to usual semi-axiomatic ones we find in AI [1]. It attempts to uniformly explain and reproduce many cognitive facilities, including reasoning, learning, planning, etc, so as to provide a unified theory, model, and system for AI as a whole. The ultimate goal of NARS research is to build a thinking machine. What makes this system different from conventional reasoning systems is its ability to learn from its experience and to work with insufficient knowledge and resources. NARS theory exists. A book has been published recently (Rigid flexibility).

Since 2008, NARS is developed as open source software . A prototype exists in java for the core of the system but there is still a lot to do until the aim of having a thinking machine is reached. A port is underway in Python and we propose to start a squeak port because we think a dynamic and flexible environment and language as Smalltalk/Squeak could be very appropriate here.

Right now, I'm finishing writing my PhD dissertation so I will only spend moderate time on the project in June (delivery date is by the end of June). Once done, I'll be nearly full-time on the project. When coding, I'll be as much as possible on IRC (#squeak) on freenode under the nickname Cdrick. Feel free to contact me if you have any question in relation to this project. I will start the port with the stable core of the prototype (see here for more information)

Cédrick Béler (cdrick65 for my google account...)

[1] NARS (Non-Axiomatic Reasoning System) is a concrete example of non-axiomatic system. Here is a short definition of axiomatic, semi-axiomatic and non-axiomatic (quoted from Pei Wang publications)
  1. pure-axiomatic system: In all aspects, the system has sufficient knowledge and resources with respect to the problems to be solved.
    • Pure-axiomatic systems are studied in mathematics, and is not directly related to AI
  2. semi-axiomatic system: In some, but not all, aspects, the system has sufficient knowledge and resources with respect to the problems to be solved.
    • Most of the previous AI work in the inference framework belong to the category of semi-axiomatic system, which attempt to make partial extension or revision of mathematical logic, while keep the other parts.
  3. non-axiomatic system: In all aspects, the system has insufficient knowledge and resources with respect to the problems to be solved.
    • For AI, what is really needed are non-axiomatic systems, which do not assume the sufficiency of knowledge and resources in any aspect of the system.
Basically in NARS, solving the same problem several times has not to give the same solution... If you're intrigued by this theory, don't hesitate having a look at the available documentation :)

Monday, May 26, 2008

Introduction to the Safará project: a Source code editor for Squeak

Hi, I am Luigi Panzeri, one of the five student selected to work for the Squeak project. I have Lukas Renggli as a mentor.

The goal of the Safarà project is to develop an extensible code editor that can improve the DSL experience on Squeak, and at the same time can provide the same features, that come up with modern editors like Eclipse, Emacs and TextMate.

Actually, It aims to provide the following features:

* Highly configurable and customizable using Smalltalk code or a
graphical customization interface.

* Highly extensible in term of features and syntaxes supported.

* Easily embeddable as a widget in other applications (e.g. mail
reader, applications using DSLs, etc.).

* Well integrated with the tools present on a traditional Squeak
development image.

* Support for collaborative editing.

Sunday, May 25, 2008

FreeCAD: 3D CAD with Motion Simulation Port to Croquet

Hi,
My name is Phua Khai Fong from Malaysia. I'm in my final year pursuing my electronics engineering degree in Multimedia University. I will be working on Croquet for GSOC and the goal of my project is to create a tool for in-world content creation. Currently, I am able to draw and extrude 3D solids which consists of cubes, cylinders, ellipses and polygons. I will be working with my mentor Dr. A.S. Koh and the Croquet community to add more controls to the content creation tool that I am working on which is also based on FreeCAD (for more info on FreeCAD, visit www.ar-cad.com). If you are interested to see the initial stuff, I do have a few videos online here .

Regards,


Phua Khai Fong
kayef8 [at] yahoo [dot] com

Introduction to the IRC Bot Framework project

Hi all,

I'm François Stephany, one of the five Squeak gsoc students.

The goal of this project is to build a framework for developing IRC bots. At the moment, the squeak related irc channels rely on non smalltalk bots (who said Lisp?) to provide the needed services. As smalltalkers, we like to eat our own dog food and have special needs. A bot written in smalltalk could have some smalltalkish functionalities (explore image, monticello tracking,...) that would be a bit tricky to provide in other languages.
Squeak already has a client: IRCe, it will be used (and refactored if needed) as a starting point.

The basic functionalities:
- channel logging
- channel administration
- pastebot
- storage bot/infobot

If you have any suggestion/wish for the bot, don't hesitate to tell !

See you all on IRC (#squeak)
[nick: fstephany on freenode -- Thanks Randal :]

Monday, May 5, 2008

Introduction to Squeak GTK project

Here is a short description of the Squeak GTK.

This project aims to :

- provide a full support of the GTK+ library included GDK, GLib, Cairo.
- provide a full support of the WebKit library.
- Create a MVC framework
- Create a basic toolset (inspector, reflective management of widget, efficient class browser, transcript, ...) if time permitted

You can find the project at : SqueakGTK

There is a SqueakVM with the callback patch and the SqueakGTK plugin generated. But you can find all the files to patch the squeakVM and build the plugin by hand ;)

Gwenael Casaccio

Sunday, March 30, 2008

Google Summer of Code 2008

Hi all, and welcome back to the Summer of Squeak blog!

For the second year, the Squeak project has been accepted into the Google Summer of Code program.

This year we decided to reopen the blog a little earlier, while students applications are still open. So, if you're interested in proposing a project to Squeak, you're still in time!

If you need more info, just head to the Summer of Squeak webpage!


The Squeak Project Mentors

Saturday, September 22, 2007

OWRTA #14

Ordered and unordered lists are complete. The rest is links, image and placeholder. And of course syntax switcher and parser code merging.

Friday, September 7, 2007

OWRTA #13 report, the lucky one

I've made a new line break processing. It works well for paragraphs and horizontal rule right now! There is no any lost/new line break after "edit-save-edit" cycle. I will implement this for other tags tomorrow, gn.