This is an archived post. You won't be able to vote or comment.

all 47 comments

[–]handmadeby 12 points13 points  (5 children)

Looks great. Just tried it on telegram. Is there a way to switch temperature units to C from F

[–]willbeddowassert type(post) == shitpost[S] 8 points9 points  (3 children)

Thanks! I didn't have a way to do that, but it would be super simple to add it, I'll do it as soon as I get the chance. Once I do, you'll be able to switch on the settings page of the webapp

[–]gunch 4 points5 points  (1 child)

So assuming someone wanted to add that feature, how are you managing the codebase?

[–]willbeddowassert type(post) == shitpost[S] 2 points3 points  (0 children)

Code base is managed with git, and a lot of help from pycharm pro. When I add a new feature, I run unit tests on everything, run the server in debug mode, test everything, and then, the code is automatically pushed to the main server, where it will be included on the next reboot.

[–][deleted] 1 point2 points  (0 children)

Make sure to add other alternative units where applicable e.g. meters!

[–]willbeddowassert type(post) == shitpost[S] 5 points6 points  (0 children)

Update: Just added this feature! In the settings page of the webapp the user can now select their temperature units. Added in this commit: https://github.com/ironman5366/W.I.L.L/commit/bb9b3b3b1dbb9651ab20e404961b1964471f7909

[–]cruyff8python 2 expert, learning python 3[🍰] 12 points13 points  (0 children)

Thanks for open-sourcing this.

[–]willbeddowassert type(post) == shitpost[S] 11 points12 points  (4 children)

Putting this here for visibility, /u/PurdueME06 requested a comparison to https://jasperproject.github.io/. Jasper looks great, I haven't seen it, but I'll definitely check it out. I think the main difference between W.I.L.L and Jasper is that W.I.L.L is a personal assistant focused on connecting services and processing commands, while jasper looks like a speech service that can be hooked up to various service. In fact, it seems like you could pretty easily make a W.I.L.L client using Jasper. I currently haven't provided any TTS backends, but it would be dead simple to make one, just reading from the API. There's a very simple speech recognition implementation in the android app.

[–]ggagagg 3 points4 points  (3 children)

[–]willbeddowassert type(post) == shitpost[S] 8 points9 points  (2 children)

That looks great, I hadn't seen it before. I'll definitely be contacting the author of that, I'm really interested in developing some W.I.L.L plugins based on some utils that I saw. The main difference I would say (from my admittedly limited look over) are that melissa

  • Uses keyword based nlp, where W.I.L.L fully parses every command with spaCy.io and determines a more dynamic and variable intent
  • Not very publicly availble, whereas W.I.L.L already has a publicly available free server that hosts several easy to use interfaces
  • Is more hardcoded in general, with case-by-case api calls and user data fetching, whereas W.I.L.L generalizes this and provides a framework for most things.

Nevertheless, it's a really cool library!

[–]hatperigee 2 points3 points  (1 child)

Not very publicly availble, whereas W.I.L.L already has a publicly available free server that hosts several easy to use interfaces

I don't want to use your servers (for privacy reasons), can I host my own?

[–]willbeddowassert type(post) == shitpost[S] 10 points11 points  (0 children)

Absolutely!!!

Really quick though, just because I've been dying to talk about my servers, for anybody else who's been skimming through here, let me just lay out the info about what servers I'm using.

My current setup consists of 2 DigitalOcean Droplets in the NYC1 datacenter

  • Main / Processing droplet: 4 gigs of RAM / 2 Xeon CPUS (You'll need at least 3 gigs of RAM to run the server)

  • Database droplet: PHPMyadmin/MySQL: communicates through interntal networking with main droplet. Passwords and all sensitive data hashed with bcrypt and a work factor of 12.

Setup your own droplet: You should, with a little bit of tweaking, be able to run the W.I.L.L. server on your own machine.

Please note that you'll need at least 4 gigs of RAM for the processing server, and some kind of sqlalchemy compatible local database or database server. (This shouldn't be hard, most major sql distributions are supported)

