
Electronic "emitter of information" at a minimum cost
When our continuous integration on Jenkins reliably worked and the processes of releasing product releases were established, the thought arose: why not adopt the best practices and put in your office your electronic information radiator (information radiator): a large beautiful screen that automatically displays what is happening with project processes?

A good thought, but it costs money and time, that is, something that never exists. Especially now. Especially for small companies without budgets for all kinds of supporting purposes. Everything had to be done in “five cents” and in “five minutes” - and this is how I [partially] dealt with it.
Of course, then, to increase labor productivity.
First of all, to facilitate tracking the “health” of Jenkins continuous build. The fact that the problem with fixing the assembly / unit tests is solved the easier, the sooner they begin to solve it, we have long been convinced from our own experience. While all the details of what you just did are fresh in your memory, it’s easier to repair the “broken” as a result of your actions. And the large “traffic light” hanging in the room, switched from a green signal to a red one, notifies of a “collapsed” assembly of all at once, this is the fastest and most noticeable way of warning. This has long been discussed in the unit testing and continuous integration manuals, and this is an undeniable truth.
Secondly, the information screen should be part of a set of measures to establish communications in the project. In an overgrown project, there are many parallel tasks, and a person who is completely immersed in one isolated task often often gets information about what the developers are working on in the next room and remotely from other cities (and we have both). All the details are explained at the seminars and in the newsletters, but even before they see the keywords flickering in the tasks of the control system for change requests and comments on the commits in the version control system, it is undoubtedly useful to all project participants.
Further, it improves the quality of work. The realization that the comment on the commit to the version control system that you are doing now, will be visible to everyone on the big screen in a second, involuntarily forces you to write these few words more carefully.
Well and last but not least - it looks cool!
So, with the minimum cost and time of m budget there was no way to invest in it to develop something unique, and even draw designs. I needed something almost ready. Searches led me to the Dashing Ruby framework , which was designed specifically for the construction of bulletin boards on large screens.
Architecturally, the idea is very simple: a "live", automatically updated Web page is formed, a full-screen web browser opens on the monitor - and you're done. Dashing had the following advantages:
In April 2016, the main developers of Dashing announced that they would no longer develop it, but, I believe, this is not a problem for the popular OpenSource project.
Until now, I have never worked with Ruby. However, it turned out to be easy to figure out how to install and configure everything. A little extra gestures are needed to install everything on Windows (with Linux, as far as I understand, everything is elementary),
Place on widgets I decided the following information:

