Lucidity 1.3 Released

Happy Wednesday everyone! Jason and I are excited to announce that Lucidity is now in version 1.3, which includes a few major updates:

  1. No more invitations – Lucidity is now open to everyone
  2. Comment on yours and other’s dreams
  3. Community page, which includes links to recent public dreams as well as a tag cloud
  4. Bug fixes

Enjoy!

Posted in Lucidity | Leave a comment

Lucidity on Kickstarter

Hello, friends and family of 8byte8! Jason and I are excited to announce that Lucidity has been accepted as a project on Kickstarter, and we need your help to reach our funding goal.

If you have a few dollars to spare, please consider backing Lucidity. We have some really fun reward ideas in mind for anyone who backs the project. There’s only 19 days left and we still have a long ways to go, and anything helps.

If you don’t have a few dollars but have a few minutes, we’d also appreciate any shares on Facebook, Twitter, or via email. All the methods to share can be found at this link:

http://kck.st/x3DbjA

Lastly, we’d like to thank Lauren Atchley for agreeing to act in our Kickstarter video and all our friends and family who have backed us so far. We really, really appreciate it!

Posted in Uncategorized | Leave a comment

Lucidity Now In Beta

While we’re about two weeks late to the blogging game, we are excited to announce thatĀ Lucidity is now in beta. We’ve been working hard the past two months to get it into its current state, and while we have a long way to go, we’re very happy with where it’s at now.

Because we still have a few bugs and kinks to work out, Lucidity will only be available by invite for the next few months. To get an invite, head over to the Lucidity website and enter your email address. Once we have some more invites available, you’ll receive an email with your access link.

We hope you enjoy Lucidity, and if you have any comments/suggestions/bug reports, please contact us!

Posted in 8byte8, Lucidity | Leave a comment

AT&T Developer Summit Hack-a-Thon

The weekend before last, Jason and I participated in the AT&T Developer Summit Hack-a-Thon. Developers had ~8 hours to not only conceive and get a demoable app working, but also to prepare and practice their 3-minute pitch, as the business side was worth a whopping 50% of the judges’ votes.

We decided to go ahead and use the mHealth API in our project to qualify for the 1st, 2nd, and 3rd place prizes, so on Saturday we brainstormed some ideas, did some wireframes, and showed up bright and early on Sunday morning at The Palms to start coding. We collaborated with two of our (now ex-) coworkers at Zappos who helped us with the back-end and the business presentation.

The app we conceived was called Intensify, which is a mobile game that brings elliptical and tredmill-based workouts to your mobile phone and adds a competitive element to them. Users can choose their workout and then find friends near them to compete with. Whoever has the most intense workout wins, which we track through mobile accelerometers and/or GPS.

While we didn’t win the hack-a-thon, it was definitely an interesting experience trying to code an entire app in only 8 hours. It was nice that we only spent a day on it, but at the same time, it’s not nearly enough time to get an app in any condition to be demoed. This alone was unfortunate, because 2 of the 3 finalists were teams who had already been working on their app for months or years. It was definitely discouraging, because we both felt like it took away from the spirit of a hack-a-thon, which is why we didn’t start any development until we arrived on Sunday morning.

Either way, we now have a half-baked app which we hope to eventually port over to our own development stack. Perhaps one day you’ll be able to find it in the App Store. :)

Posted in Hack-a-Thons | Tagged , | Leave a comment

Internationalization in Pystache

While developing Lystee, we used Django templates for server side templating and Handlebars.js for client side templating. While they are both great templating systems, often times we render a page server side and later update it client side, requiring us to have to duplicate many of our templates in Django templates and Handlebars.js. For Lucidity we went with a solution that lends itself better to reusability, Pystache. Pystache renders mustache templates in Python, and then we can use mustache.js for rendering the same template on the client.

Django templates provide a convenient {% trans "" } tag for which there is no mustache equivalent. So, how do we handle internationalization in Pystache? I forked Pystache and added a new tag, {{@ }} that calls into django.utils.translation.ugettext to translate whatever is inside the tag. This way we put our text that we need translated inside the tag like so: {{@Hello!}} and as long as we have the rest of our localization setup correctly, the text gets translated into the language sent in the Accept-Language header.

So that covers server side translation, but what about when the client needs to render a template, surely you don’t want to modify mustache.js and deal with the headache that JavaScript internationalization is? Of course not, but I have a simpler solution! Since the server sends the mustache template down, we can simply intercept that request, and send down a version with the {{@ }} pre-rendered by the server, and all other tags left intact so that mustache.js can render them. To do this, rather than call view.render() on your Pystache views, you can call view.renderOnlyLocalization() and get the template with only the {{@ }} tags rendered. So, given the following template:


{{@Hi}} {{name}} {{@How are you on this fine day of}} {{date}}

