Pharo @ Beta Nine


Beta Nine is a software engineering company from Hasselt, Belgium. Founded in 1996, our main activity is advanced software development and consultancy in object, inter/intranet and Java technology.

Since a couple of years we became a product company. We build, operate and commercialise the T3 Platform, a vehicle track & trace and fleet management SaaS solution, sold internationally through a number of partners.

Today, there are about 10.000 paying subscriptions to the platform, accessed by hundreds of customers and users via a number of web applications and services — 24/7/365.

Technology

Ultimately, what counts for the — paying — customer is that a product solves a problem. The combination of effectiveness, reliabiliy, quality, features, service and price defines a successful commercial product.

The customer does not care what technology is used to build a product. That is a good thing, because it allows the developers to choose those technologies that help them to deliver a good product.

Since 2010, Pharo is an important part of our technology stack.

Pharo’s pure dynamic object oriented language and immersive live environment focused on simplicity and feedback makes it ideal for both development and deployment of web applications and web services.


Here are a number of success stories of Pharo at Beta Nine.

T3 Easy REST Back End

T3 Easy is the entry level variant of the main product that we offer. It is a web application with the client part completely written in JavaScript, loaded as a single web page. The front end communicates directly with a REST back end written in Pharo.

Zinc HTTP Components with the Zinc-REST and NeoJSON frameworks are used to offer a robust, secure standard REST API for the JavaScript client web app to use. The application is deployed on a headless Linux server using 4 stateless images load balanced by Apache. T3 Easy has been part of our commercial portfolio since 2011.


T3 Protocol Proxies

The T3 Platform supports a variety of GPRS/GPS hardware devices installed in vehicles. Although T3 has is own native communication protocol, many devices use their own protocol. The protocol proxies allow for devices with foreign protocols to connect to the platform.

Developing and deploying low level binary protocols over UDP and TCP using a high level interactive live environment is very efficient and infinitely more pleasant than any of the classic approaches. The different proxies are deployed in a single image on a headless Linux server. The image is serving about one thousand connections and hundreds of thousands of messages a day with an uptime of several weeks. Pharo based protocol proxies have been in production use since 2012.


T3 Mobile
Web Application

The main interface to T3 is a desktop class web application. To more easily access a subset of that functionality via mobile devices, smartphones and tablets, a specific T3 Mobile web application was built from scratch.

T3 Mobile is a responsive mobile first web application written completely using the excellent Seaside/Bootstrap framework in Pharo. It is using Zinc HTTP Components as the server adaptor for Seaside and as the client to talk to the REST back end. It is deployed as 2 stateful images behind Nginx, which does static resource serving, sticky session proxying and HTTPS termination. Memcached is used to handle some shared session info. T3 Mobile is in production use since April 2014.


T3 Data Mining

Running a commercial SaaS product at a non-trivial scale requires lots of housekeeping and bookkeeping. Correctly invoicing complex and changing usage of a software platform is a challenge. This can be seen as a data mining problem.

T3 exposes its functionality as a REST API that can easily be accessed using Zinc HTTP Components’ client and NeoJSON. We modelled part of the domain, but leave a large part as just Dictionaries and Arrays. Scripting, calculating usage and generating reports is much easier and fun in Pharo. Since 2010, every single monthly invoice for T3 was based on numbers computed in Pharo.


T3 Product Development

Evolving a commercial product and responding to a wide variety of customer requests often requires quickly prototyping and deploying small extension applications.

Given a codebase that already supports the applications above and effectively models the domain, Pharo is an ideal environment for explorative product development and has been used succesfully for this purpose many times over.


Supporting Pharo

We understand the value proposition of the open source and community supported platform that Pharo is: it contains many man years of effort by some of the best software developers out there.

That is why we give back: first and foremost by developing and maintaining a number of open source libraries (Zinc HTTP Components, Zinc-WebSockets, Zinc-SSO, Zinc-REST, Zinc-AWS, Zodiac TLS/SSL Streams, NeoJSON, NeoCSV, STON, ZTimestamp and Stamp), but also by being a Pharo Consortium and Pharo Association member and by serving on the Pharo Board.