Audrey M. Roy

Art, design, Python, JavaScript, and general silliness 

Pulling personal data out of OpenSocial containers and into a standalone website

I've been struggling with the OpenSocial docs and various samples,
trying to find a way to pull my personal data out of my Orkut profile.

First I tried out the OpenSocial Python Client library samples and the
Google Friend Connect Chow Down sample. I didn't fully understand
what was going on, but I saw that I'd need a consumer key & secret.
(I just learned about GFC yesterday and am still trying to figure out
what it can and can't do.)

I created my own gadget.xml, uploaded it to a server, and added it to
my Orkut sandbox profile page. I verified my ownership of gadget.xml
with Google's "Gadget Ownership Verification" tool, at
https://www.google.com/gadgets/directory/verify. That gave me my
Orkut gadget consumer key and secret.

Then, I discovered some interesting info here:
http://sites.google.com/site/oauthgoog/2leggedoauth/2opensocialrestapi
1. Orkut only supports 2-legged OAuth.
2. A 3rd party site containing no gadget needs to use 3-legged OAuth
to retrieve a user's Orkut profile data.

What is 3-legged OAuth? For example: your website has a "Login with
Twitter" link that sends you to Twitter for approval, upon which
Twitter sends you back to your website with an access token.

In contrast, a 2-legged OAuth example: your Orkut (or Hi5, Ning,
MySpace, whatever) gadget requests data from your own personal API
server, for use in the gadget itself. In this case, your gadget uses
a shared secret from the OpenSocial container to sign its requests.

I guess I have 3 options now:
1. Give in and have everything live inside of an Orkut gadget
2. Create an Orkut gadget that pushes my profile data to my server and
then sends me to my website
3. Switch to another OpenSocial container that supports 3-legged OAuth
(if any exist) or to another social media site that has it (Twitter?
maybe Facebook Connect?)

To be continued...

Posted by Audrey M Roy 

Comments [1]

Art: Levee Farms painting by Wayne Thiebaud, and my digital painting inspired by it

Here is a video of my favorite painting (as of now), "Levee Farms" by Wayne Thiebaud.  I visited it four times during my few days in Washington, DC.  In fact, I took a quick coding break from my Twilio app just to see the painting one last time, to take this video.

Ignore the audio of the video of the painting, please.

The second piece (static image) is a digital painting that I made, "Untitled," inspired by Thiebaud's painting.

In "Untitled," the building with the columns is the Smithsonian American Art Museum & National Portrait Gallery.  That is the museum where Thiebaud's painting is currently on display. 

Visiting art museums has taught me a lot about myself and some of the directions tha I hope to take with my art.  I am trying to get away from design and its principles, and from illustration.  I want to focus more on colors, patterns, and raw perception.  I have been exploring synesthesia and optical illusions over the past couple of years, and I hope to take this even further.

The French artist Jean Dubuffet went from painting in the same style as his contemporaries to painting in a raw, primitive way.  He was inspired by the mentally ill and by prisoners.  I actually don't like his paintings at all, but I think his life is interesting.

You may have noticed that the museum building looks like computer graphics did in the 80s and 90s.  The style is very different from the usual Web 2.0ish illustration that I've been doing. 

Also, the colors of "Untitled" are more neon than you'd expect from me.  That's because neon is color to its most extreme.  I like pushing color to its limits, but I've been afraid of going this far because it clashes with current design trends.  But I've realized that design and fine art are separate for a reason.  My favorite pieces of fine art tend to be about exploring and pushing boundaries, where design is about working within constraints in a pleasing way.

This all comes full circle when you step back and see that Wayne Thiebaud is best known for his pop art paintings of cakes and sweets, done in a commercial advertising style.  That is exactly the same direction that I've been taking with my orange illustrations for the past six years.

I really, really can't wait to get back to my art studio to paint with real paint!  I'm pretty sure I'll have some new paintings to show very soon.

Posted by Audrey M Roy 

Comments [0]

Price It By Phone, and the Twilio API

I won the Twilio+AppEngine contest with Price It By Phone, an app that lets you look up Amazon.com book prices by touch-tone phone.  Right now it's up and running at http://price-it.appspot.com.

Screenshot of price-it.appspot.com

Price It By Phone, and the Twilio API

If you try it and run into problems, please let me know!

My interview with Twilio is here

I like the Twilio API a lot.  It's the easiest-to-use API imaginable.  You set up your Twilio phone number with a URL to post to.  Then, when you call the phone number, Twilio sends a POST request to that URL with the caller phone # and the digits entered as parameters. 

They have a Twilio-AppEngine sample among their demo apps.  This is awesome.  As you can see, I'm back to really liking GAE again, a lot.

I'm putting a bit more time into Price-It and hoping to launch v2 soon.  Features that I want to put into it for sure:  support for ISBNs with Xs and any other chars that appear in them, user accounts, verifying your phone # before you're allowed to see your book lookup history, being able to delete your history.  Possible features to be added: integration with Amazon wish list, FB connect. 

Also, I want to make it look web2.0 shiny, with cute illustrations and bright, designed gradients.  Yes, I know that the dark, trippy background doesn't have mass appeal.  Sometimes I make art for the sake of making myself happy :)  View the page's source code to see how it's done.

If you have other feature ideas, I'd be interested in hearing them.

Posted by Audrey M Roy 

Comments [1]

My big secret project with Fuzzy Rainbow

I wish I could post screenshots of the app I'm working on with Fuzzy Rainbow.  But I can't talk too much about it yet.

It's a Python/AppEngine + OpenSocial + JavaScript + jQuery UI app.  All the interaction & graphics are done with pngs and crazy JavaScript tricks because @shazow introduced me to the magic of jQuery & jQuery UI and convinced me that JavaScript could do anything.  Working on Fluffy Puffy Cloud Pets also taught me this to some extent, although I did nothing but draw clouds (and integrate my teammates' code) for that project, and I was skeptical of JS back then.

