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.
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 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.
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.
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.