Search posterous

Search all posts and users. Type a name, type a favorite song title, whatever! See what comes up.
  

More posterous blogs











More recommended blogs »

Here are posterous posts filed under projects...

greg says...

I discovered Google App Engine by accident several months ago when I first looked into building a robot for Google Wave. It was very much a bookmark-and-move-on kind of an introduction.

I eventually did get back to the bookmark and explored GAE some more and have become a huge fan. For starters, it is very much in the spirit of our mission at Sharendipity - providing tools that make it easier for everyone to create custom web applications.

App Engine still requires app creators to know how to program, but it provides an awesome infrastructure for deploying and scaling applications on the web. Without spending a penny, developers get all sorts of goodies including...

  • A data store for easy database creation
  • Built-in user management using standard Google accounts
  • Built-in logging
  • Cron jobs to manage scheduled tasks
  • Task queues to schedule and manage autonomous jobs
  • An application dashboard for analytics and viewing of application data

With a (free) daily quota of 1.3M requests per application, App Engine is a great way to start a new product. As your product grows, you can move into billable services to increase your quotas.

My Experiment


I needed to find an application to build that met the following criteria...

  • Limited amount of new programming since my time is overbooked already.
  • Enough complexity that I could explore App Engine features beyond the "Hello World" tutorial.

So I decided to port an existing service that I had built in grad school - an email distribution list for the Astronomy Picture of the Day (APOD). Previously, this was being hosted using my alumni account at the University of Wisconsin, Madison.

The APOD email service proved to work great because it fit both criteria. There was very little new programming to do since I'd already built it once. And it let me explore several elements of programming within App Engine including...

  • The use of webapp - they're web application framework for templating and handling requests.
  • The creation of tasqueue tasks to throttle outbound emails.
  • The use of the datastore to manage email subscribers.
  • The use of cron jobs to schedule the daily APOD emails.

 

The Hangups


The two challenges up front were learning Python plus the App Engine environment (including the APIs for the various services I needed). But the documentation for both is so thorough that it rarely held me up.

The quirks that actually caused friction were:

  1. The subtleties of the App Engine platform itself that are learned through trial and error.
  2. The non-deterministic nature of its performance.

This latter issue is the one thing that should bring pause to the decision of building out a business on top of the platform. However, I tend to be optimistic about this and assume it will improve as it matures.

In the mean time, however, I found myself actually managing bad performance in App Engine without any optimization of my own code. The code is too simple to be slow! One of the overriding quotas for App Engine is the per minute CPU quota. You have somewhere less than 30 seconds to complete a request. And while you wouldn't want to take anything near that for a web request, it becomes a little constraining for non-web requests like cron jobs and taskqueue jobs.

All of the jobs in the APOD application are small and constrained. Parse HTML, send an email, or loop through a list of email addresses. Yet, the time it takes to execute these changes wildly from day to day.

When the execution time exceeds the quota, you need to be prepared to manage the exception everywhere. When it happens in a taskqueue job, it can be particularly annoying since the task will re-queue itself - even if the meat of the job had already been completed.

After I initially deployed the app, it felt a lot like I was patching holes for a boat that was already in the water. I added more instrumentation and caught more exceptions until I mitigated all of the problems.

The most glaring problem appears to be a problem in the use of the Mail package. Sending email will frequently lead to DeadlineExceededError exceptions. Remote calls in a throttled environment like this should always be asynchronous.

It appears that they've done just this with remote HTTP requests. However, one of the subtle problems I had was the intermittent failure of urlfetch() calls. I've seen as much as 20% of these calls failing with DownloadError exceptions. As a result, I've built-in my own retry mechanism wherever urlfetch is used.

What's Missing


App Engine is awesome in its overall breadth and ease of use. But if I had to come up with a wish list, it would be the following...

  • An asynchronous Mail package
  • Better SDK tools for testing and simulating cron jobs and Mail actions.
  • As high as some of the quotas are, the email rate quota is too low (only 8 emails/minute). There is likely a very real concern about spam bots, but perhaps there could be an authorization process so legitimate applications could get higher quotas.

