OMG!  I have no idea you guys even have this!!  Do you, by any chance, have the 
IRC network and room info?  I would love to join you guys next time!




________________________________
From: Ikai L (Google) <ika...@google.com>
To: google-appengine@googlegroups.com
Sent: Thu, August 19, 2010 11:25:25 AM
Subject: [google-appengine] Google App Engine IRC Office hours chat transcript 
August 19, 2010


Hey everyone, 

Just wanted to post the transcript for our IRC office hours. We're thinking 
about reducing the chat time to once a month due to the relatively low-level of 
activity. Would it be more useful if we scheduled IRC office hours for a week 
after each release?

-----

Notable questions:

- What is multi-tenancy?

Multitenancy is the ability to create namespaces for your data in the 
datastore, 
memcache and task queues. Developers will be able to create virtual partitions 
in their application as needed. This can apply to an application with multiple 
domains, multiple customers, and so forth.

- How do you get the namespace of a model instance in Python?

.key().namespace()

- Can you use namespaces to separate models by account owners? (replace "where 
account = :1") 

Yes

- Can you globally change a namespace name?

No

- Will App Engine allow users to manage/purchase more memory in the future?

Possibly, we are exploring ways in which we can do this.


[08:59am] ikai_google: All right everybody, let's kick off today's office hours 
session
[08:59am] ikai_google: there are a few Googlers in hiding here
[08:59am] nickjohnson: Evening all
[08:59am] ikai_google: you all know me, I lurk here much of the time
[09:00am] moraes: i knew it!!!11
[09:00am] ikai_google: there's also nickjohnson
[09:00am] ikai_google: there are a few whom I suspect are googlers based on 
their handles
[09:00am] ikai_google: but I'm not going to call them out =)
[09:01am] • moraes summons the hidding spirits
[09:01am] morais78 joined the chat room.
[09:02am] ikai_google: okay, so ... everyone has seen the 1.3.6 release, right?
[09:02am] ikai_google: 
http://googleappengine.blogspot.com/2010/08/multi-tenancy-support-high-performance_17.html

[09:02am] nickjohnson: Yaay!
[09:02am] ikai_google: there's LOTS of good stuff here
[09:02am] moraes: you know, i didn't even know what "Multi-tenancy" meant but i 
know that i was doing it hardcoded
[09:02am] perlmonkey2: anything in the gae pipeline thats going to make a 
splash?
[09:02am] nickjohnson: moraes: Are you intending to switch?
[09:02am] moraes: nickjohnson, yes, now
[09:02am] ikai_google: perlmonkey2: lots
[09:03am] ikai_google: perlmonkey2: 1.3.6 is a pretty big release as it is
[09:03am] slynch_google joined the chat room.
[09:03am] moraes: nickjohnson, i created run_in_namespace(), the cousing of 
run_in_transaction(): http://paste.pocoo.org/show/251604/
[09:03am] moraes: hehe
[09:04am] moraes: *cousin
[09:04am] psykidellic: So what would be the best option to stream mp3 (stored 
in 
GAE) over RTMP?
[09:04am] perlmonkey2: ikai_google just saw your post. new releases are always 
exciting
[09:04am] johnlockwood joined the chat room.
[09:04am] nickjohnson: moraes: Oh, nice.
[09:05am] ikai_google: psykidellic: I'm not an expert on RTMP but #2 looks like 
the way to go http://en.wikipedia.org/wiki/Real_Time_Messaging_Protocol
[09:05am] morais78: "Custom Error Pages": thank you appengine team :)
[09:06am] psykidellic: So I guess I have to run an external RTMP server and 
configure it to use the GAE datastore?
[09:06am] ikai_google: psykidellic: Again, not an expert. Try it out and let us 
know, I don't know how this works or even if it *will* work
[09:06am] mbw: psykidellic: if you are interested in RTMP in python, talk to 
Nick Joyce.  He is the author of PyAMF and RTMPy ... he is njoyce on this chan
[09:06am] psykidellic: Okay.
[09:06am] ikai_google: hey mike!
[09:06am] nickjohnson: psykidellic: That's probably the best option. RTMP over 
HTTP _might_ work, but you'd have to implement your own RTMP stack in App Engine
[09:06am] mbw: hi ikai
[09:06am] moraes: nickjohnson, can you get from an entity its namespace?
[09:06am] ikai_google: in case anyone is wondering, mbw is from WebFilings: 
http://googleappengine.blogspot.com/2010/08/webfilings-streamlines-sec-reporting.html

