Leah Culver's Blog

Blog
  • Archives
  • Subscribe
  • leahculver.com

TypePad Motion

Today at Six Apart we released Motion, the project that I've been working on for the past year along with Six Apart's open source team.

Motion

Motion is a new microblogging platform that can be used to create community sites.  As a member of a Motion site you can post content such as messages, photos and video and participate in discussions around that content. Check out the Metric, Ryan Star, and Zachary Quinto communities to see how fans are using Motion to keep in touch.

I'm also excited that we have released the Motion code as open source. As a developer you can create your own community site with an unlimited amount of customization. Motion is a Django application with a few underlying Python libraries that interact with TypePad as a datastore (via the TypePad API). Motion also supports OpenID login and the OAuth authentication open protocol.

Since Motion is build on the TypePad API, you can also use the underlying libraries to create some other unique kind of publishing site built on TypePad. The libraries are very modular, so you can pick and choose the pieces you need for your specific project.

You can get started here on our developer site.

For good measure, here are all the links to the libraries on GitHub:

  • batchhttp - Parallel HTTP through MIME multipart encoding.
  • remoteobjects - An object RESTational model.
  • python-typepad-api - A TypePad API client library for Python.
  • typepadapp - A helper Django app for making TypePad applications.
  • typepad-motion - Community microblogging on the TypePad API.

A big thanks to the Motion and TypePad API teams!

Posted on 10/01/2009 at 11:35 PM | Permalink | Comments (11)

I'm totally into CSS

A couple of nights ago, while out with other DjangoCon attendees I exclaimed, "What am I really into right now? I'm totally into CSS." They looked at me as if I had said that I loved the audio quality of cassette tapes.

Yeah, I'm kind of into CSS and it's limited functionality.

I think a common mistake that we programmers make is that we assume that more functionality is always better. Kind of like, "What if someone wants to do x? Then we better provide the ability to do so!" While in reality, nobody is currently doing x and adding x creates an unnecessary rule that will need to be maintained.

The beauty of CSS is that it's so simple and has so few rules. In fact, I don't know how they managed to keep programmers from messing it up for so long.

My pal Jon Rohan passed along this great article about generally discussed features for new versions of CSS. Some of them I could see being very useful (variables, basic math), while others I find a bit too much like that aforementioned x.

Right now I've been finding lots of tools to help with my exploration of web design and CSS. The most useful tool is definitely the "meyerweb reset" stylesheet followed closely by the Firebug Firefox extension and ReCSS bookmarklet.

 

http://imgur.com/hbztw<im

Posted on 09/11/2009 at 06:56 PM | Permalink | Comments (13)

The Real Real-Time Web

Chris Wanstrath gave a great presentation at DjangoCon this week about The Real-Time Web. Since working on a web-based IRC client (yay Leafy!) with Chris and Alex Gaynor, I will whole-heartedly agree that the interesting part of The Real-Time Web is more about the browser than any backend processes.

Check out Chris' slides to get a better idea...

The Real-Time Web (and Other Buzzwords)
View more documents from err.

When I first saw the slide with the orange dude reading RSS on the toilet (around slide 12) I said to Chris,

How did you know I read my feeds on the toilet... using my iPhone... at work... at Six Apart??

Posted on 09/11/2009 at 05:54 PM | Permalink | Comments (3)

New blog on TypePad

With the addition of the new minimalistic Pico blog designs, I finally decided to move my blog from a hosted WordPress install to TypePad. TypePad was an easy choice (not just because I work at Six Apart but) because I really wanted some simple post management tools, a GUI compose, and a nice design without having to do much work.

A few folks have asked about using a hosted blog service as oppose to using my own software, hosted on my own server. Truthfully, I'm just not that interested in writing or maintaining my own blog software at the moment. Maybe some day...

I've also moved this blog to blog.leahculver.com (in case I have some grand plan for leahculver.com some day) and have redirected all my blog links, so as not to break the web.

Posted on 08/25/2009 at 06:39 PM | Permalink | Comments (10)

A is for Ajax and C is for Comet

There's a bit of buzz going around about the "real-time web" lately. The real-time web is about information delivered to the user as soon as it is available. Real-time notifications are exciting because it allows web pages to be more dynamic and seem more alive. These techniques also allow developers to mimic desktop applications, with their immediate user feedback, on the web.

With all the talk about "real-time" it's important to take a step back and evaluate the techniques we use to accomplish these browser feats.

1) Ajax (Wikipedia article) Ajax is the technique where a user action (via a web browser) is able to update information or retrieve additional information from the web server. I won't get into too much detail because Ajax really is everywhere these days. Favorite a tweet, digg a story, move around in Google maps, post a comment on Facebook... these actions are all performed via Ajax. You, the web user, take an action in the browser and the server is notified of what you did - no web page refresh required.

