Pebble: first impressions

pebble_image

Some time back in April of 2012 someone on Twitter linked to this Kickstarter campaign to raise funds to build a very geeky watch. The idea was interesting to me. I love my android phone, but it’s in my pocket all day. The idea of getting texts on my wrist while driving, working, and woodworking was intriguing. Not all messages require me to pull out my phone, unlock it, and view what was up. So I supported it.

Here we are, not that far from a year later, and I’ve gotten a copy of the watch. I’ve been using it for the past few days and wanted to put out there my feedback. There’s a bit out there already, but hey, my turn!

The Good

Does it work like it’s supposed to? Definitely! I’ve been getting texts and calendar notifications on the watch and it’s been really nice. Simple texts like the one from my wife “on my way home” have been nice to just press a button and dismiss. Calendar notifications as well. I’m up getting a drink and a meeting notice buzzes my wrist with a note what’s coming up. It’s much nicer than pulling out the phone. The one downside is that when you do pull your phone out there’s a bunch of notifications to dismiss and you want to make sure you got them all.

As for fit, I need to get a replacement wrist band, but it’s not that bad. I was worried about the size of the face, but I’ve not found that it’s actually not that large. There are much larger watches out there by far. I do find that it rotates around and ends up on the bone every once in a while, but I’m hoping a better watch band will help with that. I’d rather they put the $$ into the device and less into meeting everyone’s private feelings about what makes a great watch band, so no complaints.

Battery life isn’t really tested yet. I charged it when I first got it and I’m on day 3. This includes leaving it overnight hooked up to my phone which I should probably stop I guess. My phone battery seems ok as well. It’s hard to judge as I’ve got a nearly 1yr old Galaxy Nexus with a battery that needs replacement currently.

The Potential

I’m not going to go down the ‘bad’ road here. This is a new product, just released, and it’s getting updates so let’s just concentrate on what could be better.

The first thing is the navigation. It came out during the initial demos. The nav menu is setup in a way that needs love. If I have to have watch faces on there as full app status, then I should be able to remove ones I don’t use so that navigation is less painful. Honestly, watchfaces need a sub nav. Settings already has this, so the concept should be easy to implement.

Along those lines, back from the home menu should activate the watch face. I once changed watch faces because I was in the settings and waiting for the home nav to timeout back to the watch face. In that time I moved in my wrist in a way that activated a new watch face on accident. Doh!

Next up, we really really need the sdk. Currently, there’s just a limited set of uses. It’s great for texts/calender notifications, but there’s so much more that could be possible. Imagine a pomodoro app for the time management geeks, or hooking up the Field Trip app into notifications as you walk around. There’s a lot of potential and the sdk needs to come out to enable a lot of it.

It really needs a battery indicator somehow. I’d really settle for a number value in the settings/about area. If I’m going to trust this as my watch I need to have an idea when I leave the house if it’s going to make it or not. If it’s meant to charge once a week, I’m not going to have a full recollection of the last time I put it on the charger. Was that Sunday? or maybe it was Saturday? I don’t think it needs to be too prominent though.

The final thing is more a nitpick. I listen to Audible a lot on my phone. While doing the dishes, cleaning the house, making dinner, all the time. So I really love the idea of using my watch to start/stop vs using my phone itself as it sits in my pocket. However, the integration there isn’t perfect. If I’m playing a book and use the music app to pause, it will pause my book, but starts the Google Music application. Then another pause will stop that music as well. However, I can’t then start back up again. Somehow, my bluetooth speaker and headphones talk to Android in a way that it can start/stop any audio application. It just starts the last thing playing, podcasts in DogCatcher, books in Audible, or music in Google Music. I really want the pebble music app to work like that as well.

Conclusion

I really like the Pebble, but a big part of my like is seeing the potential. I think they made a great decision to not try to make the watch the computer and use the phone for that. I hope they don’t ever stray from that decision. I also really like how Android has made things much nicer/easier for them. I can’t wait to see what other apps can do with a Pebble intent that would allow exposing some UX away from the device itself. If you’re a dev I’ll finish up with a few wishlist items for people to work on:

  • Google Authenticator app on the watch to show the number generated
  • Google now card info: weather, flight upcoming, upcoming meeting
  • Syncing alarms from device to watch
  • Twitter replies/DM notifications
  • Field Trip app info when you pass by a specific place
  • Guidebook integration with next talk/room information

Bookie 0.4: one week retrospective

Phew, that was a whirlwind of a week. Just over one week ago I finally released Bookie 0.4 and published the blog post to reddit as an announcement. This introduced signups and I was eager to see if there was real interest in the project now that users could sign up and try things out.

By the numbers