[09:07am] psykidellic: Yeah, I have seen: http://rtmpy.org/ - it uses Twisted 
so 
wont run on GAE.
[09:07am] ikai_google: moraes: You might be able to set the namespace, then 
just 
do a "get all entities"
[09:07am] ikai_google: moraes: I'm not sure what you're asking?
[09:07am] mbw: psykidellic:  Nick actually works with Webfilings now, but he is 
still actively working on PyAMF and RTMPy.  WF hasn't used rtmp at all, but we 
have made large contributions to the GAE adapter for PyAMF
[09:07am] nickjohnson: moraes: Yes, it's part of the key
[09:08am] nickjohnson: .key().namespace(), I suspect
[09:08am] psykidellic: mbw: Aha, nice. I will look around for him up here.
[09:08am] moraes: nickjohnson, oh ok, was looking for this. ikai_google, that ^
[09:08am] psykidellic: mbw: From all the option, it seems the easiest 
(considering I am not much RTMP expert) would be run Wowza on EC2 and configure 
it to use GAE (though I am not sure if thats even possible)
[09:08am] moraes: key().namespace() indeed, i missed that
[09:09am] carlosm left the chat room. (Remote host closed the connection)
[09:10am] mbw: psykidellic: an external setup would probably work. Nick would 
know a lot more.  he is in Australia so his timezone is wacky.  Ill ping him 
and 
let him know you were curious about it.
[09:11am] psykidellic: mbw: Oh, that would be nice :) Thanks.
[09:11am] chevelle_ joined the chat room.
[09:11am] Wesley_Google joined the chat room.
[09:11am] psykidellic: I wonder how hard it will be to implement the stack on 
GAE?
[09:12am] ph43thon: only one way to find out
[09:12am] ph43thon: :)
[09:12am] psykidellic: Heh
[09:12am] mbw: ikai_google: what did you think of the blog post?  Some of it 
sounded a bit funny to me (i didnt write it), but overall a good thing for both 
webfilings and gae I think.
[09:12am] nickjohnson: I suspect you'll be able to reuse some of the message 
parsing infrastructure, but you'll have to write your own connectors.
[09:12am] ikai_google: ikai_google: I wish we had 10x more like you guys. 
seriously. hahaha
[09:13am] ikai_google: DOH
[09:13am] ikai_google: replied to myself
[09:13am] ikai_google: that was meant to go to mbw
[09:13am] ikai_google: LOL LOL what a bad one to address to myself
[09:13am] Wesley_Google: lolz
[09:13am] slynch_google: hahahahaha
[09:13am] moraes: moraes: haha
[09:13am] ph43thon: seems like  a Freudian slip
[09:13am] ph43thon: :)
[09:13am] Wesley_Google: means it's too early in the morning for ikai
[09:13am] ikai_google: well, I'mm sending out the recap so that'll be 
conveniently missing
[09:13am] jwbnyc joined the chat room.
[09:14am] ksachdeva: In my gae models I have been putting the name/ref of 
domain 
name so as to be able to find the entities belonging to a particular gapps 
domain name. Is the namespace support eliminate such a need now ?
[09:14am] derferman joined the chat room.
[09:14am] nickjohnson: ksachdeva: Yes.
[09:14am] mbw: We will be able to get rid of  "where account=:1"  everywhere!
[09:15am] nickjohnson: If you want to convert your old entities, you'll need to 
get them, clone them into new entities, and store them again. The Mapper API 
would be a good match for that.
[09:15am] nickjohnson: mbw: You mean you didn't have an RPC hook to do that for 
you? :)
[09:15am] mbw: nickjohnson: that migration is going to be scary and tricky for 
us
[09:15am] nickjohnson: mbw: Yes, I can imagine you'd want to take particular 
care.
[09:15am] nickjohnson: You could do something like this:
[09:15am] nickjohnson: 1) Make new code write to both old and new schemes
[09:16am] derferman left the chat room. (Read error: Connection reset by peer)
[09:16am] nickjohnson: 2) Run the mapreduce to copy everything to the new 
scheme, leaving the 'account' property in
[09:16am] mbw: 1) wont perform very well
[09:16am] derferman joined the chat room.
[09:16am] nickjohnson: 3) Add the namespace hook
[09:16am] nickjohnson: 4) Remove 'account=' from old code
[09:16am] ph43thon: Can you create namespaces inside namespaces?
[09:16am] mbw: we will mapreduce and write new ones in a migration, we will 
most 
likely do it late at night on a weekend when no customers are using it.. 
shutdown the app during
[09:16am] nickjohnson: No, it won't, but it wouldn't have to be for long
[09:17am] nickjohnson: ph43thon: No, but you can set any namespace you want, so 
you could build a namespace string like "foo:bar"
[09:17am] mbw: but the migration wont be easy, not everything has account set 
on 
it, the model is not that simple :D
[09:17am] nickjohnson: mbw: That's a more straightforward option, if you can do 
it.
[09:17am] ph43thon: hmm.. can you globally change a namespace name?
[09:17am] ph43thon: like "foo:bar" --> "bar"
[09:17am] ikai_google: ph43thon: Namespaces are keys, I believe, so no
[09:17am] ikai_google: keys cannot change
[09:17am] jwbnyc: A question on deployment - I'd like to run a continuous 
integration with automated deployment in the cloud. Anyone know of a tool that 
can be run from GAE Cron that will pull from repository and deploy a GAE app?
[09:17am] nickjohnson: ph43thon: No, only by get/clone/set across all the 
entities that use it.
[09:17am] ikai_google: it's a different entity altogether
[09:17am] nickjohnson: mbw: You'll also need to make sure you handle any 
reference properties.
[09:18am] ph43thon: okay thanks.
[09:18am] nickjohnson: For that matter, you may choose to continue as you are, 
if you consider the disadvantages of your current approach worth it
[09:18am] ikai_google: jwbnyc: I don't know of one, but other folks have used 
local tools to pull from a repo and do deploys using the --passin flag for 
password
[09:18am] moraes: the "Multi-tenancy" name is not fair. i first looked at 
"Multi-tenancy" and thought, hmm, let's see the next one, and later realized 
this is a huge one :P
[09:19am] nickjohnson: moraes: Perhaps we should've listed it as "OMG, Awesome 
multitenancy!!!111"
[09:19am] ph43thon: are there any writeups on the innerworkings of namespaces? 
 or is it pretty much that it's just a prepended value to the front of the full 
