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
In an effort to add some features to Bookie I’ve ended up starting two new repos of code meant to interact with Bookie.
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
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.
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.
Well, with all the great stuff going on with Bookie, I’ve gotten a bit buried in some big changes. The background processing and importing updates are going to take a bit to get right.
This means, there’s a great chance for others to hack up the little tweaks that we need to really add some polish to Bookie. So below I’ve listed a few ideas that should be pretty simple things to add, but with a really good positive and visible effect on the site.
Add notification that user has invites
Now that invites are there, we should highlight a user’s account navigation link to let them know they have invites available. I’ll periodically add them to the system, and we don’t want users to have to go to their account page each time to see they’ve got invites. I think a simple adding of one of the envelope/message type icons from our font-icon set would be perfect, with some sort of hover message to start. We might also want to highlight the block in their account page so it stands out that the invites are available.
Flash message system.
We want to be able to let users know things have happened successfully after doing something that redirected them. Imports are going to be doing this, saving/updating bookmarks, etc. It’d be nice to have a consistent type of ui to drop flash messages in and them to show after a redirect.
Show new user message if self bookmarks page has no results
When a new users starts up and logs in, they default to their own page of bookmarks…which is going to be empty. So we should detect this in our JS code that fetches the results and displays a set of default content with links to things like importing instructions, where to get the chrome extensions, and other handy new user tips.
Some of this might also be nice to use for the email that a new user gets when they’ve been invited to Bookie.
Add firefox bookmark importer
Ok, so this one is a bit more involved, but really, it’s a single class and a couple of Python methods. The hard part is reading in and figuring out how to match bookmarks to tags in Firefox’s JSON dump of bookmarks. Once we get the Firefox extension rolling, it’ll be great to have a good import system for the browser as well.
Well, here are four things I’d love to see happen in the near future to help make the experience a level nicer for everyone. If you’re interested in all or have any questions, ping me in #bookie in irc or shoot me a comment below. I’d be happy to help walk anyone through these or any other ideas you might have.
So PyCon sprints, what can you say? You go, you hack…and hack…and some some point you take a break for a beverage…and hack some more.
Last year I got the real movement behind Bookie. So this really marks the one year anniversary for Bookie. I’ve had it as a side project to hack on in my spare time for the last whole year. In that time, honestly it’s not crazy different from where it started. However, it’s gone through multiple JS rewrites, two different UI designs, and a whole lot more. I’ve really learned a lot about development, testing, and making some hard choices over the last year. I hope by this time next year I’ll have announced Bookie on some big site (reddit/hacker news?) and survived.
This sprint though wasn’t the time. So what did I get done?
Bookie got improvements
- Better JS tests
- Better PY tests
- Start of HTML5 history
- Invite system
- Threaded content fetcher
- Start of celery background runner
First, I started out by working on getting the html5 history stuff going. It’s not perfect yet, but it’s started and I really realized I needed to have a better way to do JS tests, so…
Next I redid the JS tests. I don’t want to have to fire up the application in order to run my JS tests. I also don’t want to have to hit the database and such. This means I had to change the API tests. Rather than making real requests/responses, I test that the classes build the right type of requests. I verify the url, data payload, etc are correct.
Once the JS tests were redone, I realized that I hated how I had yXXX.js as the filenames and redid those as well. While I was cleaning up I dumped a bunch of old code we no longer needed. Basically tons of gardening cleaning out the weeds.
With that out of the way, the next day of sprints was all about getting an invite system underway. I originally wanted to do a throttled signup process, so anyone could sign up, but then I realized that really, invites will work better. The people using Bookie now will know who’d be interested in testing and if someone really wants to get in, they’ll contact me in some fashion.
With that up, I got to spend the next day fixing bugs in everything. Wheeee! What was cool was that I managed to get a few people at the sprints curious about Bookie and testing things out. Nothing exposes bugs like new users. During this process I spent some time cleaning house on the Python side of things and making tests easier to run/write.
Finally, I’ve started work on the background processing using Celery. I’ve got a big hurdle in that, but my cron’d stats processes are working and I’ve almost got imports running as out of process celery children. That should really help with new users. You know at some point they’ll come flooding in right? :-)
Overall, while I didn’t get a ton of new user facing features going, I did a TON of clean up and maintenance. As one person expressed “Wow, there’s a lot more in here than I expected when you said it was a bookmark application”. Bookie has really grown over the last year and she needs me to spend some time giving things some love before moving forward too fast. The sprints really gave me a chance to do that, all while hanging out and chatting with really smart people. What more can I ask for?
What’s that I hear? A Bookie sprint is going to take place. We’ve got a clear mission, to get a Firefox extension going for Bookie. Since all of the rework has been going into the JS driving Bookie, the hope is that we can get a Firefox extension to do everything the Chrome one can do.
We’ll be playing with the newish Firefox Add-On SDK to build it and it should serve as a great run down of the new JS code for everyone involved.
The new project for the Firefox extension is starting up at: https://github.com/mitechie/bookie-firefox
When is this fantastic event you ask? Well 10am-4pm at my place. If you’re not sure where that is, just ask me. You can also participate virtually in #bookie on Freenode.
Firefox extensions not really your thing? That’s ok, I’m sure there will be lots of side hacking going on and with everyone in the same room, we should be able to crank out some great work. Check out the Trello board for ideas on things that need to happen before the Bookie 0.4 release is out. Mobile-izing the view, updating docs, adding features to the Chrome extension, are just a few of the fun things to hack on.
Well that took a while. Back in September I opened a branch of Bookie to try to do some cool Backbone driven UI stuff. I decided that maintaining a separate mobile UI was going to kill me. So I needed something I could tweak to make mobile friendly without dual sites. Between a JS drive UI and responsive design techniques for the CSS, I should be able to make things not suck so much.
So finally, after waaaay to many months I feel like the site is moving forward. An updated UI that needs some responsive love. An API that need some more methods, logging, etc. Phew.
There are a number of bugs and tweaks that still need working on. I’m going through them and to help be transparent I’ve started a public Trello board for Bookie so that everyone can see exactly what I’m in the process of, what’s next on the board, etc. Hey, if you see something on the board that’s on your hot button list, feel free to take it and run with it.
Patches welcome :-)
Phew, well one day down. I dove head first into Canonical and Launchpad today. It’s a bit amazing the amount of information and parts there are to everything. Everyone welcoming me throughout the day was great, but my head is still spinning a bit for sure.
I managed to get a nice starter walk-through of Launchpad and find my way through a superficial bugfix and merge request. So hey, that wasn’t so bad heh. It’s kind of exciting to throw out all my usual tools I’ve been mastering for a while and start over. Make files, zpt files, ZCA, and YUI run the show. Time to see how people get things done without Fabric, Mako, and SqlAlchemy.