The App Engine is a great way to quickly explore new web application ideas. With an easy to use SDK, push-button deployment, and a wide array of built-in services, there has never been a better time to be a programmer.

Interested in Astronomy? Sign yourself up to receive the APOD picture each day - http://apodemail.appspot.com!

Filed under: projects

ilsa han says...

My gocco calendar has been one of my favorite projects this past month. I got to create illustrations inspired by some of my favorite Minnesota and upper Midwest landscapes, and then figure out how to print them using my gocco press. I'm excited about how it all turned out. The photos could be better...I promise it looks better in person.
I'm only posting a few photos up here, but the whole calendar is up on ETSY too:
http://www.etsy.com/shop/ilsahan

       
Click here to download:
2010_Gocco_Calendar.zip (2323 KB)

Filed under: projects

missxkaren says...

All crafty-like things are in the huge art box... or at least sitting around it. All the good art deeds are done, next comes Christmas cards. I'm making them... hand making them... so we'll see how that goes. 

I found the sepia / b&w button that I had been looking for on my camera... so I just played around with it. 



This is all my glitter glue that I have... I think some of it is almost empty but I accidentally mixed everything. Until next project, it'll get cleaned out! 

This concludes day 1 of Christmas art festivities. 

Filed under: projects

missxkaren says...

It's beginning to look a lot like Christmas. Got clear "make your own" ornaments from Michaels and I've worked with all of them. Paint, glitter, beads - just art in an ornament. 

This is how the livingroom looks when I attack my arts/crafts bone. 

I've spilled glitter, knocked over paint (hit the table & my blanket) and beads all over the place. Can't wait to see what happens and how bad it is before i clean it up. 

 

Filed under: projects

(download)

(download)

Our friend Laura works in the L&D department where Nicole's going to deliver. Tonight things were slow there at the hospital, so she invited us over for this little treat. Seriously awesome, I'm telling you. Ridiculously incredible.

Later, after Nicole and I got home, we watched last night's episode of Glee. The caliber of this episode was exquisite—spot-on humor followed by fervent candor. Several moments were so gut-wrenchingly emotional, I almost got choked up. But none were more moving than this pair of scenes:

http://www.hulu.com/embed/z4fDSVfqFG66E35W8Zf58Q/783/913


So, when the episode ended, we were immediately compelled to download this cover. As we watched it I wanted to do the same thing for our child.

Honestly, I've been wanting to plan and create something musical to celebrate this child. Eef Barzelay (of Clem Snide) did this with "Find Love," and Jonathan Coulton did this with "You Ruined Everything." I just haven't found that small bit of inspiration to start it yet.

Any tips?

         
Click here to download:
untitled-laxBIcigFIipmDehooAG.zip (3442 KB)

Filed under: Projects

kyungmink says...

After finishing my degree, I've been using Craigslist extensively to search for housing and other things, and spent time figuring out a better way to find what I was looking for. My frustration with the Craigslist led me to start the project that would solve my own (and potentially many other's) problem. I am curious what you think about the redesign concept, whether you like it or not, and if you see yourself become more productive using the tool.

Filed under: Projects

samullen says...

I ran across these really brilliant lamps via engadget this morning. I don't think I'll be buying one, but I might make one or two for my kids. I'll make sure to blog my process if I decide to do this.

Filed under: projects

We went to the doctor on Friday for Nicole's 11 week checkup. The baby's heartbeat was faint, but it was there. I can't help but smile every time I hear it.

Below, I've included the three clips I'm pointing to in the photo. I tried to clean up the sound as best I could, but you will still have to listen close. And yes, that's the doctor talking, too.

Clip 1  
(download)

Clip 2  
(download)

Clip 3  
(download)

And here's the full raw audio, for those that are that interested.

11/13/09 11:36 Am  
(download)

-Kurt

Filed under: Projects

kyungmink says...

Mobile Interface for Mall Walkers

Designing for an iPhone app is always fun because of its simplicity and ubiquity. Having elderly mall walkers as the target user, we determined different pace and health condition as a key problem area of mall walking as a group. Based on that insight, we designed an application to find mall walkers with similar pace or interests to walk together. I also created wireframes, final mockup design, and project website.

Go to website

Filed under: Projects