gae keyname?
[09:19am] moraes: "namespaced data!!!1!"
[09:19am] ikai_google: ph43thon: No writeups yet, it's just released
[09:19am] ikai_google: ph43thon: Give us a bit, I'm sure Nick is already 
working 
on something =P
[09:20am] nickjohnson: ph43thon: They become part of the key, as you say, and 
the datastore has safeguards to make sure you can only get/query/put the 
current 
namespace.
[09:20am] nickjohnson: In principle it's fairly simple.
[09:20am] psykidellic: Yeah, I have never used such things before so I am in a 
bind, what problem exactly gets solved by namespace :)
[09:20am] ikai_google: ph43thon: The big win here is queries, whereas before it 
would have been harder, especially if you implemented it yourself
[09:20am] mbw: exactly... which will reduce indexes
[09:21am] moraes: psykidellic, user1.foo.appspot.com and user2.foo.appspot.com 
---> set namespaces for user1 and user2 and have separate data without api 
hooks 
or extra filters in queries
[09:21am] mbw: also, we will setup certain kinds to be in the default namespace 
while most others will use current namespace as set by a middleware related to 
session management/security... will be much more simple and harder for us to 
make a mistake and leak data across accounts
[09:22am] ph43thon: ikai: welll, i can also see a lot of really great uses.. i 
mean.. you could create something to do snapshots of all your data in your app 
(with namespace="snapshotdate") .. its a good way to allow you to keep Model 
definititions simple and breaking them up into different sets (with namepsaces 
becoming things beyond just clients..) etc
[09:23am] pranny left the chat room. (Quit: Leaving.)
[09:23am] mbw: it will make backup simpler too I assume,  we will be able to 
take an entire customers data and pull it out, into another instance or whatever
[09:24am] ikai_google: ph43thon: I think the problem with snapshots is that you 
need to set a namespace to use the data, so that data is not available unless 
you are in that namespace. To use namespaces like that you're essentially doing 
a doublewrite
[09:24am] chevelle_ left the chat room. (Ping timeout: 240 seconds)
[09:25am] ph43thon: ikai: hmm, yeah, haven't thought out the snapshot thing.. 
it 
think its ridculawesome mainly for making it easier to partition out data 
without needing to add an extra property to a model (and it makes life a lot 
easier if you craft your own key_names for entities)
[09:26am] ikai_google: ph43thon: yep yep yep!
[09:28am] nickjohnson: And as others have pointed out, it eliminates many 
places 
where you'd otherwise need an index because of the namespace property
[09:29am] moraes: the was a long discussion in mailing list of a guy that had 
to 
the multi-tenancy himself
[09:30am] moraes: if he's still around he must be happy :P
[09:30am] rafanunes: I was hoping that channel api would come in that sdk 
version
[09:31am] ikai_google: rafanunes: so were we. stay tuned
[09:31am] mbw: We have enough to do to catch up and use all the new awesomeness 
that the GAE team has released... channel will be another one
[09:31am] ikai_google: rafafunes: in a perfect world, we can release every 
single feature everyone wants with every release and there are no 
scalability/security concerns
[09:31am] ph43thon: hehe.. i noticed the comments on the blog post: 
("multi-tenancy what?.. hey where's Channel Api?")
[09:32am] ikai_google: yeah, it makes me wonder if we should go back to not 
announcing anything
[09:32am] moraes: multi-tenancy is not a sexy name
[09:32am] ikai_google: but I think the lesser of the two evils is teasing 
everyone
[09:33am] ikai_google: moraes: how about ... data sharding
[09:33am] mbw: I like that you guys put out things to play with before release. 
 Gives us a chance to kick the tires and do some planning