For the basis of the widget for Jenkins, I took one of the ready-made in the rich library of widgets for Dashing. Since I wanted the displayed on the monitor to be as similar as possible to what a person sees on the Jenkins page, I improved the widget by adding to it the icons with the "weather conditions" of the project used in Jenkins itself. In this case, the background color of the “tile” corresponds to the status of the last assembly: green — the last assembly was successful, gray — the assembly is in progress, red — the assembly failed. Modifying widgets for Dashing turned out to be quite easy and pleasant, and I decided to go further.
To display information about what is relevant in the Trac system and in the distribution group, we needed a widget that displays the RSS feed. It had to be cloned and further developed for Trac and for the Google group due to local features of the RSS format. It was possible to “decorate” the Trac-events ribbon with the help of the Trac-ov icons of open and closed tickets.
Most of all I had to tinker with the comment feed for SVN commits. The Subversion server does not have a built-in RSS service, there were no ready-made solutions in the library of Dashing widgets either. Having studied the question, I realized that the only suitable method is to run the svn log command and analyze the data it outputs using regular expressions. At this point, I’ve already figured out enough in Ruby and creating widgets to make a script that combines comments on different repositories into one list and then sort them in chronological order.
In the end, it remained to experiment with the layout of widgets on the screen with the addition of hours and - on top - a widget that displays the username, time and nature of the last action recorded by the information panel.
The content was ready, and it was time to acquire and install a large screen.
What to choose as a monitor? I immediately realized that, on the one hand, there is such a thing as “professional monitors with a wide diagonal”. Their cost amounts to hundreds of thousands of rubles, and for us it was an absolutely unacceptable option on the budget. On the other hand, modern household televisions are equipped with HDMI-inputs, have high resolution and are much cheaper. So I decided to take a household TV.
As it later turned out, everything, of course, is not so simple and a household TV is poorly suited for such a task (what else will be discussed). But this does not justify the enormous difference in price, so if you decide on something like that, you should choose it.
Based on the size of our room and the installation location, I decided that a diagonal of 46 is suitable. '' My choice initially fell on the Samsung brand, but at the indicated hour the supplier informed me that they no longer have the Samsung model ordered and prepaid by bank transfer and they can offer a similar, and even more “advanced” LG model. So in our office turned out to be a huge flat LG TV.
NB: The accountant needs to additionally be informed that the TV was purchased as a monitor, that is, a means of production, so as not to buy it from the company's profit and thereby reduce the tax.
I must say that I am not good at gadgets like “TV”, because I don’t have my own TV in the house. It turns out that they all now want to be similar in functionality to smartphones or tablets. The LG we got has a “WebOS system”, a WiFi network connection and the ability to install applications and drive texts from the remote using T9.
Amid all this abundance of possibilities, I was interested in a WiFi connection (no wire needed) and a web browser. This made it possible to place the application server in a virtual machine in the data center, open the browser on the TV, dial the server address using the remote control - and voila, the information panel shone on the screen, it's done!
Unfortunately, I rejoiced too early. Exactly 10 minutes later, the picture went blank and the TV started showing a “screensaver,” disappearing only if you press any key on the remote control. “Not a problem,” I decided, and began looking in the menu for the option to turn off the screensaver. The option was not found. I turned to Google and instead of a ready-made recipe, I came across a page on LG official forums, where several poor guys like me talked about the fact that they bought their magnificent big TV for constant broadcasting of a web page on its screen, and complained about the impossibility disable screensaver. LG did not respond at its official forum. Apparently, not without reason: LG knows something like this about the matrices of its TVs, if they display a static image on them for hours, and does not want to spend money on their warranty replacement.
So the idea of using the browser built into the TV turned out to be a failure and it was necessary to invent something else. It only remained to use the HDMI input, which means that a video source should be placed next to the TV, that is, some kind of computer. Project implementation costs increased.
The video source should have been simple, cheap and reliable, without any special requirements for system performance. I settled on the MSI WindBox DC-111 nettop, which turned up at a bargain price. I must say that this small machine did not fail us: working around the clock, it has reliably performed (and continues to fulfill) its task for almost a year. And during corporate parties, we start scrolling photos and videos on it.