No canvas, no Flash.  If this turns out to be the wrong approach, I'm not afraid to throw away 2 months of code and rewrite it. 

The app is pretty odd.  Things do funny things.  It's either a game or a tool, depending on the user's perspective.

More pieces are coming down the line.  There will likely be a Pinax-based standalone site centered around the app.  There will also likely be a mobile client (maybe PhoneGap).  And more that I absolutely can't mention.  It's pretty ambitious, but it's just a matter of doing it piece-by-piece and cutting out pieces if needed. 

All the seemingly-scattered hacks & experiments that I've done over the summer are now coming together.  It is much more planned and well-thought-out than it might have appeared.  I am excited that I can say this much & can't wait to reveal more.

Filed under  //   Fuzzy Rainbow   Google App Engine   JavaScript   jQuery   OpenSocial   PhoneGap   Pinax   Python  
Posted by email 

Comments [1]

Falling Clouds

(Here is a poem I wrote the other day while I was sipping tea at a tea house)

Soft falling pillows
Puffs dropping at your feet, and on your feet, but
they drop lightly
Floating is easily forgotten,
    as is disintegration
        it all remains intact (as if to be preserved)
Billowy pillows cover the landscape,
puffs piling on top of puffs,
snowlike clusters
Every patch of ground has a mound
of ethereal softness

Filed under  //   clouds   poetry  
Posted by Audrey M Roy 

Comments [0]

The Extreme Maker's Schedule

Paul Graham wrote an excellent essay called Maker's Schedule, Manager's Schedule, which I've seen and heard referenced several times over the past couple of months.  It's about how programmers, writers, and other creative types need at least half-day blocks of uninterrupted time to work productively, unlike managers and business types.

I've discovered that I work best on a special case of the maker's schedule.  I call it the Extreme Maker's Schedule.  Half-day blocks are not enough for me.  I work most productively in 72- or 96-hour blocks of uninterrupted time. 

