Join us on Discord!
You can help CodeWalrus stay online by donating here.

Clouttery - the smart, cross-platform battery monitor

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

Previous topic - Next topic

0 Members and 2 Guests are viewing this topic.

gbl08ma

Hello everyone again. I figured it was time for an update, even though this is not exactly a "happy" update, at least as far as Clouttery is concerned. This is a long post, bring it to bed so you can fall asleep to it if you wish, but trust me, it's worth reading. I hope you can learn a thing or two about managing your side projects, from reading about my mistakes.

Last school year was the last year of my undergrad course (and I'm starting a second cycle course in a couple weeks) and this required some more effort, so I had less time for side projects. As often happens when one works on something for an extended period of time, I too gradually lost interest in this project.

To make things more... interesting, in mid-March I launched a small website that was meant to be kind of a practical joke about the unreliability of the Lisbon subway (for those who haven't yet figured it out, I'm Portuguese). You'll be able to understand what it is about by checking out its repo on GitHub.
I started that project mostly to have something different to work on that was not Clouttery, and the original plan was for it to be something I'd build in a few weeks, publish and then forget, for it to be yet-another-small-thing in my portfolio. But to my surprise, after minimal "marketing" on the SkyscraperCity Portuguese community, that has a section dedicated to railways and subways, my website received a lot more attention than I was expecting, especially for something so simple and tongue-in-cheek.

I then understood there was a real interest in a service that would let people work-around the problems in the Lisbon subway, while at the same time denouncing the problems with the service (for example, by collecting independent statistics). Long story short, a small community assembled around this project, which ended up evolving into an Android app called UnderLX that's even published on Google Play. And there's still a lot of work to do for it to become the product I envisioned.
This obviously took most of my summer.
Yes, it's true that, unlike Clouttery (for which I had even written a complete billing system from scratch!), I'll never be able to monetize UnderLX effectively. However, it is way more satisfying to work on, at least until I get saturated of it too. With Clouttery, it often took a while to realize what it was about, and let's be honest: the final reaction of many people was just "meh". However, with UnderLX, people tend to pay a bit more attention, and those who understand the whole potential of the project usually become much more involved in it. "Unfortunately" for me, the technical side of it is more complex than Clouttery.
It also has an "advantage" to my eyes: both the client (Android app) and the server are open-source from the first day. I regret not going this route with Clouttery; now I have lots of closed-source code which I can't easily show to anyone because, well, it's in private repos. I'll go back to this point, later.

Finally, to add to the school work, the gradual loss of interest, this happy accident that was UnderLX, there's a fourth factor in all this. Because of multiple reasons including the astronomical rise of the price of Bitcoin, it made economical sense to fulfill a long-time desire of mine: to build a desktop, so I could have a powerful machine, more powerful than my six-years-old laptop. Picking parts and putting it together was very enjoyable, and now I have a proper workstation like I had been dreaming of for the past couple years. If you are interested I might even post a thread about it here. I wasn't much into PC gaming before (in part, because the hardware didn't really allow for it), but... you see... to sum things up, many hours were spent chilling to some great triple-A titles (thanks Steam summer sales!...). ;D

That's all really nice, but I thought this topic was about Clouttery?
Work on Clouttery gradually slowed down through the last months of 2016, subject to how busy I was with school, and pretty much completely halted in March this year, as I got more and more tired of working on it, so I decided to do that "small" subway thing. It also didn't help that I was going through a complex phase with Clouttery, more specifically regarding the Windows and Linux clients.


  • I couldn't get the Linux client to work right, despite trying to develop it from scratch multiple times using different languages and technologies.
    Spoiler
    story of clouttery for nix

    1. python + tkinter
    2. go + libui
    3. go + gotk3 (gtk3 bindings)
    4. Mono + gtksharp (for gtk3)
    5. Python + gtk3
    6. go + gotk3 (gtk3 bindings)
    [close]
    No matter what I tried, there were always major roadblocks to getting it to the point I wanted. I did not want to write it in C or C++; I hate Python but decided to try using it anyway - didn't end well; UI framework bindings for Golang are apparently all terrible, or don't have a suitable license. Mono would have been a viable choice, but the gtksharp bindings were tricky to get to work, they apparently had to be recompiled for each GTK version (meaning I couldn't simply distribute a single binary), and the bindings for GTK3 aren't/weren't exactly ready for prime-time. Ugh, I don't even know what all the problems were anymore. I do remember that I just wanted to write code, but problems with libraries and bindings and whatever were always getting in the way.
  • The UI of the Windows client suffers from major lag and other problems, so I decided to switch from WinForms, which is no longer supported, to the supported and way more modern and flexible alternative: WPF. But this was taking a lot of time, certain things were much harder to get to work than I expected, it didn't help that I only had time to work on it like one hour at a time (school work, etc.), and I lost more and more interest.

For you to get an idea of how inactive this project has been, these are the dates of the latest commits to Clouttery repos:

  • Server: 2017-07-10 (and this was only to fix a bug with notification filtering; previous "real" work on it had been on the 23rd of March)
  • Windows client: 2017-03-26
  • Android client: 2016-12-29
  • Chrome client: 2016-09-08
  • Linux client: 2017-03-09
Earlier, I mentioned I regret not open-sourcing Clouttery from the beginning. I decided to work on it privately, because it was supposed to become a commercial service, and I feared that if I made it possible for people to host their own Clouttery servers and recompile the clients to talk to it, then nobody would pay for the service. This is obviously a stupid way of thinking, especially when the project in question is a personal project of a student that doesn't have much time to work on it, and likely would never be able to get it to a commercially-viable state. If the service was worth it, I guess most people would happily pay for it, just to not have the hassle to figure out how to make the server and clients work for themselves; this is especially true since the target audience wasn't exactly software developers nor sysadmins, i.e. it was people who wouldn't have a clue how to do that nor would bother even if they were given clear and easy instructions.

Right now I have 30K lines of code, possibly more, that's closed-source, but for no good reason. To aggravate things, Clouttery shows more of my abilities in software development and engineering than any of my open source projects, because it contains code in more languages, for more platforms, than any other of my projects; it includes web design, API design, use of cryptography, etc. It is not the most beautiful code (for example, the UnderLX Android app has much cleaner and organized code than the Clouttery client, and even then it's not exactly stellar), but it works, and definitely shows what I'm capable of.

This whole situation is even more ridiculous, because right now there's very little to no code in Clouttery that's "novel" to the point of requiring intellectual property protection. :banghead: At this point, Clouttery is extremely dumb, as I never got to work on the "intelligence" that would involve machine learning, pattern matching and the like. And in the end, if I wanted to make my super-awesome-and-courageous battery level prediction and damage identifying algorithms secret, I could always have added them as a closed source module while keeping the "infrastructure" open source.

Finally, I always told people that if I were to stop working on Clouttery, I would release its source code. I don't know what you think, but if I half-close my eyes and look from far away... yeah... like that... yep, I definitely stopped working on it. :-|

Then why don't you open source Clouttery?

I definitely want to open source Clouttery, so I can show its code to more people, and so that others may eventually try to pick up on the project. I intend to keep running the official Clouttery server - if for no one else, for me, as my family finds Clouttery useful. I think I would be a little sad if someone took the project and simply changed its name and started running their own "official" service, available to the masses and possibly profiting from it, so I'll see what kind of licensing restrictions I can add to prevent that. Without the help of a lawyer, it's a bit hard to add clauses to existing software licenses or write new ones from scratch; even with legal help, it's easy to get to a controversial result - for example, Facebook has that famous problem with the "patents" file on their open source projects, like React.

...so why didn't you do it already?
Because ideally, I'd like to publish the source code with the complete commit history. The problem is that, in the past, secrets (API keys and the like) have been committed to the repos. If I remember correctly, the latest server code no longer has that problem - keys are read from a separate, uncommitted file and no longer stored in the source code, but going back in history the secrets are still there. Some of these secrets are hard to revoke and replace, and I'll need to go on an individual basis to see what can be done about them. Furthermore, the clients also contain secrets in their repos, but this is just one secret per client that's used to authenticate the client before the server, and since it's relatively easy to get these secrets from the binaries anyway, I might just go and make them public anyway - their only purpose is to stop people from using the official server with unofficial clients, but if the whole thing is going to be open source, that doesn't make much sense. These secrets are not involved in securing the pairings between clients and user accounts, so in terms of user account security, there's no problem with publishing them.

I also need to write a bit of documentation explaining essential things about each repo, and ideally also explaining how to run the server, what needs to be in the database, etc. Or I could not care about any of that, and just have people figure it out by themselves - at that point, I make it hard for people to contribute, but at least people can already look at the code, which is much better than the current situation.

As you can imagine, all this takes time and effort, and I've been busy with all those things I mentioned in the first section. But with classes starting very soon, I'd like to get this going ASAP, or it's not going to be done for some more months.

Did I "give up" on Clouttery too soon?
Is it a good idea to open source it, even if in the distant future I decide to turn it into a proper commercial service?
Do you agree it would have been better if it were open source from the beginning?
What license do you think would be most adequate? - don't forget the server and each client can have different licenses.
Would you be interested in submitting pull requests for this project, perhaps even taking over one of the sub-projects or the whole thing?
Share your thoughts.
  • Calculators owned: Prizm CG-20

Dream of Omnimaga

I cannot help but I must say that Clouttery has been quite handy so far for me. I hope that the server remains online
  • Calculators owned: TI-82 Advanced Edition Python TI-84+ TI-84+CSE TI-84+CE TI-84+CEP TI-86 TI-89T cfx-9940GT fx-7400G+ fx 1.0+ fx-9750G+ fx-9860G fx-CG10 HP 49g+ HP 39g+ HP 39gs (bricked) HP 39gII HP Prime G1 HP Prime G2 Sharp EL-9600C
  • Consoles, mobile devices and vintage computers owned: Huawei P30 Lite, Moto G 5G, Nintendo 64 (broken), Playstation, Wii U

gbl08ma

Shutting down the service is very much out of the equation, as it is not really that demanding to run and I need the servers for other projects anyway (like UnderLX).

With this said, I've been lucky that the increase in price of Bitcoin has been sufficient to allow me to keep paying for servers and domains, as I have no means of income. The advertising in tny.im really doesn't pay out much if at all, it pays at most for 10% of the price of running my "online empire".
  • Calculators owned: Prizm CG-20

123outerme

Clouttery has been extremely helpful to me, as I hope I've made clear. I love the app, and think it's an awesome idea that I'm surprised no big utilities developer has ever caught on to. I love adding various apps to my phone like this and IFTTT to make things a lot easier for me to manage; in this digital age, half the fun of programming is making a shortcut that you can use later. Luckily for me, I don't have to figure out networking, servers, or anything like that, and get to just enjoy the hard labor of someone else. I get great mileage off of your app and I'm glad you're gonna keep it running, at least for the near future.

I think that if you're looking to put something on a resume or an application, this would be great. It shows your ability to work on the backend side of projects, as well as the front-end. You get to show that you know what it is to create, develop, and maintain an idea that people all around can enjoy. I'd love to see some of the code that you put behind it, if\/when you release the source, even if I wouldn't be able to understand most of it. I'm also glad that you found another project that people seem to like as well. Having feedback to an idea is always my best motivator to get something done, and I'm sure you like to know if people are enjoying what you make. I think you've done good work on this project, and if you're not feeling like you need to continue updating it, by all means, pursue what you enjoy. You'll only write better code, with your heart and soul in it, doing something you like. Good luck to you in the future, and I'll be waiting for what comes next.
  • Calculators owned: TI-84+CSE, TI-nspire Clickpad, TI-84+SE

Dream of Omnimaga

Quote from: gbl08ma on September 02, 2017, 02:46:02 PM
Shutting down the service is very much out of the equation, as it is not really that demanding to run and I need the servers for other projects anyway (like UnderLX).

With this said, I've been lucky that the increase in price of Bitcoin has been sufficient to allow me to keep paying for servers and domains, as I have no means of income. The advertising in tny.im really doesn't pay out much if at all, it pays at most for 10% of the price of running my "online empire".
Wait, you still have no income? D: That sucks. Anyway I'm glad that Clouttery will remain in operation
  • Calculators owned: TI-82 Advanced Edition Python TI-84+ TI-84+CSE TI-84+CE TI-84+CEP TI-86 TI-89T cfx-9940GT fx-7400G+ fx 1.0+ fx-9750G+ fx-9860G fx-CG10 HP 49g+ HP 39g+ HP 39gs (bricked) HP 39gII HP Prime G1 HP Prime G2 Sharp EL-9600C
  • Consoles, mobile devices and vintage computers owned: Huawei P30 Lite, Moto G 5G, Nintendo 64 (broken), Playstation, Wii U

gbl08ma

As you might have noticed if you actually use it, Clouttery keeps working as well as it ever did. Back in September, I talked about open-sourcing Clouttery as if it was something I was about to do very soon. Months have passed, and it didn't happen yet... but I'm happy to announce that today, I finally found some time and motivation to work on Clouttery again.

The work I've done moves the last remaining big obstacle out of the way, which was to rewrite the dotAccount authentication code so that it no longer relied on a mess of PHP code and instead used a proper library, in the same language as the Clouttery server and built into it. I did not want to release the source of Clouttery as long as the PHP bridge was used, because it relied on quite a lot of security through obscurity. Now that the server uses something proper, I'm closer than ever to being able to open source Clouttery - both the server and the clients. However, I'm still not entirely sure I want to do it.

The reason is simple: I had the opportunity to talk about Clouttery (or in entrepreneur lingo, "pitch Clouttery") to a few people who have relevant experience in the area of bootstrapping projects like these and turning them into real businesses. Most of these people found the idea to be great and agreed that it's realistically possible to make the subscription model work and have people pay monthly for something like this, especially if the service is extended to support most of the features I initially planned and which are yet to be implemented. In this sense, I might not want to open source the code. I'll see, over the following months, if I feel like working on this ever again or not, and decide whether to open-source it or not.

As for my other project, UnderLX... you have no idea what happened. In November we were featured in national media for the first time. Since then, we have been featured in over ten online news sites, from tech news sites to "mainstream news" sites, and we were interviewed four times - and I'm talking about full-length interviews here. Here are some of them (in Portuguese): 1, 2, 3.
The UnderLX Android application now has over 3500 active users and it doesn't seem like it will ever stop growing. I honestly never expected so much exposure and success from a silly app for public transit. Hopefully this lets you understand why Clouttery has been basically dead for almost a year, and also why I'm not ever going back to developing software for calculators - at least, not as a hobby.
  • Calculators owned: Prizm CG-20

123outerme

Quote from: gbl08ma on February 25, 2018, 04:50:22 PM
As you might have noticed if you actually use it, Clouttery keeps working as well as it ever did. Back in September, I talked about open-sourcing Clouttery as if it was something I was about to do very soon. Months have passed, and it didn't happen yet... but I'm happy to announce that today, I finally found some time and motivation to work on Clouttery again.

The work I've done moves the last remaining big obstacle out of the way, which was to rewrite the dotAccount authentication code so that it no longer relied on a mess of PHP code and instead used a proper library, in the same language as the Clouttery server and built into it. I did not want to release the source of Clouttery as long as the PHP bridge was used, because it relied on quite a lot of security through obscurity. Now that the server uses something proper, I'm closer than ever to being able to open source Clouttery - both the server and the clients. However, I'm still not entirely sure I want to do it.

The reason is simple: I had the opportunity to talk about Clouttery (or in entrepreneur lingo, "pitch Clouttery") to a few people who have relevant experience in the area of bootstrapping projects like these and turning them into real businesses. Most of these people found the idea to be great and agreed that it's realistically possible to make the subscription model work and have people pay monthly for something like this, especially if the service is extended to support most of the features I initially planned and which are yet to be implemented. In this sense, I might not want to open source the code. I'll see, over the following months, if I feel like working on this ever again or not, and decide whether to open-source it or not.

As for my other project, UnderLX... you have no idea what happened. In November we were featured in national media for the first time. Since then, we have been featured in over ten online news sites, from tech news sites to "mainstream news" sites, and we were interviewed four times - and I'm talking about full-length interviews here. Here are some of them (in Portuguese): 1, 2, 3.
The UnderLX Android application now has over 3500 active users and it doesn't seem like it will ever stop growing. I honestly never expected so much exposure and success from a silly app for public transit. Hopefully this lets you understand why Clouttery has been basically dead for almost a year, and also why I'm not ever going back to developing software for calculators - at least, not as a hobby.
I'm glad you have great opportunities opening up! It's always great to get local and even national recognition, no matter how small the article. Hopefully this will help you land where you want to be! I'm also thankful that you continue to keep Clouttery going with updates and the such. Every now and again, it stops monitoring (although I'm pretty sure that's my phone's fault, it's getting to the point where it can hardly run one app at a time :P), but still works, like you said, great as ever!
  • Calculators owned: TI-84+CSE, TI-nspire Clickpad, TI-84+SE

DarkestEx

#127
I have read your blog post and it's an interesting story you went through.
Clouttery is still installed on my laptop but since it at some point kept refusing to open, I abandoned using it.
Since my phone is not compatible with Clouttery, I had never installed the app either.
I suppose, while there is nothing wrong with it, some people felt put-off with the business aspect of it, since almost all projects in this community are entirely non-profit. They would have rather paied 99 cents or 2 Euros for it once and used it happily ever after.
This is, as I can tell myself, not a viable business model. I have some web-apps running too that cost me money to run them, but fortunately, I get generous donations (usually about 30-50€ per donation) every few months to keep the service running and me motivated to keep working on it.
Talking about Clouttery again, I never really needed to keep track of my battery status, since I keep recharging my phone every night and it usually last for one full day (however, I keep putting it into flight mode and I prefer lower backlight settings, so power consumption is not too big either).
My projects went the same way as your new public transport app. I was the first one to work on that particular project and people started using my services. As far as I know, nobody else offers these services at the moment.

I wish you the best of luck with your new projects. :thumbsup:

Cheers
  • Calculators owned: TI-84+, Casio 101-S, RPN-Calc, Hewlett-Packard 100LX, Hewlett-Packard 95LX
  • Consoles, mobile devices and vintage computers owned: Original Commodore 64C, C64 DTV, Nintendo GameBoy Color, Nintendo GameCube, Xbox 360, PlayStation 2

gbl08ma

#128
That the Windows client sometimes stops opening is a known problem I never got around to fixing. It's because the local database (not written by me, I'm using an apparently buggy library) gets corrupted. To fix it, delete the file C:\Users\<username>\AppData\Local\Apps\2.0\Data\<something.xxx>\<something.xxx>\clou..<something>\Data\batterylog.dbs and try opening Clouttery again (this only makes it forget local battery history, settings and etc. are kept).

The "business model" of Clouttery is something that was never set in stone, hence why it is still free (and probably will always have a free plan) and that's why I prepared its billing system to deal with both one-time payments and discounts, as well as recurring payments (subscriptions) and discounts.

I don't consider Clouttery to be a failure, I was just a bit tired of working on it when I began working on my other project over a year ago (and I never planned for that one to take more than a month to complete... but, as I explained, it got a bit out of control after unexpected popularity and traction). At any moment, I can resume working on Clouttery more intensively as opposed to just looking into it for emergency bug fixes (fortunately, that has been rare). And if I decide to make it open source, that doesn't necessarily mean I have given up on developing it, or given up on any "business model".

Clouttery, in its current state and the way it is presented now, is only appealing to a handful of people with very specific needs - for example, people like me, who own quite a few models of phones for software testing, and don't want to ruin the batteries of these phones. However, one of the things Clouttery was set out to do, but is currently very far from achieving, was to cater to enterprises by providing ways to manage fleets of devices - not just consumer electronics, but more specialized stuff such as those PDAs with barcode scanners you see on supermarkets and warehouses. In these contexts, Clouttery could work alone, or as part of a more complete device deployment and management system, and the idea would be to work with the clients to develop semi-customized solutions (that is, take the common Clouttery core and adapt it to each client's needs).
I, and some of the people I've talked to, agree that's where the real money is, as (like you pointed out) it will always be quite hard to get the masses interested in paying for Clouttery.

I wish you luck with your projects too ;)

EDIT: I forgot to mention, but just a few days ago, I renewed the clouttery.xyz domain for two years. Now, it will only expire in 2020. I think this is a solid proof that Clouttery is here to stay.
  • Calculators owned: Prizm CG-20

Powered by EzPortal