PUM, Topaz – calculated attributes

Due to needs in our application I had to add (for the domain class hierarchy) the possibility to define calculated base attributes and calculated associations.

That means, that the attribute does not held any value (strings, numbers, … or sets of domain objects)- but the values will be calculated with the help of a compiled method block – with only one parameter: the domain object holding the attribute.

This change only matters the Topaz generator – the clients are not changed.

Posted in Smalltalk | Tagged , | Leave a comment

Gemstone/S, PUM and Unity3D

And again some work is done on the C# wrapper.

The latest work on this topic had been done to make it possible to build an Android app by using the Xamarin toolchain.

Due to that requirements the runtime and the generated application library wrapper contains lots of async/wait and Task<T> usages. This works one all newer platforms (Xamarin and .Net>= 4.0).

For one of your products we considered to make a proof of concept to show, how a visualization of the system would look liḱe and there was a wish by one of our employee to use Unity3D for this task.

The first work in Unity3D was to make WebSockets workable – there is a free git project offering this support. The WebSockets were needed to listen to our 0MQ<->WebSocket Relay, which pushes the information of our 0MQ-Infobus to external clients.

The 0MQ-Infobus is feeded by Gemstone/S. The database pushes telegrams on this bus to inform external application about state changes – so the clients do not need to poll the database on a regular base.

After that we wanted Unity3D to talk to our Gemstone/S database directly – by using our C# wrapper.

But when working with Mono the situation changes and Unity3D makes it even more complicated, because it uses its own Mono version somewhere located between official Mono versions.

So we build a new CodeGenerator in PUM to produce “synchronized, simple” .NET code, created a new runtime (working with Unity3D or .NET < 4.0) and put the stuff together.

Noẃ Unity3D can listen to the event bus and requests additional information via the normal API – just to make a better informative visualization.

Posted in Smalltalk | Tagged , , , , | Leave a comment

Gemstone/S Application Example – HbbTV Playout System

The last two weeks we had two elections here in Germany – one in Schleswig-Holstein and last weekend in Nordrhein-Westfalen in Düsseldorf.

Television Tower next to state parliament in Düsseldorf

As mentioned in an earlier posting we already used Gemstone/S as our database during the election for the broadcaster SWR and we played out results and graphics for an internet based application. The model is defined using PUM, source code is created for Topaz, Sencha ExtJS and Python3.

This weekend we did a similar application for the broadcaster WDR (Westdeutscher Rundfunk), but not for their Internet presence, but for an HbbTV hybrid add-on service during their program on sunday and 14 days later (so its still available via their WDR TV channels).

Persons at the broadcaster were able to enter results via an browser based data-enter application – and the results were stored in Gemstone/S and transferred to the system producing the animated TV graphics. Application as usual – API oriented, browser based.

Input Application written in Sencha ExtJS

The structure of the application was pretty similiar to the one of last autumn – main logic is located in the Gemstone/S database, several independent topaz processes are inserting election results, preparing graphical repesentations of the results and even do an automatic publication of the results without interaction.

The system is managed via a browser based UI (written in Sencha ExtJS), communicating via an API with the database. External applications were otherwise written in Python3.

Management Software written in ExtJS

The system was actually running in parallel on two different systems at some hosters – producing the same results independently.

Current HbbTV at the WDR television broadcaster

The end-user application (running on the TV sets) was written in “low-level” Javascript (WITHOUT any larger libraries like jQuery) to make is runnable on even the most slowest TV set available on the market :-)))

Final Results shown in HbbTV

Voters moving from one party to another

Posted in Smalltalk | Tagged , , , , , | Leave a comment

PUM – Overall Application Structure

Sometimes its not clear, where PUM is targeting – a graphic may show this much better. In this graphics one can see the general application structure we have used with PUM and the other languages against Gemstone/S database in several projects so far.

The parts in dark blue are actually in production usage, Android and Java have been tested in small application and the practical tests for iPhone are still missing.

 

Marten

Posted in Smalltalk | Tagged , , , , , , , , , , , , | 2 Comments

PUM – Adding JavaDoc support

With the version today I added initial JavaDoc support in the generated source code.

Posted in Smalltalk | Tagged , , | Leave a comment

PUM – Updating VASmalltalk Generator

When looking around the generators I noticed, that I forgot to made several changes to the VASmalltalk generator (e.g. remove the needs for cookies).

Therefore the runtime had to be changed and I changed the created methods for VA to look them more like the ones I created for the mainstream languages.

 

Posted in Smalltalk | Tagged , | Leave a comment

PUM – Dolphin7 – just for fun

When working on PUM today I started by random Dolphin7 and looked around a bit and then decided to do initial work for a code generator.

Dolphin7 is quite a nice target, because it is Smalltalk and it can produce native Windows application.

The code generator I’ve written today so far creates the whole class structure in a pac-format file. There is a base pac-file holding the base runtime, but that’s it.

The problem with Dolphin7 here is the missing of several supported stuff:

  • json-support, datetime wih timezone

We will see, how difficult this can be …

Posted in Smalltalk | Tagged , , | Leave a comment