Pathwright launches, powered by Snakes and Jazz

After over two years of development, Pathwright has emerged frombeta, and is open to the masses. For those with knowledge to share, we hope this web application will give you an easy-to-use, easy-on-the-eyes way to teach others. We provide a structured, social way for your students to learn.

See the Pathwright landing page for more details, as I’m going to leave marketing mode and get into the more philosophical and technical topics that most of you will probably be more interested in.

What’s special about Pathwright?

There is no longer a shortage of online learning software to choose from. Players ranging from “free” to expensive exist, with wildly varying approaches and feature lists. We chose a very specific set of core principles to develop against:

  • Online learning should be easy for both teachers and students.
  • The software should be visually appealing and polished.
  • Do less than the competition, but do it better.
  • Prices are posted upfront, no sales calls or interaction with us is required to get started. We’re eager to talk to anyone who’d like to get in touch, but some of our competitors strong arm you into sales calls before you can even see the software, which we are loath to do.
  • It should be easy and affordable for organizations of all sizes to sign up, try the software free of charge, then elect to start selling courses as soon as they’d like.

We are a hosted solution that handles all of the unpleasant stuff for you (servers, billing, scaling, continuous software upgrades, support) for you. Our hope is that our customers can spend their time creating content and interacting with their students, instead of dealing with infrastructure or dialing IT.

A peek under the hood

Pathwright is powered by the Python and Django. The two were chosen for their ease of use, and being good enough to accomodate our fast-paced development process. Almost any modern, widely used framework would have done the trick, our team was just very comfortable with this particular stack.

All of our servers are on Amazon Web Services. We’ve found the pricing to be great, and the ability to effectively “outsource” portions of our stack has freed up a lot of development time. We run no media servers (S3 + CloudFront), no mail servers (SES), no self-hosted load balancers (ELB), and have drastically simplified a number of other things with AWS’s services.

A few really critical parts of our stack:

Some crucial Python packages:

Tell us what you think!

We’ve worked long and hard on Pathwright, bootstrapping it from nothing. At this point, we’re what you could say “too close” to the project to get all the feedback we need from our team. Please let us know what you think in the comments or via email.

Magnificant MUDdy Musings

The Evennia MUD Server has been progressing through beta at a goodclip, with much effort spent on fine-tuning existing features, and expanding on the already excellent pile of documentation. Much to my delight, the current maintainer, Griatch, has started to blog about Evennia development. If you are at least somewhat interested in keeping an eye on a Python+Twisted+Django MUD server, consider taking a peek at Griatch’s Evennia Musings.

While the blog details Evennia development, there is a lot of valuable general-purpose stuff as well. Especially for those writing, or considering writing, a MUD server using some or all of the same building blocks.

For those who would like to harass the man (or the other users/developers) in person, stop by #evennia on FreeNode.

django-dynamodb-sessions is ready!

After much tweaking, hand-wringing, and thumping around on staging,django-dynamodb-sessions is ready. The package provides a super-high-scalability session store for those hosting on Amazon’s EC2.

This may be useful to you if…

You’re wanting to trim your DB size, or reduce the read/write thrashing that happens with DB-backed sessions. You also don’t feel like maintaining Redis, or something similar.

With the introduction of Amazon’s DynamoDB, we now have a very fast, massively scalable data store that is somebody else’s problem to secure, update, and keep running. I’ve found the response times to be great, especially when combined with the provided cached_dynamodb backend (similar to Django’s cached_db backend).

This probably isn’t a good option for you if…

  • You aren’t hosting on EC2. While it’s still possible to use, YMMV as far as response times go. Within AWS, the response times are excellent.
  • You’re not at a big enough scale to find yourself with a ton of django_sessions table bloat, or the previously mentioned read/write thrashing in django_sessions.
  • You store massive (>1MB) amounts of data in sessions.

Getting Started

If you’d like to give django-dynamodb-sessions a try, either grab it with your choice of easy_install, pip, or other equivalent, or snag it from its page on PyPi. Install instructions can also be found on the PyPi page.

If you think this is interesting…

Make sure to Watch  the project on GitHub. If there’s enough interest, I’ll continue to tweak and improve the package.

Read the Docs: A huge thanks!

When a free service or module proves to be invaluable to yourproject(s), it’s only right to thank the authors for their excellent work. I thought I’d take a brief moment to thank all of the contributors behind Read the Docs for this simple but wonderful site. I have found it to be extremely useful for my hobby and real-world projects.

For those who have yet to see the light

If you have Sphinx-based documentation and haven’t played with Read the Docs yet, I can’t recommend it enough. Not only do you not have to hassle with hosting your compiled HTML documentation yourself (or on a specially named branch in VC), you can point many software forges’ post-commit hooks at a specific URL to enable automatic doc updating with each commit/push.

I no longer have to manually udpate the docs with each change, or juggle the annoying gh-pages branch on GitHub. Each commit posts to a project-specific URL on Read the Docs, and RTD pulls the latest source, runs Sphinx, and posts the result up within a minute or two.

Small victories in efficiency

If all of this doesn’t seem like a big deal, that’s because it isn’t. This is a small, incremental improvement to my development process that leads to less context switching, less manual labor, and less stuff to worry about. This is not the cure for cancer and it won’t win a Nobel Peace Prize.

However, it is just the very small, simple improvement that makes a noticeable impact. Low-hanging fruit. The tastiest kind.

Evennia MUD server grows a proxy

I’ve obviously been on a bit of a proxied MUD server tangent of late(see here and here). I typically haunt #evennia on FreeNode, and brought the point up to the current maintainer, Griatch, a few weeks ago. As is typical for Griatch when he finds something he likes, he cranked out his take on an AMP-based proxy (the Evennia term is “portal”) very quickly, and announced the specifics a few days ago.

The biggest benefit in the case of Evennia is that the old, complicated code reloading system is now completely gone. This is a big win in simplicity and avoiding nasty edge cases where reloading doesn’t work as expected.

For those that haven’t heard of Evennia, it’s a Python + Twisted + Django MUD server that gives you a solid foundation to immediately start adding your game-specific stuff to. The documentation (particularly the developer section) is outstanding, and is amongst the very top tier of MUD servers. If you are even partially curious, consider joining the Google Group or lurking in #evennia on FreeNode. There are lots of interesting discussions on both from people of varying levels of involvement.