Traffic definitely came.

  • The blog post picked up 800 visits over the two days in the weekend.
  • https://bmark.us grabbed 360 unique new visitors.
  • We went from 58 to 126 activated user accounts.
  • Those users brought us to over 26,000 bookmarks stored in the site.

Complications

Of course, any swarm of new users finds the holes in the system and Bookie was no different. There were a few issues. First, the celery task that sends out emails on signup wasn’t running because the email config wasn’t setup right. This was a pretty quick fix. Next, the import system wasn’t filling out the path for uploaded files correctly. This one was another pretty easy fix, but I managed imports manually until I got the fix deployed.

The big thing was that, for probably the first time, all three moving parts to the system were trying to store bookmarks at once. The celery backend, the web UI, and a cron script that looks for new bookmarks without readable content and fetches it for storing. All of these hit the Whoosh fulltext index and caused locking issues that broke both imports and saving new bookmarks from the webui until I figured out the issue and just reset the fulltext index.

It was pretty bad timing as I could see users trying to add test bookmarks via the web interface. Google realtime analytics is pretty entrancing to watch. In the end I had to run to the Whoosh docs and change things up to use the async writer instead of the default locking mechanism. This got things running again, but the problem now is that I had to remove all the existing fulltext index. I’ve still got to finish a background job that will walk through all bookmarks and index them.

At some point I might need to remove the fulltext indexing from the current SqlAlchemy event hooks, but as purely background celery jobs that I can control from one place easier. This would remove the lock at all from the cron job and the web ui.

Disappointments

While I could see the charts showing traffic, it was tough because it was pretty invisible traffic. There were only three new users into the #bookie irc channel, and only a few people left comments in the reddit thread. No one left a comment on the blog post. Both my Twitter account and the Bookie accountgained fewer than 5 new followers. While the repository was starred many times, only two forks were created.

Going forward

There are a few new users active over the last week, and I’ve gotten a pair of pull requests. While the saving of new bookmarks was broken for a lot longer than I’d have liked, the site never went down. Imports were done in a semi-reasonable time frame. All of this felt pretty great and is encouraging for future work. I still need to finish fixing up the readable parsing. It’s the big selling point of Bookie, and the fact that fulltext search and readable parsed content for all bookmarks isn’t there is frustrating.

Here’s looking forward to great work and a more popular release announcement for Bookie 0.5.

Bookie 0.4 released into the wild!

Bookie is a Python based open source bookmark managing web application that includes content archiving, a Chrome extension, and much more.

Phew, that took a lot longer than expected. I’ve tagged Bookie 0.4 and the live site is updated to run it.

This brings a ton of work on getting an updated webui with some client side MVC, an API, Celery job running backend, some stats, and spin off projects such as breadability and a cli client.

The big thing is that signups are now there as well as a landing page. So hopefully this will spike up interest in new users checking out Bookie.

There are still a ton of long term ideas to work on with Bookie. I’d like to get a ‘reading’ view setup so that you can easily run through the bookmarks you’ve marked `toread`, especially in a mobile view. <3 my N7. I also want to work on getting suggestions for related bookmarks, suggested tags based on content, and other interesting machine learning type problems.

If you're the type that takes your bookmarks seriously give it a try. If you don't want to run your own instance, sign up to https://bmark.us and try it out there.

You can get an idea of the roadmap we're working off of on the Trello board.

Bookie weekly status report: May 6th 2012

This week was spent on a big side project. I’ve been trying like mad to update the python-readability library and take it over to help use it in the Bookie project space. After spending a ton of time trying to do just this I gave up.

I now present the breadability package. It’s a fresh port from the arc90 readability.js using the knowledge I’ve gained from all the other work and trying to stick to the JS file that’s the original inspiration.

I’ve got a bunch more work to do to add tests, get it in the build server, etc.

If you’ve been using one of the other dozen ports out there give this a shot. There’s work to be done, but I’d love to get some real work use in there, let me know what sites don’t work well, etc.

Weekly Status Report: April 29th

More hacking! Spent a big part of the week working on my Penguicon presentation so few commits.

Bookie Parser

  • Tweaked the readable view with some nice CSS, dark background, favicon support, etc. Much nicer to read article with it now.
  • Got the tests running on the TravisCI service.
  • Updated the API to fill out and support all the bits of data I need for this to replace my readable parsing on the main Bookie project.
  • Some refactoring and cleaning up duplicate code.

Bookie

The big thing here was to start up some JS to use the Bookie Parser api in order to load the readable content of a website as you’re bookmarking it from the edit page. In this way, users of the bookmarklet will have a better experience as they can now see their article, but it’s shown in cleaned up readable form. I need to clean it up and catch some edge/error cases, but it’s a start. Once it’s solid we can then use that content to store the page content and have immediate readable results instead of waiting for the next cron job to run in the background.

Bookie Weekly Update: April 22nd 2012