2) Comet (Wikipedia article) Comet is the lesser known of the real-time techniques and can be thought of as the reverse of Ajax (well, actually Comet often uses Ajax, which I'll explain later, but bear with me for now). An event happens that is known to the server and the server notifies the browser, updating the web page that the user is viewing. Again, no page refresh required.

The important difference between Ajax and Comet is where the action originates. With Ajax, the action is taken by the user and with Comet, it's an action from the server. Currently Comet is a popular technique for browser-based chat applications since it allows the server to receive a message from one user and display that message to another user. Some web applications that currently use Comet are Google's GTalk, Meebo's chat, and Facebook chat.

From a technical perspective, Ajax and Comet differ in the expected length of the request. Ajax uses a quick request-response to update or get new information from a server, while Comet typically opens a longer connection to get information as it is available from the server.

So how does Comet actually work?

There are several ways to implement Comet but the most common is called "long-polling". Long-polling means that the browser opens an XMLHttpRequest to the server but instead of expecting a quick response (like Ajax does)  the connection just waits. If the connection gets a response from the server, it returns that to the browser right away. Otherwise after a bit of time the connection dies and the browser sends another request and waits again.

How is long-polling different from just periodically checking with Ajax?

Some web applications, such as 37signal's Campfire chat application, use periodic Ajax (quick) requests to check if there's a new action from the server. The problem with this kind of short-polling is that it's difficult to tune to get the best results. For example, if you check for new stuff on the server every 5 seconds, what happens if a new action appears right after the response returns? Well, your user waits another 5 seconds to see that action. That's okay, but not ideal. Also, a lot of Ajax requests will be hitting your server when there is no data available and may waste more requests than having fewer, longer connections.

What's the future of Comet?

The heart of the internet is communication. The next generation of web applications will not only need to be responsive to one user, but also facilitate speedy communication between many users. The quicker we can chat, message, poke, tweet as well as see and respond to these actions, the better!

For more information on Comet, the Comet Daily blog is a great resource. The most popular library for Comet right now is Orbited. We use Orbited plus Twisted IRC for Leafy Chat, our simple web-based IRC client.

Posted on 07/24/2009 at 07:00 AM | Permalink | Comments (9)

My own server

It seems like a silly thing to write about but I love having my own server.

In the past year I got my own Media Temple Dedicated Virtual server to use for side projects (mainly Baconfile). Since I'm an application developer (and not much of a sysadmin) I never really thought about managing my own web server. Surprisingly, I'd now say that my server is my most fun toy.

It's incredibly fun because I can have an idea for a web site, build it, and get it out on the web... all by myself.

Okay, so I'm sure some of you old-timey web programmers have been doing this forever, but not me. I've always relied on someone else to host my stuff (employers, cloud services, umm...ex-boyfriends) thinking that it was something that I could never manage to do (or really want to do).

Ha! Everything I've needed to know about website management is on the web and available via a quick search. In fact, it appears to be the most documented thing on the web! I like to imagine in the 90s people said "here's my document and here is how you're seeing it on the internet!"

Why bother mentioning this on my blog? I only say this because I know quite a few web developers who don't do their own hosting. I say to you developer friends - do it! It's the best thing I've done all year.

Posted on 07/22/2009 at 07:00 AM | Permalink | Comments (23)

Web Product Guildelines

I've been keeping a gist of web product guidelines for myself. It's pretty much a list of stuff I tell entrepreneurs when they asked me what I've learned from Pownce  (from a product point of view) and also what I try to remind myself when working on new projects. I thought I'd re-post them here for fun. If I'm missing anything, be sure to comment.

http://gist.github.com/132292

I'm very interested in improving my product development skills, but I don't really where to go to learn more. Any suggestions?

Posted on 07/14/2009 at 07:00 AM | Permalink | Comments (8)

Baconfile API

One of the side projects I work on is Baconfile, a web interface for Amazon S3. This weekend I fixed up the (previously semi-functioning) Baconfile API. The API now allows you to not only get data for files and folders, but to post new content to Baconfile. Find out more about the Baconfile API here.

The first real project to be built on the API is Bacondrop, a Mac uploader for Baconfile. Bacondrop is nice and simple - just drag any file over to the Bacondrop app (or dock icon) and the file is instantly uploaded to your Baconfile account. You can download the latest Bacondrop here.

If you're interested in building your own Baconfile app, there's also a nice Python library by joshthecoder on GitHub.

Posted on 07/13/2009 at 07:00 AM | Permalink | Comments (1)

Kings of Code in Amsterdam next week

I'll be heading over to Amsterdam for the Kings of Code conference next week. The conference takes place on Tuesday, but I'll be there for a whole week hanging out and working. No, "working from Amsterdam" isn't a euphemism, I'll actually be working on some stuff for my job at Six Apart.

The speaker lineup for Kings of Code looks really good and I'm excited to get to meet some awesome developers. If you're in Amsterdam for the conference, be sure to say "hi."

Posted on 06/23/2009 at 07:00 AM | Permalink | Comments (3)

Django Dash 2009

The Django Dash is coming up in a couple weekends (May 30-31) and I'm excited to be participating this year. The Django Dash is a contest for creating a new Django-based project in under 48 hours.

Defunkt and I are working on a web IRC client which will certainly be awesome. I didn't get to be part of the dash last year since Pownce was a sponsor and I haven't done any timed hacking for awhile so I'm pretty excited.

Want to join in the dash? Registration is now open.

Posted on 05/19/2009 at 07:00 AM | Permalink | Comments (2)

« Previous | Next »