May 31, 2020, 07:53:54 pm

The shoutbox is currently out of service. Join us on Discord instead.
You can help CodeWalrus stay online by donating here.

WARNING: DO NOT UPGRADE your TI-83 Premium CE or TI-84 Plus CE to OS 5.5.1 and higher. It removes all compatibility with most games and removes ASM/C programming! DOWNGRADING IS IMPOSSIBLE. BE WARNED!

Likewise, do NOT update your TI-Nspire CX past OS 4.5.0, else using Ndless and ASM/C programs will be impossible.

Clouttery - the smart, cross-platform battery monitor

Started by gbl08ma, February 22, 2016, 07:58:42 pm

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.


March 03, 2016, 09:16:31 am #16 Last Edit: March 03, 2016, 09:30:39 am by aeTIos
Quick, sue them!
On another note, I've been using Clouttery for a few weeks now and sadly, 'cause I don't have multiple battery powered devices, I haven't really found it very useful :/ I will keep it installed though, mainly to give feedback on the UI and UX (Which imo have been improving as of lately). One thing I would like to see is to not give a battery low notification on the device that is running low. Would that be possible?
ceci n'est pas une signature


March 03, 2016, 11:06:44 am #17 Last Edit: July 28, 2016, 09:34:47 pm by gbl08ma
You can disable notifications about a device on just one device or on all the devices.

To disable notifications on just one device, open the device details screen of the client you're using (the one with the graph) and look for the "Mute on this device" option (Android, look under the top-right menu), or on Windows untick the "Show notifications for this device on this computer" checkbox at the bottom.
This means notifications for the device in question still get created; you just won't see them on that particular client.

To disable notifications about a device for all the devices, edit the settings of the device and untick the notifications option. You can also log in to the web console, go into "Settings" -> "Notifications", and disable notifications as desired.

I realize this is a bit confusing and not very versatile, so I'm thinking of better notification filtering mechanisms and a way to present them to the user that is not overwhelming.

In other news, Clouttery is now available for everyone - we entered public beta stage! It also has a new domain name, and website contents have been updated:

Both clients are now available for everyone to download. And the best part is that the unlimited version of Clouttery is still free for everyone who signs up - but only while in beta!

Information on how to sign up and install clients is here:

DJ Omnimaga

THis is awesome to hear. I really need to install this at one point. I got caught up with life stuff, projects so I kinda had an hard time catching up on this. :)


April 12, 2016, 09:44:56 pm #19 Last Edit: April 12, 2016, 10:07:42 pm by gbl08ma
I just realized it was time for a status update, even though this project hasn't moved as of late - I'm really busy with university exams and projects, and any free time I have tends to go towards procrastination (such as this post).

There has been no progress on the Windows and Android clients, nor on the web interface, nor on the backend. However, I am slowly, slowly developing a Linux client, written in Go, which uses GTK for the UI. It already mostly works, but it's too barebones to be released. I plan on making a command line/daemon version of it, too, so that it can be used on headless systems or systems where GTK is not available, for some reason.

