Monday, August 13, 2012

Website updates!

Post from the past

Now with 100% less placeholders

I got a couple of complaints about the old style of the site so I consulted with a marketing coordiator I happen to live with and came up with both a new site and a logo for the RDA. The website still a work in progress, but it's slowly edging closer to being done and it is very exciting.

The original icon had the plug for the ethernet facing upwards, as you could probably see from the previous post. After thinking about it (and more consulting), the logo changed to what it is now. I really wanted the image to symbolize what this project is and I think the unmistakable symbol overlaid with an ethernet is a fairly good distillation of what this RDA does and is. I also wanted to subtly incorporate themes from the Twilight caste, and hopefully that comes through with the image as well. With that bit of work done, and the stabilization of not only the website but also the source control and Qt, I feel much better about moving on.

Sunday, August 12, 2012

Icon has cheezburger

Post from the past

RDA logo and icon in the works

In addition to a site overhaul, I've started work on the RDA logo. Inkscape is surprisingly easy to use and the learning experience has been fun so far. I hope to have it done soon so I can resume work on the actual RDA.



Also of note: Qt has been picked up by Digia, which is good news indeed. I look forward to the eventual release of Qt5!

Saturday, August 4, 2012

First blog entry

Post from the past

Not much to look at yet

Welcome to the RDA dev blog. In the following days, I'll be adding some old news to keep a complete history of development up to this point. They will have their own titles and I will try to set the date properly, but this is the real first post of the new site. I've taken a small break from coding (before I work on getting the Qt reactor working with Twisted) and I have been refreshing my memory on web dev. This project has really been teaching me things, it has been fun picking up some new tricks in CSS and HTML. My plan is to have the site in HTML 5.

This week turned up some troubling news as well. Apparently, Nokia has shut down their Australian offices which makes me worried about the future of QML. I was really looking forward to the beta release of Qt 5 and the new QML additions it would bring, but this seems to explain the delay. Not much to do except wait and see how things play out, I'm afraid.

Notes from the future

This was technically the first post of the old GitHub based dev blog.  Now that I'm using Blogger, hopefully I'll never have to backfill again!

Thursday, July 26, 2012

QTReactor meltdown

Post from the past

More fun with QT

So, more fun things. qtreactor has been removed from Twisted due to licensing issues and has not yet been replaced. This is a problem since both qt and twisted have calls that start their event handlers that are blocking. Good times. There seems to be a push to convert the old qtreactor to pyside, so I will see if I can use that as a stop gap for now.

Wednesday, July 18, 2012

Fun times with QT

Post from the past

Learning QML


Notes from the future: I set up a sandbox to learn and play with QML while I tried to decide what I should use for the RDA gui. I had a few rquirements, but the most important of them was that it mesh well with Python. It really came down to Qt (through pyside) or JavaFx (through jython). Both seem to be in a state of flux right now (some more than others, apparently *coughQtcough*). In the end I went with QML because I started to really like the declarative syntax and the things they were promising for Qt 5 (an updated graphics stack, openGL stuff, etc) seemed really appealing to me (plus, if the project ever does get converted to a language that is closer to the metal like C++, Qt can handle that, while JavaFx has little recourse).

Friday, July 6, 2012

sqlite up the night

Post from the past

RDA now has a way to save settings

Created a settings class for storing settings categorically using a sqlite backing database using the system specified settings location (for instance: "~/.rda/settings.sqlite3" in POSIX systems)

7/7/2012: Now with unit tests!

Notes from the future

... because pickle isn't good enough, right?

The settings module is probably the best documented piece of code in the system.  Unfortunately, it is also probably the most useless.  Granted, as a learning experience, it was worth the time and effort, so I've kept it in use, and until I have a compelling reason to stop using it, I will probably keep it around.  Every project needs some quirks, right?

Wednesday, July 4, 2012

The website is up!

Post from the past

Welcome to the official website of the RDA!

Welcome to the Resplendent Digital Assistant's website! This news post marks the completion of the migration to github! The site is still very much a work in progress but hopefully there will be a lot more changes very soon! The news section will is intended to be a collection of offical information about the current state and planned updates to the RDA.

Unfortunately, this isn't much to say yet. The RDA is still in development and has a little way to go yet before there is even a version 0. For less official information and updates, check the blog.

Monday, June 25, 2012

Plentimon actually does roll dice

Post from the past

RDA server now responds to dice requests

Added dice rolling capabilities to roll up to 100 dice between 2 and 20 sides. Broke login out of chat logic, client test script can now recognize /whisper [name] [text] and /roll [1-100]d[2-20] commands to test relevant capabilities on the server. Server now expects a login message before a timeout or it drops the connection.

Notes from the future

I am pretty much obsessed with finding better ways to generate pseudorandom numbers for the RDA, but if I devoted all my time to that, nothing else would ever get done.  Right now, the dice roller uses the default random number generator for Python, but as soon as I get a plug in framework set up that will change.  The long term goal it to allow pluggable random providers that can be set according to the server admin's whim.

Sunday, June 24, 2012

Login and password

Post from the past

RDA server now requires username and password

Fixed bugs, added login / password checking capabilities, and made a few test scripts to prove everything is working. Will add more comments tomorrow and begin work on a client GUI and dice rolling! (Note from the future: this timeline turned out to be somewhat... optimistic)

Fixed password hashing, added versioning support, added files for use with python's distutils. Oh yeah, and more comments!

Notes from the future

For right now the RDA server has a password that is set when the server is started and which must be supplied by a user when they attempt to log in.  This scheme is similar to Mumble (minus certificates) and I figured it would be a good start for the RDA.

In general I try to handle the plaintext password as little as possible - for instance, in the server's set passwd function, it takes in a plaintext password which is immediately hashed using SHA-256 and stored as a hash.  Likewise on the client, which sends the hashed password in a login message.  A lot of this functionality is provided by Twisted, but in some cases the documentation can be hard to follow.


The login responder, shown above, handles incoming login messages to the server. It first cancels a timer that gets kicked off when a user first attempts to connect to the server - if they don't offer login credentials within the time limit, they will be booted off. Then it makes sure that user is not already logged in, and that the messaging version they are using matches the messaging version the server is using. Finally, we kick off a Twisted deferred to call the authenticate method.


Authenticate is mostly filled with Twisted code which you can read about here: Cred: Pluggable Authentication. It is pretty self explanatory, either the hash matches or the user is kicked with an unauthorized login response.

I am still not happy with the credentials module - it works well enough for now however, so until I wrap my head around how it should change, it is staying as is.

Saturday, June 23, 2012

Time to 'git' some source control

Post from the past

RDA is now using git

Uploaded all starting sandbox code for the RDA to bitbucket. (Note from the future: I picked bitbucket because it allowed me to have private repos. I was somewhat shy about having unfinished, poorly written code out in the open with my name on it... how quickly things change). RDA has been split into multiple projects, with a common submodule to share between them. Hopefully this will make it easier going forward.