* WalrusIRC

You need to have 5 posts and not be part of restricted usergroups in order to use the WalrusIRC embedded shoutbox. However, you can also access our IRC channel called #CodeWalrus via EFnet.

Author Topic: Clouttery - the smart, cross-platform battery monitor  (Read 19109 times)

0 Members and 1 Guest are viewing this topic.

Offline gbl08ma

  • Full User
  • Join Date: Jul 2015
  • Location:
  • Posts: 118
  • Post Rating Ratio: +5/-1
    • gbl08ma
    • @gbl08ma
    • gbl08ma
    • My personal website
  • Gender: Male
Re: Clouttery - the smart, cross-platform battery monitor
« Reply #120 on: September 02, 2017, 12:01:35 pm »
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.
    (click to show/hide)
    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

Offline xlibman

  • Omni founder & CW co-founder
  • CodeWalrus Staff
  • Super User
  • Forum Maintenance
  • Original 5
  • CodeWalrus Supporter
  • *
  • Join Date: Nov 2014
  • Location: Quebec, Canada
  • Posts: 18912
  • Post Rating Ratio: +100/-5
    • dj_omnimaga
    • DJOmnimaga.music
    • @DJOmnimaga
    • dj_omnimaga
    • @DJOmnimaga
    • /u/DJ_Omnimaga
    • DJOmnimaga
    • 112/11286
    • @djomnimaga
    • @DJOmnimaga
    • DJ Omnimaga music store
  • Gender: Male
Re: Clouttery - the smart, cross-platform battery monitor
« Reply #121 on: September 02, 2017, 02:07:38 pm »
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-57, 73, TI-80 (broken), TI-81, TI-82, TI-83, TI-83+ (broken), TI-83+ (broken), TI-83+SE (broken), TI-84+, TI-84+CSE, TI-84+CE, TI-85, TI-86, TI-89T, TI-92, TI-Nspire, TI-Nspire CX (semi-broken), HP 39gII, HP Prime, Casio fx-7000G, fx-7400G+, fx-7700GE, fx-9750G+, fx-9750GII, fx-9860G, cfx-9850G, FX-1.0+, fx-CG10, fx-CP400
  • Consoles, mobile devices and vintage computers owned: Samsung i5510, Nexus 5, Atari 2600, Lynx, SMS, Game Gear, Genesis, Dreamcast, NES, SNES, N64, GCN, Wii, Wii U, GBA, DS, 3DS, PS2, PS3, PS4, PSP, PSVita, XBox 360, XBOne

Bandcamp|Reverbnation|Facebook|Youtube|Twitter
Retired Omnimaga admin (2001-11) and editor (2012-14)

Offline gbl08ma

  • Full User
  • Join Date: Jul 2015
  • Location:
  • Posts: 118
  • Post Rating Ratio: +5/-1
    • gbl08ma
    • @gbl08ma
    • gbl08ma
    • My personal website
  • Gender: Male
Re: Clouttery - the smart, cross-platform battery monitor
« Reply #122 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".
  • Calculators owned: Prizm CG-20

Offline 123outerme

  • Super User
  • Join Date: Jan 2015
  • Location: In spaaace! Well, the Earth is anyhow.
  • Posts: 676
  • Post Rating Ratio: +6/-0
  • Professional Unpaid Intern
    • 123outerme
    • 113/11355
  • Gender: Male
Re: Clouttery - the smart, cross-platform battery monitor
« Reply #123 on: September 19, 2017, 12:11:09 am »
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

Offline xlibman

  • Omni founder & CW co-founder
  • CodeWalrus Staff
  • Super User
  • Forum Maintenance
  • Original 5
  • CodeWalrus Supporter
  • *
  • Join Date: Nov 2014
  • Location: Quebec, Canada
  • Posts: 18912
  • Post Rating Ratio: +100/-5
    • dj_omnimaga
    • DJOmnimaga.music
    • @DJOmnimaga
    • dj_omnimaga
    • @DJOmnimaga
    • /u/DJ_Omnimaga
    • DJOmnimaga
    • 112/11286
    • @djomnimaga
    • @DJOmnimaga
    • DJ Omnimaga music store
  • Gender: Male
Re: Clouttery - the smart, cross-platform battery monitor
« Reply #124 on: September 26, 2017, 05:54: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-57, 73, TI-80 (broken), TI-81, TI-82, TI-83, TI-83+ (broken), TI-83+ (broken), TI-83+SE (broken), TI-84+, TI-84+CSE, TI-84+CE, TI-85, TI-86, TI-89T, TI-92, TI-Nspire, TI-Nspire CX (semi-broken), HP 39gII, HP Prime, Casio fx-7000G, fx-7400G+, fx-7700GE, fx-9750G+, fx-9750GII, fx-9860G, cfx-9850G, FX-1.0+, fx-CG10, fx-CP400
  • Consoles, mobile devices and vintage computers owned: Samsung i5510, Nexus 5, Atari 2600, Lynx, SMS, Game Gear, Genesis, Dreamcast, NES, SNES, N64, GCN, Wii, Wii U, GBA, DS, 3DS, PS2, PS3, PS4, PSP, PSVita, XBox 360, XBOne

Bandcamp|Reverbnation|Facebook|Youtube|Twitter
Retired Omnimaga admin (2001-11) and editor (2012-14)

 


You can also use the following HTML or bulletin board code to share it on your page or forum signature!


Also do not forget to check our affiliates below.
Planet Casio TI-Planet Calc.news BroniesQC BosaikNet Velocity Games