Another week, another few lines of code, and yay for two weeks in a row!

Bookie

Not a ton here, just some CSS updates and updating the backup script for pulling the INI correctly.

Bookie Parser

I spent some time cleaning up the CSS. I did some research on the most readable fonts for screens and surprisingly, it seems that sans serif wins on digital displays. So I updated the CSS and combined with some work on the Bookie main CSS files to make the readable pages a bit nicer. I’ve still got some more cleanup to do, but it reads a bit nicer now.

I also fixed the html generated to not have the empty body tag. It was due to the way the readable parsing library was giving me a full html document of content. See the updates over there for some bigger updates.

Finally, I added a form on the main page so you can try it out on a url just by entering it. So if you’re just curious what it does, go try it out!

Bookie Api

Just added a ping command. It should help make sure that the configuration is correct for new users. It’s also a nice start to a non-admin specific api command. A little bit of cleanup aside from that, but nothing major.

readability_lxml

Currently, Bookie uses a library called decruft for parsing html pages for the actual important article content. The bookie_parser project is using a different fork of that called readability_lxml. The author is a bit open to merging changes in and actually says she’s in ‘maintenance mode’. Since I kind of want a really decent library for this, it’s an important feature, I started hacking on it. In the process, this is where my week of hacking went.

First I updated it to allow me to get back only a partial html document vs an entire <html> doc. I then fixed some bugs, started cleaning up the code (adding tests, making the command line client all nice and argepare’y) etc. In the process I noticed that there’s a big branch in Github that adds a ton of things like multiple page document support and such. I’ve started to try to pull his branch into my work and the origin author’s code. It’s a LOT of git cherry-pick and really a pain since I want to clean up the code as I go. Unfortunately, this just means that Git gets confused on future merges since the code’s changed between commits. Ugh!

I’m about half way done though and I hope this will leave us with one solid library to do this parsing. I’m hoping to kind of take over stewardship of the library as I complete this work. It should hopefully make Bookie and bookie_parser all the more awesome.

The coming week

I’m giving a talk on the YUI JavaScript library at Penguicon. This means my
hacking time will be a bit less since I’ve got a presentation to prepare for. Next week’s status report might be a bit light and boring, but hey, maybe I’ll scrounge up some more beta users of Bookie while at the conference.

Bookie Weekly Status Report Returns! – April 15 2012

Ok, I’m overdue for a ‘weekly’ status report. I’m going to try to kick this back into gear as it helps you out there track things and me feel like I’m moving forward by writing down all the little things I’ve done over the last bit.

Trello board to keep up to date: https://trello.com/board/bookie/4f18c1ac96c79ec27105f228

New Projects

In an effort to add some features to Bookie I’ve ended up starting two new repos of code meant to interact with Bookie.

  1. Bookie Parser

This is meant to start taking over the work of reading the page content and readable parsing the important content out. It was a chance to play with Tornado and Heroku. This also means that in the future I’ll be able to scale out the readable processing serperatly from the main Bookie website and host. It’s pretty bare bones right now and doesn’t directly talk to Bookie, but I’ll look at adding that integration soon as the API stabilizes and I get more tests going in it.

So far the Heroku bit has been pretty awesome. I have to deal with the fact that the app gets shut down and has to restart on first request, but hopefully that gets better as traffic and use picks up. You can tinker with it at http://readable.bmark.us

  1. Bookie Api

I’ve been wanting to start up a command line client for some of the Bookie work. The big thing is that I need tools to help manage invites and such. So it’s currently very admin centric, but eventually I’d like to get this into a ncurses cool command line interface to pull up recent bookmarks and even do some quick searches via the API. Aren’t API’s cool. This will also contain the reference Python API implementations so we’ll have two implementations soon. One in JS and one in Python.

I’ve got a beta version (which is really an alpha) up on PyPi so you can

$ pip install bookie_api
$ bookie ping

Build baby build

I spent some quality time with http://build.bmark.us to get the JS tests running via grover and phantomjs and that’s awesome. I also added the new projects into the builder as well. So, while I don’t have all the tests I need, at least now the ones I do have run consistantly.

Other little tweaks

  • Prettied up the new user invite email and landing page
  • Fixed a bug with dupe tags in the tagcontroller
  • Added more icons from the fontawesome set to pretty up the ui, especially the account page.
  • Lots of changes to the make/build steps for JS and CSS including actually doing the pyscss transition.
  • Everything is now on the final stable release of YUI 3.5. It’s been a good ride through the development releases.

Upcoming events

I’ll be giving a talk at Penguicon on using YUI for JS app development. If you’re in the area stop by. This is Friday April 27th, at 6pm. Then on Saturday I’ve got a Bookie mini-sprint going on. I’ll probably be hacking most of the weekend. Feel free to stop by and check things out.