If you are ever interested in working on some mediasync-related codebases hit me up! We hire devs to do freelance contracts fairly often.
I didn’t get the chance to mention them in the blog post, but yes we checked out the price tags on the commercial solutions :) It’s crazy! I’ve always wondered how much of the cost is hardware vs software… and I would imagine professional digital signage is also designed for reliability longevity and all that.
Your main “cheap” alternative to a BrightSign is a Raspberry Pi, which is definitely cheaper, but has its own host of issues to deal with.
Is there some incentive to not just bake a small arm computer into each display?
Having a separate box is just good separation of concerns - you can hook it up to whatever kind of projector you like (one projector might cost as much as $100k!), or you might need to use an analog display device (eg a CRT monitor) which certainly won’t have any USB/SD compatibility, in which case you will need some sort of hardware to convert signals appropriately. The separation of concerns just gives you much more flexibility.
Additionally, as mentioned before, you can network the boxes, which lets you do things like creating multi-channel synchronized video art installations.
Most BrightSigns also have GPIO pins on them, so I’ve even done things where I’ve synchronized kinetic art to the video playback.
You can write entire custom applications for your brightsigns (or plugins to the BrightAuthor configuration engine) - it’s just its own self contained platform, so there are a lot of benefits to having it be agnostic to the display.
The lack of a regular HDMI output is mildly annoying but not really a problem. Audio configuration is sometimes problematic, usually not…
If a client wants to use their own Pis, getting them provisioned with our software isn’t always the easiest if the customer is techno-phobic (though that’s partly on us - RPi usage is relatively infrequent for our customers so we haven’t put the time/energy into docs and into baking an image etc).
I love Pi’s, but they just that extra bit more finicky than BrightSigns which are hyper optimized for our use case and prevalent in our customers’ equipment rooms already.
Yeah. The Pi3 -> Pi4/5 jump was quite a massive change in how things work. I've been writing my own playback engine for 10 years now and that one was quite challenging. Precise playback start is something my software supports: You control everything in Lua and can, for example, preload a video and then start it based on either internal logic or based on an external trigger. Up to the Pi3, my software also supports dynamically adjusting the HDMI clock, so the vsyncs of multiple displays are synchronized. Customers have been using that for almost 10 years for video wall playback.
If you go with the hosted version of the software, provisioning is as simple as extracting a single 60MB zip file to an empty SD card and placing that into the Pi. If needed you can even use the API to preconfigure that ZIP file to include settings like WiFi.
It would be great to chat some time!
I’ll shoot you an email.
Where I previously worked, we had a server room with over a hundred laptops, many late intel MacBook pros much better than the computers coworkers in India were using, but we just could not get them there from the US. The best we could do is ask coworkers traveling to visit the India team if they were willing to carry an additional laptop through customs. But a work laptop, personal laptop, and now a second "personal" laptop, even just three devices, would sometimes cause them a headache. If the logistics were easier, I am sure more of what you are proposing would happen.
However, if your laptop meets these criteria, you can forgo paying duties:
- it is used or opened with signs of wear or tear,
- it has an older invoice (3+ years) showing purchase outside India,
- it has repair or warranty documents from previous use abroad.
I would not have tried to sync video though. Instead I'd have made time based animations and use the network the synchronize the clocks.
you can see an example here: https://www.youtube.com/watch?v=64TcBiqmVko
It's 8 machines running Chrome. The only thing synchronized are the settings and the time.
They machines do not have to be in a grid either. I was inspired by the Boston Science Museum's virtual aquarium
> Unfortunately, these Chromebooks could not reliably keep track of time within milliseconds of each other, so this method didn't work for us.
[1]: https://networklessons.com/ip-services/introduction-to-preci...
It looked to me like the fleet did consistently fall behind, which seems like thoughtful design - syncing would always cause them to skip ahead and never rewind time
Thoughtful, but I think it isn’t necessary with ‘modern' NTP algorithms. They lose time by slowing down a clock derived from their hardware clock for a while, not by moving the hardware time back (https://serverfault.com/a/94691, https://community.hpe.com/t5/operating-system-hp-ux/ntp-atom...)
If anything, I'd consider "milliseconds per day" to be extremely good. Regular crystal oscillators have an error of 20 PPM or so, which means a worst-case drift of ~2 seconds per day.
For that period my PC had 19 displays, 17 of them over VNC and it was glorious. I could either do something on all of them, or dedicate each for a different purpose/program (music, htop, calendar, clock, ssh sessions)
Though dealing with all the hardware was quite annoying - some throttled, some had connectivity issues, others batteries would not hold charge and so on.
>This means that the slowest computers hold back the fastest computers […]
It works so well because you’ve optimized the system’s design with respect to its bottleneck. Check out the theory of constraints :)
We needed to do something similar one time with 5 large touchscreen tvs that were arranged as a table, where each side needed to be a separate touchscreen application with them all playing a synchronized video in the background but users could interact with things flowing from one end to the other and could send objects from their other apps in any direction to other apps, like users sending things they found to the person on the other side of the table.
We ended up with a trashcan mac pro (thats about all we could find in budget that could drive all the screens at the same time) with apps that were synchronized using redis (I wrote that part). It worked really well, though I didnt get to see the finished product before I left that company. But we always really wanted to have separate computers that were synchronized. We just couldnt get that to be reliable enough - it worked for a while but then various things would throw it out of sync, meaning we would have to restart the applications periodically which wouldnt work.
Something I have always wished we had, since the very early days of PCs was the ability to network devices together in such a way that they could share their resources and collaborate more. Imagine being able to take advantage of all of the computers in an office to do a task like a supercomputer. Of course thats a very hard problem, applications and OSs would need to be designed for it and we would need new algorithms (look how long it took us just to take advantage of multiple processors in the same machine on the same board), but there were some projects out there like seti@home and folding@home that did it somewhat, but I always hoped it would be something that the computers themselves would support.
DietPi, OpenWrt, and OpenBalena have autoinstall options as well that allow you to select specific packages and install on minimal bare metal. I'd be curious if there are other non-desktop options out there..
There is a video series from Mikes Electric Stuff from 11 (!) years ago, which is fantastic.
https://justinmiller.io/projects/catchthewave/
The machines are rugged (the spec I use is "able to be dropped on concrete from waist high and to have a full soda dumped in the keyboard") and once running Linux, fast and light. And I got them for $50 a piece!
It wouldn't surprise me if, with the worldwide rise of smartphones, children in the developing world don't want computers.
Also, much of the developing world has plenty of buyers of new computers, and undoubtedly a significant aftermarket for the resulting used computers (just like in the developed world), so they probably don't need our donated old computers nearly as much
India is an economically powerful country that has nuclear weapons, a robust manufacturing sector (including computing technology), and a space program. They are building a cross country freeway network and their major cities have metro and transit systems that are more advanced than those in most major American cities.
India is not comparable to less developed countries in sub-Saharan Africa, and in fact India's corporations outsource a lot of production to those countries for their extremely low-cost labor, just as the West does with East Asia.
That only 34% of its schools have internet facilities and 50% don't have functional computers is the result of India's massive wealth and social inequality and it's large disparity in standard of living.
This is the result of the policy priorities of Indian politicians and voters, not something that will be fixed by donating used laptops from the West.
If anything, the West seems to be on a trajectory toward developing a huge disparity in the standard of living, like India.
What videos did you end up playing on this after your testing was complete? Do you have any recordings to share of this in action?
I think it was using a wide master screen that the terminals connected to via vnc, displaying different parts of the master screen. Only three or four screens wide, though, and not optimized for user interaction. But a live app nonetheless.
[0] https://hackaday.com/2015/05/02/excruciating-quest-turns-chr...