PUM and Sencha ExtJS – Missing Pieces – the calendar model

When working with the JS library ExtJS from Sencha, you may have noticed, that with the Premium version you get support for a calendar widget and model and descriptions how to implement the server side.

I added helper methods to create compatible classes with the Sencha ExtJS calendar model and changed the ExtJS source code generator to generate the correct code for it.

So the user can create supporting classes with one click and had to create CRUD stores for Events and Calendars are usually.

So now the calendars and the events are stored in the Gemstone/S database. Queries can be done with remote filtering or remote gsquery execution.


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

PUM – VA Smalltalk 9/64 bit

Well, porting was done within one hour – feels and smells like VA 8.6.3, but now with 64 bit !

Posted in Smalltalk | Tagged , | Leave a comment

Elections and Gemstone/S again

Last weekend we had general elections in Germany – and most of you may know the results.

Located at the ARD-Hauptstadtstudio for five days we collect all needed results for the main broadcaster ARD and around 15 other tv-studios in various towns in Germany (broadcaster BR, SR, SWR, NDR, RBB, WDR, Deutsche Welle, HR)

Again this was an election with Smalltalk taking part in our presentation of the results – with Gemstone/S as the “backbone” for the Internet presentation systems and the Internet input system. We presented the results for the SWR in Baden-Württemberg and Rheinland-Pfalz on the Internet.

Technically the systems were used as described here and here .


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

PUM – User Changeable calculated attribute

After the introduction of simple calculated attributes I had the need to introduce user changeable calculated attributes – with a default source code defined by the modelling tool – but via API calls the user can change this code with pure Smalltalk (so a compiled block is created and used to compute the result) or reset it back to the default code.

For the client side the output of these attributes look like read-only attributes.

Posted in Smalltalk | Tagged , | Leave a comment

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 , , , , , | 1 Comment