[09:33am] moraes: but i am personally very excited about multi-tenancy
[09:33am] nickjohnson: ikai_google: That implies other things.
[09:33am] ikai_google: moraes: maybe there's a very buzzword-y name. nosql 
cloud 
scalable sharding
[09:33am] ph43thon: Do any of you know of any academic institutions or research 
places using GAE in place of other grid computing infrastructures?  i.e. is 
anyone using it for anything big that has to do with back end processing or 
solving big NP-hard stuff?
[09:33am] julian__ left the chat room. (Ping timeout: 276 seconds)
[09:34am] nickjohnson: ph43thon: It's possible, but big backend grunt work jobs 
aren't really App Engine's forte
[09:36am] ph43thon: nickj: well, it seems like the parallelization part is very 
easy to do.. what would be the main reason not to do a big search optimization 
problem on GAE? (versus setting up a big cluster of EC2 instances)
[09:37am] ikai_google: ph43thon: Seems pretty theoretical right now ... build 
it 
and let us know!
[09:37am] ph43thon: ikai: :) working on it
[09:37am] ph43thon: (though, i frequently do pretty dumb things so.. trying to 
figure out just how dumb I may be being.)
[09:39am] derferman left the chat room. (Quit: derferman)
[09:39am] ph43thon: oh.. and by "search optimization", i mean searching through 
a problem space randomly.. trying to seek out an optimal answer to ones 
question.. (not search engine optimization)
[09:40am] slynch_google left the chat room. (Quit: slynch_google)
[09:41am] morais78 left the chat room. (Quit: Page closed)
[09:42am] nickjohnson: .set_request_namespace('tumbleweed')
[09:44am] ph43thon: yeah, people really seem to clam up when the topic isn't 
twittering links back and forth to pictures of Kim Kardashian's bottom..
[09:44am] nickjohnson: You could write an App Engine app for that
[09:44am] nickjohnson: Is kimkardashiansbottom.appspot.com taken?
[09:44am] ph43thon: nickj: working on it too!
[09:44am] nickjohnson: heh.
[09:44am] Wesley_Google: who?
[09:45am] sako joined the chat room.
[09:45am] ph43thon: i'm creating a pso algorithm to randomly analyze all web 
pics of kim kardashians bottom and find the ultimate one
[09:45am] mbw: Is anyone working on addressing memory profiling concerns that 
some GAE users are having?
[09:45am] ph43thon: but.. there are so many.. and i'm looking at all possible 
sets of 5.. this is NP-hard
[09:45am] ph43thon: (so to speak)
[09:46am] Wesley_Google: the issue is that's subjective, and algorithms aren't 
as such...
[09:46am] mbw: I am also wondering if/when the amount of memory available will 
be discussed, changed, or made purchasable
[09:46am] johnlockwood: how do you add to the domain name of an app: 
 user1.myapp.appspot.com, user2.myapp.appspot.com