The TV continued to "show character." With the help of timers, it was set up to automatically turn on at 9:00 and turn off at 19:00 on weekdays. But for some reason, three hours after the automatic morning start-up (i.e., exactly at noon), it goes out if you do not press any buttons on the remote control. If after that you turn it on manually, it works without shutting down as much as you need (naturally, the entire settings menu has been carefully studied, all the "energy-saving" options are disabled). This continues to this day.
Our “emitter" has been working for almost a year, and based on the results of this story I can draw the following conclusions:
I do not give here the source codes of my system, because I understand that in each particular case the requirements for filling the dashboard are very individual (but I’m ready to share it with everyone). Examples and turnkey solutions on the Dashing site are plentiful.
A good thought, but it costs money and time, that is, something that never exists. Especially now. Especially for small companies without budgets for all kinds of supporting purposes. Everything had to be done in “five cents” and in “five minutes” - and this is how I [partially] dealt with it.
Why is it necessary
Of course, then, to increase labor productivity.
First of all, to facilitate tracking the “health” of Jenkins continuous build. The fact that the problem with fixing the assembly / unit tests is solved the easier, the sooner they begin to solve it, we have long been convinced from our own experience. While all the details of what you just did are fresh in your memory, it’s easier to repair the “broken” as a result of your actions. And the large “traffic light” hanging in the room, switched from a green signal to a red one, notifies of a “collapsed” assembly of all at once, this is the fastest and most noticeable way of warning. This has long been discussed in the unit testing and continuous integration manuals, and this is an undeniable truth.
Secondly, the information screen should be part of a set of measures to establish communications in the project. In an overgrown project, there are many parallel tasks, and a person who is completely immersed in one isolated task often often gets information about what the developers are working on in the next room and remotely from other cities (and we have both). All the details are explained at the seminars and in the newsletters, but even before they see the keywords flickering in the tasks of the control system for change requests and comments on the commits in the version control system, it is undoubtedly useful to all project participants.
Further, it improves the quality of work. The realization that the comment on the commit to the version control system that you are doing now, will be visible to everyone on the big screen in a second, involuntarily forces you to write these few words more carefully.
Well and last but not least - it looks cool!
Software part
So, with the minimum cost and time of m budget there was no way to invest in it to develop something unique, and even draw designs. I needed something almost ready. Searches led me to the Dashing Ruby framework , which was designed specifically for the construction of bulletin boards on large screens.
Architecturally, the idea is very simple: a "live", automatically updated Web page is formed, a full-screen web browser opens on the monitor - and you're done. Dashing had the following advantages:
- Ready-made example with a layout optimized for 1080p TV,
- the ability to use the mouse to arrange widgets (aka widgets aka tiles with information) on the screen,
- many standard widgets
- even more additional widgets ,
- ease with which you can develop your own widgets (you can read about Dashing technology on Habré ).
In April 2016, the main developers of Dashing announced that they would no longer develop it, but, I believe, this is not a problem for the popular OpenSource project.
Until now, I have never worked with Ruby. However, it turned out to be easy to figure out how to install and configure everything. A little extra gestures are needed to install everything on Windows (with Linux, as far as I understand, everything is elementary),
Here is the list of actions that worked for me:
- Install node.js.
- Install Ruby from rubyinstaller.org .
- Install RubyDevKit from there.
ruby dk.rb init ruby dk.rb review ruby dk.rb install
gem update system ::если не сделать этого, могут возникнуть проблемы с установкой других пакетов gem install htmlentities gem install bundle gem install nokogiri gem install dashing
Place on widgets I decided the following information:
- Jenkins build status informers
- Recent posts to the Google distribution group
- comments on fresh commits in the SVN repository with source codes,
- information on changing ticket statuses in Trac.