Golang easily cross-compiles to many platforms/architectures, and GTK is available on lots of them. What this means is that this client should run on OS X with not so many changes to the code. In fact, it even runs on Windows already after commenting a dozen lines of code (to make the battery a "dummy", since "/sys/class/power" doesn't really exist in Windows outside of the new Linux compatibility layer). But for Windows, there's already the .NET client, which is a much lighter dependency (as in, the user most likely has it installed already, and it's much easier to install) than the whole GTK. So really, this "Linux client" is, in fact, a client for Unix-like operating systems: internally, the project's called... clouttery-nix.

I considered not uploading screenshots, as it's still so unfinished, but here they are anyway:

The UI look depends very much on the GTK theme, and the one I have installed really makes things like vertical tab controls really confusing. I have tested it with the default GTK3 theme, on Windows, and it looks much better. The settings screen is already rendered with GTK but it's completely empty (no logic/interactivity behind it yet).

Finally, I have been thinking of ways to make Clouttery more useful for people with just one device. I think that a good way to achieve that goal is to turn Clouttery more into a "virtual battery expert" and not just a battery level synchronizer. It would analyse users' battery usage patterns and tell them about stuff like potentially damaging habits like repeatedly doing full discharges of Li-Ion batteries.

Such monitoring features would also distinguish Clouttery from the battery level warnings some companies are putting into their products (for example: with Windows insider builds, Cortana already warns, on the desktop, that the battery level of a Windows 10 phone is low). Apps that do notification mirroring also make Clouttery, as it is now, kind of redundant. Ideally, we want to avoid a situation where on the computer, the user gets two notifications for the same battery event, one coming from the client on that computer and the other coming from their phone through e.g. Pushbullet.

And this takes us to another topic: notification control must be easier to use while keeping, or even increasing, its granularity. The notification filtering system, right now, is a completely horrible in terms of user experience. In the backend, it's not very flexible, either. I still have to investigate what is the best solution for this in terms of how it's implemented technically, and in terms of user interface.

So many things to do, so little time...

DJ Omnimaga

I didn't have much time to follow updates to this lately, so I kinda missed out if anything happened between my last post and this update, but I'm glad this is still alive. :)


Well, it will always be "alive" for as long as the server keeps running... which is not too hard to accomplish, since the software itself is very stable, not very resource-hungry and very easy to move to another server if needed, too. (statically-compiled stuff has its benefits and this is one of them, just drop the binary and run). The only problem/my only regret with the server is not having made it horizontally scalable since the beginning, and now it's really hard to decouple it from the current database system. At the same time, if I ever decouple it, it will mean the code will need to become more organized (with better separation of concerns) and that's a good thing, right?

If for "alive" you mean "actively developed", then yes, it could be more active... and there are times when I think if it's worth continuing its development, since it progresses so slowly and others are already catching up to its capabilities... at this point, it's unlikely I'll be able to charge anyone for this service, but since I have some fun developing it, it goes on... should I get tired of it, I can just open-source it so others can take care of it, if they wish.

DJ Omnimaga

April 12, 2016, 11:05:12 pm #22 Last Edit: April 12, 2016, 11:07:04 pm by DJ Omnimaga
My only concern about "as long as the server is running" is not really money-wise, but rather related to loss of interest or lack of free time. See what happened to Revsoft (another TI calculator forum): The one who had hosting access vanished into thin air and couldn't even be reached by phone. Same for the guy who owned the domain name. Then one day, Revsoft went poof and they lost everything. In order to sell this you will have to guarantee that your service will be running in long terms, even if you get married, get kids and move on in real life.


April 12, 2016, 11:36:12 pm #23 Last Edit: April 12, 2016, 11:39:29 pm by gbl08ma
Fortunately, history has shown that I'm quite good at maintaining useless/unprofitable services (see my shortener, or Goshify, or even the iCalToPCE converter for my Prizm software that goes months without being used). At the beginning it was hard - low-quality free web hosting didn't really help, and things only got more serious once I got my own servers. Fortunately, at that time I also had way more free time than I have now. Fixing servers that go down has gone from something more or less fun to being a chore (which is normal), especially when it happens, say, in the middle of class. That's why I'm always looking into better redundancy systems and automation, and I'm all over horizontal scaling, etc.
It's an almost dangerous obsession with uptime :) but obviously that doesn't mean I'll be available forever to "babysit" things and fix problems when they appear out of nowhere (plus support requests, dealing with er... less intelligent users, etc.).

Things would be easier if I was working in a team, and so for years I've been trying to get people to work together with me. It's been difficult, though, and it's not hard to see why. Since there's little to no money to be made, for one to enjoy working with the team one must be interested in the final product and have some fun making and maintaining it. However, few people are interested in using, let along developing, the services and software I maintain. I believe this is partially due to not being able to find The Right People(tm).

Furthermore, since the administration of the servers and websites is not as decentralized as it could be (which, as can be seen by the Revsoft example, is a really bad sign), on these groups I always end up doing all the work, and others lose interest (I'm not complaining, as obviously I can't and definitely don't want to force people to work for free; I'm just stating a consequence). Also, until recently we had no good communication channel, so people just lost contact over time. Slack is really helping with this, though.

Right now, Segvault ( has three members, including me. Only recently, as dotAccount was deployed, it became possible for other team members to sign in to some administration control panels - not that they cared, as they are as busy with life as I am. Of course, at some point you must find a balance between giving all the admins full power (and then have the problem of rogue admins, as some communities well know) and having the power all for yourself. dotAccount helps with this, as it has support for different permission levels, but there's stuff dotAccount can't help with, namely everything that involves signing in to dashboards of external services we use. Some stuff, like server administration, is still only available to me, maybe for good reason. Things like support requests and abuse reports still only go to my email addresses, too.

Oh well, let's hope our projects bring in enough money to cover the expenses and that other team members will either get more involved or bring their own projects along, or perhaps more team members entirely. On the other hand, this "passivity" of the group is not a bad thing either, since I really don't have enough time to participate right now. Perhaps all I want is to have a bit more of teamwork, and not actually more work :) /rant

DJ Omnimaga

Well, that's good to hear. Too many services go down without any warning because the author either forgets that it exists or other things. On CodeWalrus we try to ensure that all staff who has server access has the passwords and access to everything, just in case. As for dealing with less intelligent users, I just ignore them personally. Of course, by not intelligent I assume you mean people who refuse to search before asking questions and expect you to do the entire work for them, though.

On the other hand, I found out that team work is not always for the best. in the TI community, for example, the completion ratio for team projects is much lower than solo projects. And yeah in the case of the TI community we're a niche community so finding people is much harder. If someone is making a game and needs sprites, we sometimes have to redirect them to actual spriting websites.

As for money+Clouttery, what I feel is that if at one point, money doesn't come through enough, then this probably means that the userbase is low enough to keep bandwidth costs at the minimum, so you could simply downgrade to cheaper hosting plans (on CodeWalrus we pay $12 a month, including the weekly backup service, for 30 GB of disk space, 1.2 TB of monthly transfer, a single core processor and 1 GB of RAM.


A long time has passed and I finally had some time to work on this again. Here's a screenshot of the Linux client after today's progress:

It looks way better with the default GTK theme, but that one I'm using goes better with my KDE theme, with the downside that some stuff like unchecked checkboxes looks pretty strange.

I had to implement the graphs with a WebKit control because I was struggling to find a graph/chart library that would a) work with GTK, b) work with Golang, c) Deal well with many datapoints while still looking nice and d) allow zooming and panning (so static image renderers were out of the question). So I ended up using Dygraphs which I'm already using on the website.

Not shown in this screenshot, but the settings tab is now fully working and most settings are respected. Not shown either is also the tray icon, which is customizable (like the Windows one), but IMO looks much better, since on Linux the tray icons can be bigger and as such it's possible to have antialiased text even on standard DPIs. Like on Windows the text color of the tray icon is customizable.

DJ Omnimaga

Does the Win version require installing the GTK dependencies and one specific version in particular?

Glad this is still worked on :)


No, the Windows version is written in C# and only requires the .NET Framework 4.5. It is also stable and ready for install, see

DJ Omnimaga

Ah ok good. I had issues with GTK runtime installing in the past (eg one software required one specific version, while the other required another, so I could only install one of the two softwares at a time)


Because not a single person understood the notification settings (local vs. global toggle), I decided to change the UI for them. Before:

After, the notification settings have moved completely to the Device settings window, and now instead of two checkboxes there are three options to choose from:

I will change the UI of the Android client to be more like this, soon.

Powered by EzPortal