On this schedule, I allocate 3-4 day blocks of time to a particular project.  During this time I try to avoid even the smallest disruptions.  I begin by ordering or preparing enough food for the creative period that I don't need to cook, e.g. by baking a lasagna.  I clear my schedule entirely so that I have no meetings or events to attend. 

Even online distractions such as email, Facebook, and Twitter are to be avoided at all costs on this schedule.  If I take a long time to respond to emails, this is why.  A single email can derail my train of thought for the entire evening.

Once the 72- or 96-hour block has begun, I work on nothing but the one particular project.  It usually takes a couple of hours for the excitement and thoughts to start flowing, but once I get to this point, I find myself in a state of unimaginable creativity and productivity.  Knowing that I have nothing else planned but that one project helps.  These periods are often so intense that I end up sleeping in a series of naps, as a result of staying up late and then unintentionally waking up early full of excitement.

While this sounds strange, it's likely that other creative types enjoy this schedule.  It's much like being in college and working on a final project all week, or sprinting all weekend at a developer hackathon. 

Realistically, the Extreme Maker's Schedule is hard to follow in a normal world.  It helps to be self-employed full-time, and to be single without dependents.  It also helps to have a retreat to get away to, whether it's a distraction-free apartment or an out-of-town secret hideaway.

Filed under  //   creativity   flow   Paul Graham   programming   time management  
Posted by Audrey M Roy 

Comments [0]

Jeremiah Teipen & Benjamin S. Jones at Satori Gallery, New York

Earlier this week I had the chance to visit some of the galleries in Manhattan's East Village/Lower East Side.  

My favorite by far was Gallery Satori.  They have a main space and a project space (i.e. a side mini-gallery).  The main space is currently filled with large mixed-media sculptures by Benjamin S. Jones.  I was instantly drawn to these pieces, which look like exploding, radiating architectural models.  One piece has graphic foam arrows flying out of it, and another is like a sea urchin of high-rise and smaller buildings.

In their project space is a series of "found-media" videos by Jeremiah Teipen.  The videos are extravagant collages of bits and pieces of video and animation from the web.  Teppen's biography refers to his pieces of "pure visual gluttony," a description that I thought was vividly perfect.  He takes the most gluttonous parts of the web (e.g. MySpace comment "bling" graphics) and scrolls them across his video pieces.  It is a bit hard to describe.  The videos remind me of Jeff Koons' work.  You really should see them while they're up at Satori if you are in the area.

I like how Gallery Satori shows artwork that teeters on the edge of being too uncomfortably experimental.  In contrast, for the most part the other Lower East Side galleries were either more risk-averse or over the deep end of experimental.  I was also very impressed with the artwork's presentation, in a way that I don't know how to explain.  It just felt right.

 

 

Filed under  //   art galleries   art shows   contemporary art   New York   videos  
Posted by Audrey M Roy 

Comments [0]

An ultimatum for myself to get my book done

I can't bring myself to finish revising my book. It's 95% done, but
the remaining 5% is expanding infinitely. I can't stop making changes
to everything.  When I'm not doing that, I'm procrastinating on social
networks.
 
I've decided to give myself a video ultimatum to force myself to
finish by October 8:

 
October 8 is the day that my JetBlue all-you-can-jet pass expires.
Being on planes a lot has helped a lot, since I tend to pull out my
book instead of my laptop on flights. So I'm making that day my
deadline.

Filed under  //   graphic art   graphic design   illustration   Orange Pulp   oranges   projects   Python   Python Imaging Library   ReportLab   videos   writing  
Posted by email 

Comments [0]

Why you don't see me at geek events like TC50

People on Twitter asked about the lack of girls at TC50.  I can't speak for others, but this is why I myself personally don't attend these kinds of events. 

Note: I probably sound like a loser or an arrogant b*tch.  But this is exactly what goes through my head.  I'm just telling the unfiltered truth, in case it's helpful to any event organizers.  I may delete this post if I get negative comments.

