DuoLingo is actually pretty fun

Last summer, I started playing with the DuoLingo app.  My wife originally started looking at it as a resource for teaching our son a foreign language (which is going to be part of his curriculum this year), and I thought I'd check it out.  After all, I figured we had an upcoming vacation in Mexico and it couldn't hurt to brush up on my Spanish, right?  (Turned out it wasn't really necessary - we spent the whole time on the resort and nearly everybody spoke enough English to communicate.  But that's not the point.)

Turns out it's kind of a fun little app.  Sure, the presentation is very cartoonish and oriented toward children, but not distractingly so.  More importantly, it offers enough gamification to keep it interesting and allows you to do lessons in very small bites.

I subscribed to the premium package (since I figured it would be a family thing), so I haven't really messed with the free version much.  I'm not sure how much of a difference that makes to the user experience, so caveat emptor.

The exercises cover a good range of capabilities.  They include basic written translation exercises, where you read a sentence in one language and translate it to the other, either though free-form typing or a pick-a-word interface; fill-in-the-blank exercises where you have to complete a sentence; listening exercises where you type back what you hear; speaking exercises where you read/repeat a sentence; and stories that you listen to and then answer comprehension questions.  For most exercises, the interface allows you to tap a word to get the definition, which is handy.  There are also tips that you can access and which get displayed if you get a question wrong too many times.

The gamification aspect is what I find interesting and enjoyable.  There are a number of aspects to it, so you can go as deep as you want.  These include daily challenges, like completing 12 listening exercises; long-term challenges, like learning a certain number of new words; levels to progress through; various streaks to establish and maintain; leagues to compete in; and even "friend quests" to work with another user to collectively reach a goal, like a certain number of lessons completed in a week.  You can earn "points" for leagues and challenges by completing lessons and "gems" that can be used to buy power-ups by completing challenges.  You can also buy gems with cash, if you're so inclined, but they're really only used to buy "streak freezes" or "time boosts", which you don't really need.

The thing that really helps me stay with the app, though, is the lesson sizes.  They're very short.  It varies, of course, depending on what type of lesson you're doing, but it's not a big time commitment at all.  The fastest can be as short as one minute, up to maybe 6 or 7 minutes.  Sure, you're not going to learn all that much in 5 minutes, but reinforcement helps.  Smaller lessons give you lots of opportunity for review, so you can pick up new stuff slowly and get comfortable using it.  And most importantly, if you're busy, you're more likely to actually do small lessons on a regular basis.  Is that the path to rapid fluency?  Clearly not.  But it's still a way to improve your skill with a language.

Poor man's home intercom

A few weeks ago, I decided to set up a DIY home intercom system.  This was motivated by the fact that my son has been doing home-school and we set him up a workspace in the basement.  This isn't a problem per se, but my wife usually doesn't go down there with him if he's doing independent work, which means there's often yelling up and down the stairs.  This is, shall we say... somewhat distracting when I'm trying to work.

I did a little searching for intercom systems, thinking I might buy some hardware, but decided that looked like too much work.  We'd have to find a home for it, and then you might not hear it if you were on the other side of the house, unless I put them everywhere, which is an even bigger pain.  Besides, it seemed like there should be an app for that.  And since we pretty much have our phones close to hand most of the time, that would be more convenient than dedicated hardware anyway.

Turns out there is an app for that.  A number of them, actually.  The one I decided to go with was Zello, which is a fairly simple walkie-talkie app.  I went with this one for a few reasons:

  1. The mobile app is free, at least for personal use.  (There's a PC version too, but that's only for paid corporate accounts.)
  2. It's in the Amazon and Google Play app stores.
  3. It's easy to set up.
  4. It's really easy to use.

The setup process for Zello was pretty basic.  For my son, I decided to just put it on an old Kindle Fire that I had laying around.  It can just sit on the desk, plugged in and ready to use whenever we need to talk to him.  My wife and I just put the app on our phones.  From there, you just create an account (which only requires basic information) for each device using the app, and then send a contact request to the other accounts.  Once your request is accepted, that person will appear in your contact list.

Actually talking to other people is even simpler.  You just tap on the person's account from your contact list and then you get a screen with a great big "talk" button in the middle.  When you want to talk to the person, you just press and hold the button and start talking, just like an old-fashioned walkie-talkie.  When you're done, you release the button.  From what I can tell, the connection is not in real-time - it seems like the app records your message and then delivers it, so you are less subject to the vagaries of the network.  But barring networking issues, the delay seems to be pretty short - a few seconds in most cases.

The app also has a few other features, including very basic text messaging.  There's also a "channels" feature, which I haven't used yet.  That's their "group voice chat" feature.  Presumably the idea is to mimic a dedicated frequency for a CB radio.  The primary use-case for the commercial version of Zello seems to be for fleet dispatchers, so the interface seems geared toward a simple replacement for a traditional radio system.

Overall, the app works pretty well.  It was easy to set up and it has definitely saved some frustration in terms of yelling back and forth across the house.  Also, my son seems to like using it.  He even ends is messages with "over and out".  So I count this as a win.

Adding bookmarklets to mobile chrome

Author's note: I started the draft of this article way back on July 1, 2013. Sadly, it's still pretty relevant.

So I'm built myself a nice little web-based bookmarking app. I wanted something that would both give me some insight into how I use my bookmarks and also save me from worrying about syncing bookmarks between multiple browsers on multiple devices. And since I've regained my distrust of "the Cloud" with the demise of Google Reader, I decided to write my own. (Note from the future: Yes, I know seven years ago, but I still don't really trust cloud services.) If you're interested, check out the GitHub page. Maybe one day I'll make a real, official release of it. I call in Lnto, with "ln" being the UNIX "link" command and a tie-in to "LnBlog", the software that runs this site. (For LnBlog, the tie-in was to "ln" for the natural logarithm, i.e. "natural bLOG". Get it? I swear I thought it was funny at the time.)

One must-have feature for such an app is a "bookmark this page" feature. With native browser bookmarks, this is built in. With a web app...not so much. So the solution is to either write an extension for every browser I want to support (which is a lot of work), or just write a bookmarklet - a little piece of JavaScript that you can bookmark and run with a single click. Since this is a personal project that I'm doing in my limited free time, the latter seemed like the obvious choice.

There's just one problem here - mobile browsers. In addition to my laptop and my desktop, I have an Android phone and a Kindle Fire that I want to support. And while the actual bookmarklet code works just fine on all of those devices, actually bookmarking it isn't quite so easy. Because they're mobile browsers, you can't just drag the link to the toolbar as you would on the desktop.

Until recently, Firefox Mobile handled this well. (Author's note: We're back to the current time now, not 2013.) It would allow you to bookmark a bookmarklet like a normal bookmark. You just had to press the link and select a "bookmark this link" item from the menu. Then you could just bring up the bookmark screen when you were on a page and it would run the bookmarklet. However, with the updates for Firefox Mobile 81, that doesn't work anymore - the javascript: URL scheme doesn't seem to get executed when you invoke the bookmark. And other browsers don't seem to support bookmarking the bookmarklet in the first place. This link suggests that it's possible using bookmark syncing, but I'm not sure if that still works and I don't really want to turn on syncing anyway.

What I eventually did was just create a page that I can paste a URL into and it will do the same thing as the bookmarklet. It's not great, but it's serviceable. At some point, maybe I'll get around to creating an Android app. Then I'll have some native integration options to work with.