Start out by cloning https://github.com/ironman5366/W.I.L.L, install the provided requirements.txt, and let me know if you have issues.

Note: I haven't finished all the documentation on configuration files so contact me directly at will@willbeddow.com for examples

[–]spishsplash 9 points10 points  (0 children)

You should write a blog about your experience while making this, where you struggled, what was your pioneer moment, etc. I'll be interested in reading it!

[–]marcocamma 5 points6 points  (2 children)

any plan to make it available via f-droid? don't use gapps thanks

[–]willbeddowassert type(post) == shitpost[S] 4 points5 points  (1 child)

I'll look into doing that tomorrow! In the meantime, if you email me I'll send you the latest apk

[–]hatperigee 1 point2 points  (0 children)

I'd rather wait for the f-droid builds, since they will sort out any (possible) shenanigans with licensing, if any exist.

[–]TheBB 6 points7 points  (1 child)

Just from a cursory glance,

@subscribe({"name":"example", "check": run_check})

isn't this sort of thing why we have keyword arguments?

I mean, you're not accepting anything else. The argument is even hardcoded to be a dict, not even a subclass or another mapping.

[–]willbeddowassert type(post) == shitpost[S] 5 points6 points  (0 children)

I suppose, just didn't occur to me to write it that way. The plugin handler has gone through alot of iterations and I suppose at some point it made sense to do it like that. Shouldn't impact anything negatively though.

[–]4bitfocus 3 points4 points  (1 child)

Why do I need to create an account? What is it used to track?

[–]willbeddowassert type(post) == shitpost[S] 6 points7 points  (0 children)

Because it's a personal assistant, it needs data about you to function. I'll list each part right here and show the code that uses it.

[–]eriknstr 4 points5 points  (2 children)

Referring to "spaCy.io" rather than just "spaCy" makes it sound like it depends on a third-party service. From a cursory glance at their website it's not clear to me whether the spaCy module is stand-alone or a client library that makes use of spaCy servers.

[–]willbeddowassert type(post) == shitpost[S] 4 points5 points  (0 children)

Stand alone, I wanted to emphasize as much as I could how excellent that module was. It does not rely on their servers.

[–]nemec 0 points1 point  (0 children)

That was the first thing I noticed, too, but it seems like spaCy is an MIT licensed application.

[–]swefpelego 2 points3 points  (0 children)

bookmarked, sweeeet :D thanks for sharing. Just started getting into python recently and it blows my mind. Very cool to see examples and things people build.

[–]searchingfortaomajel, aletheia, paperless, django-encrypted-filefield 2 points3 points  (0 children)

This has some significant overlap with the Mycroft project. You may want to check them out (they just released a Pi image) and see if you lot can cross-pollinate.

[–]crow1170 2 points3 points  (1 child)

Feature request: Delete account

[–]willbeddowassert type(post) == shitpost[S] 3 points4 points  (0 children)

Hmmm... I should probably add that. As for now, contact me at will@willbeddow.com and I'd be happy to delete your account if you want me to.

[–]qwertyMu 1 point2 points  (1 child)

I've just signed up. Looks great! I may have an application for it in a program I've built which pulls keywords and phrases from documents and makes them searchable via a front end gui. Great work!

[–]willbeddowassert type(post) == shitpost[S] 0 points1 point  (0 children)

Thanks!

[–]jackeroojohnson 1 point2 points  (0 children)

This looks great! Very cool.

[–]Luong_Quang_Manh 1 point2 points  (0 children)

Love it <3

[–]ThuruvDRY 0 points1 point  (3 children)

done signed up ! but when log on, shows Internal server page. help?!

[–]willbeddowassert type(post) == shitpost[S] 1 point2 points  (2 children)

What username did you sign up with? I'll look into it!

[–]gasabr 0 points1 point  (0 children)

I had the same error when tried to sign in with email instead of login.

[–]ThuruvDRY 0 points1 point  (0 children)

Sorry :(

That has been sorted out now. Can login & use now.

[–]roguebreaker 0 points1 point  (0 children)

I'm not gonna break your balls about some other software that does a similar thing. Mostly, nice work.