The redesign of WordSwing's website is now live.
It's mobile. Finding enough time to practice a language is always a challenge. Finding enough time in front of a desktop or laptop is even harder. Now that WordSwing works on mobile devices, you can take advantage of free moments when you're out and about, standing in line, waiting for a plane, riding the bus, etc.
It's faster. Architectural changes to WordSwing enabled us to make the site much faster to download. This should make the load time fast enough for mobile devices. For those interested in technical details, we now serve the main application bundle using a content-delivery network that caches the files at network edge locations near you, and serve compressed files when possible.
There's a whole new drill down interface. At the crux of WordSwing is the ability to drill down to learn more about language you encounter while practicing. Part of this redesign was to completely revamp the drill down interface. The old implementation required tedious mouse-hovering acrobatics to select which language component you wanted to focus on. Now we have an easy touch/drag based highlighting mechanism to quickly get to characters, words, and phrases of interest.
Why'd it take so long?
There are two answers, depending on what is meant by the question.
One answer relates to why didn't we start sooner? We whole-hartedly agree, mea culpa. Four years ago Olle was already exposing the tremendous value of learning Chinese via smartphone. Unfortunately, in an attempt to rapidly prototype and build out WordSwing's language practice functionality we made some design decisions that were at odds with touch-based access. In this rewrite, we've tried to rethink everything from a mobile-first perspective and do it right.
The other answer relates to why did the rewrite take so long? This rewrite has been occupying much of our development efforts for the past 6 months. Six months ago, when I was evaluating whether to do a rewrite I came across a blog post by Joel Spolsky (creater of StackOverflow and Trello), appropriately titled Things You should never do, part I, which discusses why a rewrite is a terrible idea. So I set out not to do a rewrite, but as I broke more and more of of my development copy of WordSwing trying to rearchitect, I got sucked in and there was no going back. What you'll now find at WordSwing is a redesign, that while not a full rewrite, still involved touching nearly all of the 80,000 lines of code that underpin WordSwing.
So, sorry this took so long! I've learned my lesson, and will try to never do it again.
What can we expect going forward?
Most importantly it means back to forward progress, and not only on software development, but also growing WordSwing's language learning content, and improving the machine-learning and modeling behind WordSwing.
From now on it should be possible to make incremental improvements, even major ones, without halting progress on all other fronts. Part of this is that the main client-side web framework I use, Ember.js, has evolved to have a very mature development cycle, complete with a set of staged release channels, semantic versioning, stability guarantees, a well-honored depracation policy, and backed by a great community of developers. This combined with architectural changes I made during this rewrite means that development should be relatively smooth sailing.
Thanks for you patience! And if you haven't checked out WordSwing in a while, please do! And don't forget to let me know what you think.