The server will send the following to the client, which can then be rendered via mustache.js:


Hi {{name}} How are you on this fine day of {{date}}

You can get the source here if you want to use this in your own projects or add on to it.

Posted in Technical | 1 Comment

Text search in MongoDB

At 8byte8 we use MongoDB in many of our projects. There is an open ticket for supporting full text search natively in MongoDB, I am patiently waiting for the day that it gets implemented. In the meantime I am using a quick and dirty solution for providing the ability for users to search public lists inĀ Lystee. You can perform a simple map reduce over the collection that you wish to build a search index for. Let’s say you have a collection with documents that have a description property, here is the JavaScript map job:


function() {
  var id = this._id;
  if(this.description != null) {
    var terms = this.description.split(/\s+/g);
    for(var i = 0; i < terms.length; i++) {
      var term = terms[i];
      if(term != null && term != '') {
        term = term.toLowerCase();
        var result = { };
        result[id] = 1;
        emit(term, result);
      }
    }
  }
}

Every document in the collection gets mapped over, if the document has a description field (presumably in paragraph form), the field gets split into multiple terms by splitting on whitespace. Each term gets lowercased, then emitted. The emit maps the _id of the document to how many times the term appears in the document.

Here is the JavaScript reduce step:


function(term, emits) {
  var result = {};
  for (var i = 0; i < emits.length; i++) {
    var emit = emits[i];
    for(var id in emit) {
      if(result.hasOwnProperty(id)) {
        result[id] += emit[id];
      }
      else {
       result[id] = emit[id];
      }
    }
  }
  return result;
}

Here the emits are aggregated and stored into an index collection that you can use for providing search functionality. The index collection _id field contains the term, and the value field contains a list of mappings of document _id‘s that contain the term to the amount of times the term appears in the document. As a side bonus you can also provide autocomplete functionality by using a regex to find documents, here is the Python PyMongo code to do so:


collection.find({'_id':re.compile('^' + t + '/*', re.IGNORECASE)})

This solution lacks some more advanced features that are desirable in text search engines, such as term stemming. If you need more advanced searching I recommend using software dedicated to text search, such as Solr.

Posted in Technical | Leave a comment

iOS5 bug for Twitter oAuth

It’s recently come to our attention that some Lystee users on iOS5 are having trouble logging into the iPhone app via Twitter. We were able to find the bug, but unfortunately we’re at the mercy of Apple getting it approved and into the App Store. Sit tight, a fix is on the way!

Happy List Making,
The Lystee Team

Posted in Lystee | Tagged , , , | Leave a comment

Happy New Year from Lystee

With the holidays winding down, a new year is right around the corner. A new year is the perfect opportunity to reflect back and to start thinking about the year ahead, which of course can be done with lists!

Need some list ideas?

We put together some list suggestions to get you thinking about what made 2011 a year to remember (or not) and what you hope to accomplish in 2012.

Share your lists.

While creating your lists, don’t forget that you can share any public list via Facebook, Twitter, or email by clicking on any of the icons below the “add” button.

Create lists on-the-go.

Lystee for iPhone is now in the App Store. This free app lets you create and manage lists on-the-go wherever inspiration strikes.

Have a list suggestion?

Shoot us an email at 8byte8@gmail.com with your new year list suggestion and you may see it featured on the homepage!

Happy List Making,
- The Lystee Team

Posted in Uncategorized | Leave a comment

Exciting News!

Some exciting news on the 8byte8 front! Beginning January 9th, both Jason and Jen will begin working at 8byte8 full-time.

What does this mean?
This means that we’ll be able to spend much more time working on new apps and improving our existing apps.

What will you be working on?
We’re hoping to get Lucidity into beta by early spring, and we have some fun new features for Lystee up our sleeve. Everything else is top-secret!

What will you guys be doing?
Jason will be working as 8byte8′s back-end and mobile developer, and Jen will be working as 8byte8′s designer and front-end developer.

Are you guys staying in Vegas?
For the time being, yes.

Wish us luck!

Posted in Uncategorized | Leave a comment

Happy Holidays From Lystee

With the holidays right around the corner, it’s time to start creating those naughty & nice lists! Why not use Lystee to create & share your holiday-inspired lists with friends and family?

Need some list ideas?

Start off with some of these ideas to get your creative juices flowing.

Share your lists.

While creating your lists, don’t forget that you can share any public list via Facebook, Twitter, or email by clicking on any of the icons below the “add” button.

Create lists on-the-go.

Lystee for iPhone is now in the App Store. This free app lets you create and manage lists on-the-go wherever inspiration strikes.

Have a list suggestion?

Shoot us an email at 8byte8@gmail.com with your holiday list suggestion and you may see it featured on the homepage!

Happy List Making,
- The Lystee Team

Posted in Lystee | Tagged , , | Leave a comment