[09:46am] ikai_google: mbw: that's something we're looking into, but before we 
can do that we need to figure out how to bill for it, how to make it fair, etc
[09:46am] Wesley_Google: mbw> specifically what kinds of memory profiling 
issues 
have you been encountering?
[09:46am] moraes: johnlockwood, you don't need. you just use it
[09:47am] nickjohnson: johnlockwood: That feature is enabled automatically.
[09:47am] Wesley_Google: i think you just check the HOST env var to get the 
hostname? (or something similar)
[09:47am] mbw: Wesley_Google: We see soft memory limit errors more frequently 
when we stress some particular features we have.  We need to figure out what is 
leaking.
[09:48am] jeffr joined the chat room.
[09:48am] johnlockwood: son-of-a-gun
[09:48am] mbw: Wesley_Google: for a majority of our app's services, we don't 
see 
them at all.  It is more related to some task queue tasks, etc
[09:49am] Wesley_Google: mbw> pls cut-n-paste those full stack traces to us... 
it'll really help route it to the right team mbrs
[09:50am] mbw: Wesley_Google: We are not seeing an actual "MemoryError" 
exception.  Just the soft memory limit warning messages in the logs.  The 
requests/tasks seem to complete normally most of the time.
[09:51am] Wesley_Google: mbw> ah.... send those anyway so we can at least 
figure 
out where they're happening...
[09:51am] mbw: Another question.  On some deferred tasks we see  Error code 
203... what is that?
[09:51am] johnlockwood: it doesn't seem to work automatically for custom 
domains, like user1.www.mydomain.com
[09:52am] mbw: we only ever see "Error code 203" on our deferred queue tasks
[09:52am] xjrn left the chat room. (Ping timeout: 255 seconds)
[09:53am] mbw: some have throttle_code=1
[09:53am] xjrn joined the chat room.
[09:54am] moraes: johnlockwood, those you need to map in dns
[09:54am] Wesley_Google: mbw> is that an HTTP 203 or more like an app engine 
error code?
[09:55am] moraes: johnlockwood, *.www.domain.com CNAME ghs.google.com or 
something
[09:55am] johnlockwood: moraes:  thanks
[09:55am] mbw: Wesley_Google: HTTP 500, log level warning,  "A serious problem 
was encountered with the process that handled this request, causing it to exit. 
This is likely to cause a new process to be used for the next request to your 
application. If you see this message frequently, you should contact the App 
Engine team. (Error code 203)"
[09:56am] Bimmel joined the chat room.
[09:56am] mbw: the calls seem to last various times,  some 10s, up to about 20s
[09:58am] mbw: also, I see the same error message only with "(Error code 201)" 
 and before that it mentions the soft memory limit was exceeded
[10:00am] mbw: Wesley_Google: should I just send off a report of this stuff to 
Fred or someone else?
[10:00am] ksuFreeflier joined the chat room.
[10:00am] Wesley_Google: i just pinged the team, but you can send it to me to 
fwd to them. fred may not be the only one that works in this area... it's 
better 
to spread the love :-)
[10:01am] mbw: you guys can poke around our logs right?
[10:01am] ikai_google: alright guys, I'm going to go ahead and wrap up these 
office hours
[10:01am] nickjohnson: mbw: Only if we have a good reason.
[10:01am] ikai_google: thanks for coming out
[10:01am] ikai_google: we'll see you in the groups. I've got to jump off, but a 
few folks will probably stick around a bit longer

-- 
Ikai Lan 
Developer Programs Engineer, Google App Engine
Blog: http://googleappengine.blogspot.com 
Twitter: http://twitter.com/app_engine
Reddit: http://www.reddit.com/r/appengine

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appeng...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



      

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appeng...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.

Reply via email to