So...why I don't go:

  1. I'm usually too cheap.  Even if it's free, travel costs count
  2. I sometimes feel weird and awkward when I am surrounded by men I've never met
  3. Unless it's got some useful technical content, I'd rather stay in and code.  I need lines of code more than I need valuable contacts
  4. There are a couple of sketchy guys in the tech community whom I'm trying to avoid.  I might get stuck alone with them and have no excuse to run away
  5. It gets annoying to explain (to both boys and girls) that I am a decent coder and have a full-time startup for real
  6. If it's non-technical, I could get the gist of it from Twitter

And I should add that I often don't hear about the good events until it's too late.

I was about to post a list of tech events and conferences that I have paid $$$ to go to, or ones that I hope to attend, but I changed my mind.  I really don't want those guys in #4 to know and show up unexpectedly.

Posted by email 

Comments [2]

What Google App Engine needs to improve, and why I'm [not] moving on [anymore]

Update 9/15:  One of the folks on the GAE team saw this!  First he gave me more apps. Then he sent me another email saying he "just pushed a change live which should fix deployments so that you actually have 250 (instead of the mysterious 100). Please give this a try and let me know!"

This totally changes things.  Wow!

****

I like GAE a lot.  But in the end, it's hard to stick with it for major, time-sensitive projects where you don't have a lot of time to waste on workarounds.  As a developer, you just don't have enough control over your work. 

My biggest troubles:

  • You can't pack up and leave appspot.com.  There is the dev_appserver, which you can use to test locally.  But there's no easy, reliable way to run a GAE server clone on your own box.  Appdrop, a project that tried to address this, was last updated in 2008 and seems to have fallen behind the new GAE SDK releases (I could understand - what a pain to keep updating).  Want to run a GAE clone on EC2?  You can't without a lot of work.
  • Lots of arbitrary limits.  Sure, they were made with good intentions, to improve performance.  But you're bound to run into one trap or another with no way out.  Max # of files in an app, short timeout for processes, max # of IN queries, etc.
  • The local dev server is inadequate for testing.  You need to be able to test your app in an environment identical to your production setup.  I thought I could get away with using one of my 10 appspot apps as a test app, but I was hitting the max 100 deployments/day limit by 4pm and having to wait until midnight for more quota (and the max 250 deployments that they said is untrue, it's really 100).  I had issues with cross-domain requests being treated differently on appspot than on my local server.  When you're working with OpenSocial, you find that different social networks are finnicky about cross-domain requests in different, often surprising ways. 
  • (on Python GAE) If an unsupported library isn't pure Python, you can't use it.  Workarounds for this involve using another server, which is irritating.  This is often inevitable - when you're starting a project, you often don't know what libraries you're going to need.
  • And finally, you can only have 10 apps.  So it's inadequate for even little hobby or test projects.  As someone who experiments a lot, I usually create (and finish) at least 1-2 mini-projects per week.  I've been reusing my appspot apps, but there are ones that I'd like to leave up and running for others to see and use.

I do want to mention that GAE is a really amazing product that just has a few kinks that need to be worked out.  The GAE team has made great outreach efforts in the developer community and has always been helpful.  And GAE so close to being what I've always wanted.

I'll still use GAE every now and then, and I'm likely to move my OpenSocial app back to GAE in the future.  But GAE has too many roadblocks for rapid development.  I was spending more time on workarounds than on my actual app.

If App Engine were open-source, I could run my own clone of the production server somewhere.  I'd be able to get around all the roadblocks and develop my app using their framework and datastore quickly, in a setup basically identical to production, and then I'd be able to come back and optimize it to meet the appspot limitations if I wanted to have their automatic scaling/load balancing.  I'd also love to be able to peek under the covers for my own knowledge.

Alternately, if App Engine would just let me pay to get around all these issues, I'd get my company's credit card out right now.

Filed under  //   Amazon EC2   Google App Engine   OpenSocial   Python  
Posted by email 

Comments [7]