For the basis of the widget for Jenkins, I took one of the ready-made in the rich library of widgets for Dashing. Since I wanted the displayed on the monitor to be as similar as possible to what a person sees on the Jenkins page, I improved the widget by adding to it the icons with the "weather conditions" of the project used in Jenkins itself. In this case, the background color of the “tile” corresponds to the status of the last assembly: green — the last assembly was successful, gray — the assembly is in progress, red — the assembly failed. Modifying widgets for Dashing turned out to be quite easy and pleasant, and I decided to go further.
To display information about what is relevant in the Trac system and in the distribution group, we needed a widget that displays the RSS feed. It had to be cloned and further developed for Trac and for the Google group due to local features of the RSS format. It was possible to “decorate” the Trac-events ribbon with the help of the Trac-ov icons of open and closed tickets.
Most of all I had to tinker with the comment feed for SVN commits. The Subversion server does not have a built-in RSS service, there were no ready-made solutions in the library of Dashing widgets either. Having studied the question, I realized that the only suitable method is to run the svn log command and analyze the data it outputs using regular expressions. At this point, I’ve already figured out enough in Ruby and creating widgets to make a script that combines comments on different repositories into one list and then sort them in chronological order.
In the end, it remained to experiment with the layout of widgets on the screen with the addition of hours and - on top - a widget that displays the username, time and nature of the last action recorded by the information panel.
The content was ready, and it was time to acquire and install a large screen.
Hardware part
What to choose as a monitor? I immediately realized that, on the one hand, there is such a thing as “professional monitors with a wide diagonal”. Their cost amounts to hundreds of thousands of rubles, and for us it was an absolutely unacceptable option on the budget. On the other hand, modern household televisions are equipped with HDMI-inputs, have high resolution and are much cheaper. So I decided to take a household TV.
As it later turned out, everything, of course, is not so simple and a household TV is poorly suited for such a task (what else will be discussed). But this does not justify the enormous difference in price, so if you decide on something like that, you should choose it.
Based on the size of our room and the installation location, I decided that a diagonal of 46 is suitable. '' My choice initially fell on the Samsung brand, but at the indicated hour the supplier informed me that they no longer have the Samsung model ordered and prepaid by bank transfer and they can offer a similar, and even more “advanced” LG model. So in our office turned out to be a huge flat LG TV.
NB: The accountant needs to additionally be informed that the TV was purchased as a monitor, that is, a means of production, so as not to buy it from the company's profit and thereby reduce the tax.
I must say that I am not good at gadgets like “TV”, because I don’t have my own TV in the house. It turns out that they all now want to be similar in functionality to smartphones or tablets. The LG we got has a “WebOS system”, a WiFi network connection and the ability to install applications and drive texts from the remote using T9.
Amid all this abundance of possibilities, I was interested in a WiFi connection (no wire needed) and a web browser. This made it possible to place the application server in a virtual machine in the data center, open the browser on the TV, dial the server address using the remote control - and voila, the information panel shone on the screen, it's done!
Unfortunately, I rejoiced too early. Exactly 10 minutes later, the picture went blank and the TV started showing a “screensaver,” disappearing only if you press any key on the remote control. “Not a problem,” I decided, and began looking in the menu for the option to turn off the screensaver. The option was not found. I turned to Google and instead of a ready-made recipe, I came across a page on LG official forums, where several poor guys like me talked about the fact that they bought their magnificent big TV for constant broadcasting of a web page on its screen, and complained about the impossibility disable screensaver. LG did not respond at its official forum. Apparently, not without reason: LG knows something like this about the matrices of its TVs, if they display a static image on them for hours, and does not want to spend money on their warranty replacement.
So the idea of using the browser built into the TV turned out to be a failure and it was necessary to invent something else. It only remained to use the HDMI input, which means that a video source should be placed next to the TV, that is, some kind of computer. Project implementation costs increased.
The video source should have been simple, cheap and reliable, without any special requirements for system performance. I settled on the MSI WindBox DC-111 nettop, which turned up at a bargain price. I must say that this small machine did not fail us: working around the clock, it has reliably performed (and continues to fulfill) its task for almost a year. And during corporate parties, we start scrolling photos and videos on it.
The TV continued to "show character." With the help of timers, it was set up to automatically turn on at 9:00 and turn off at 19:00 on weekdays. But for some reason, three hours after the automatic morning start-up (i.e., exactly at noon), it goes out if you do not press any buttons on the remote control. If after that you turn it on manually, it works without shutting down as much as you need (naturally, the entire settings menu has been carefully studied, all the "energy-saving" options are disabled). This continues to this day.
Conclusion
Our “emitter" has been working for almost a year, and based on the results of this story I can draw the following conclusions:
- The task requires some ingenuity, but nothing impossible for professional programmers.
- I highly recommend the Dashing framework as a system for quickly and conveniently assembling dashboards.
- The idea of using a household TV as an infopanel has pitfalls: our LG TV is struggling to work in this mode. Although nothing happened to his matrix during the year of work.
I do not give here the source codes of my system, because I understand that in each particular case the requirements for filling the dashboard are very individual (but I’m ready to share it with everyone). Examples and turnkey solutions on the Dashing site are plentiful.