hi all
i am modelling a unowned one-to-many relationship using list properties.
@Entity
public class User{
String name;
Boolean loggedIn;
@Basic
private ListKey friends;
}
all is good. i can run queries like
query = Select p from PositionUser p where p.friends = :userKey and +
Hi,
I wonder if somebody else has seen this error before. My application has a
Servlet Filter (that sets Namespace) for all urls, and, from time to time,
the Filter receives a null as value for chain parameter from the platform,
so I get a NullPointerException as I try to follow the chain with
Hey
I have an Entity which contains a ListEntity property that stores
child entities. I have found a bug in my app where during concurrent
modification of child entities all of the children in the parent
entities list will be deleted.
Firstly, why does this happen? Surely it'd be better to throw
I've been running an application successfully for some time on the app
engine. During last week I've couple of times tried enabling threadsafe in
my app. It seems to randomly cause issues with retrieving or storing data
with JDO. What I see when I start to get these issues is this (I've
Hi,
When i try to upload more than 1 MB (Around 2 Mb) i get an error
com.google.apphosting.api.ApiProxy$RequestTooLargeException: The request to
API call urlfetch.Fetch() was too large.
at
Yes, we are also getting same problem.
We are updated latest Google app engine 1.5, then if we try to upload the
file more than 1 MB Its throwing the following exception.
com.google.apphosting.api.ApiProxy$RequestTooLargeException: The request to
API call urlfetch.Fetch() was too large.
at
Hi,
creating a ScriptEngine in a servlet like this:
ScriptEngineManager factory = new ScriptEngineManager();
ScriptEngine engine = factory.getEngineByExtension(js);
(or using the String JavaScript instead of js)
does not work, engine is null.
doing: logger.warning(num engines= +
Hey google team, the backends javadoc reference hasn't been uploaded to the
app engine docs area. I just read it locally so it's not a big deal but
thought you should know.
--
You received this message because you are subscribed to the Google Groups
Google App Engine for Java group.
To post
When running a backend, what is the suggested method for something like
this:
while(true){
doSomething();
Thread.sleep(1000);
}
Do you have any tricks to replicate this behavior?
--
You received this message because you are subscribed to the Google Groups
Google App Engine for Java
The latest app engine announcement that most App Engine for Business
functionality would be rolled in to App Engine. Does this mean that all
current developers will have access to the SQL data store or will this just
be for paying customers? If yes then will the access be through JPA or JDBC?
I want to try using backends with java, so I created this xml spec -
which I copied from the appengine docs and added my own name:
backends
backend
namemother/name
classb4/class
instances1/instances
/backend
/backends
I always results in this:
An internal error occurred during:
I am evaluating imagesService.applyTransform() to transform images(from URL)
to specific width/height.
It's documented that PNG is supported. But it seems it doesn't understand
some PNG file.
for example :
Anyone ?
--
You received this message because you are subscribed to the Google Groups
Google App Engine for Java group.
To post to this group, send email to google-appengine-java@googlegroups.com.
To unsubscribe from this group, send email to
google-appengine-java+unsubscr...@googlegroups.com.
Hi,
Don't know if what you do is possible but why don't you just obtain
the data that you need from the other application via simple requests
to servlets delivering the needed data.
By using Java standard object serialization, you can achieve what you
need whatever the object class via a unique
Hi,
Do you have the issue on your dev machine or on productive
infrastructure: I remember having issues with PNGs on my dev machine
but that would work ok on live machines
regards
didier
On May 12, 8:27 pm, Teng Shiu Huang small...@gmail.com wrote:
I am evaluating
sorry , I've found the reason.
(the url is incorrectly toLowerCase)
Sorry to disturb you.
--
You received this message because you are subscribed to the Google Groups
Google App Engine for Java group.
To post to this group, send email to google-appengine-java@googlegroups.com.
To unsubscribe
Hi ya!
On May 12, 1:05 am, Didier Durand durand.did...@gmail.com wrote:
1 of the reasons is that all applications don't run all at the same
version on the gae productive infrastructure. So, google would have to
know which one you are using in order to put it for you in your war
when you
arjan,
There are two sides to the App Engine API: the client and the server. The
client side (appengine-api.jar) lives entirely in user-land. If you so
chose, you could create your own version of these classes. In the end, the
client ends up talking to the server through a binary protocol in
I've been programming to the jcache interface that's included in the
appengine sdk
javax.cache.Cache and that still works in SDK 1.5.0.
appengine's service locator (MemcacheService) finds the implementation
for the interface.
import javax.cache.Cache;
import javax.cache.CacheException;
import
I have the same issue:
Eclipse cannot find:
com.google.appengine.api.memcache.jsr107cache.GCacheFactory
.. and if I change it to
com.google.appengine.api.memcache.stdimpl.GCacheFactory
.. then I get the exception.
I need the GCacheFactory when I set the expiration:
I see now that the documentation online is erroneous.
I found the sample xml file in the sample Hello project and copied it.
backends
backend name=mother
classB4/class
options
publicfalse/public
/options
/backend
/backends
--
You received this message because you are
Just a quick summary, the servlet spec requires that a servlet
container such as appengine
provider an implementation for a service. Those jars such as servlet-
api-2.4.jar are needed
at compile time. They are sometimes provided by the servlet container/
engines at run time
in a global directory
This is on our radar but it's not yet supported.
Max
--
You received this message because you are subscribed to the Google Groups
Google App Engine for Java group.
To post to this group, send email to google-appengine-java@googlegroups.com.
To unsubscribe from this group, send email to
We don't have anything to announce related to SQL pricing and quotas, but
the access for Java apps will be through JDBC.
Max
--
You received this message because you are subscribed to the Google Groups
Google App Engine for Java group.
To post to this group, send email to
I see it here in com.google.appengine.api.backends:
http://code.google.com/appengine/docs/java/javadoc/
Where are you looking?
Max
--
You received this message because you are subscribed to the Google Groups
Google App Engine for Java group.
To post to this group, send email to
The link from the main app engine docs webpage links to this:
http://code.google.com/appengine/docs/java/com/google/api/backends/package-summary.html
Start here:
http://code.google.com/appengine/docs/
Go to Java -- Backends -- Javadoc Reference
--
You received this message because you are
Hi Drew,
This is not and has never been against the Terms of Service - it's the
reverse, splitting one app across many App IDs for the purpose of avoiding
quota charges that is in violation.
-Nick Johnson
On Wed, May 11, 2011 at 5:16 PM, Drew dse...@gmail.com wrote:
Under the new pricing
Hi Marcel,
On Wed, May 11, 2011 at 6:01 AM, Marcel Overdijk
marceloverd...@gmail.comwrote:
My first feelings about the new pricing model were negative.
But it seems we have to cope with it, and I'm now looing into in what
it means concretely.
If I understand correctly a Paid app will cost
I noticed that the backends instances are tiered:
class configurationMemory limitCPU limitCost per hour per instanceB1128MB
600MHz$0.08B2 (default)256MB1.2GHz$0.16B4512MB2.4GHz$0.32B81024MB4.8GHz$0.64
I personally would like to see this model extended to the frontend
instances.
You could have
...and beware blocking external urlfetches to flakey services like Facebook.
Jeff
On Wed, May 11, 2011 at 3:42 PM, Mike Lawrence m...@systemsplanet.com wrote:
You cant use a 3rd party library to add threading.
The API to create a new thread is not in the white list so it's not allowed
But of what use would a 4.8GHz Instance be, if all that instance means 1
request = 1 instance for a python app.
On Thu, May 12, 2011 at 11:55 AM, Kyle Finley kylefin...@gmail.com wrote:
I noticed that the backends instances are tiered:
class configuration Memory limit CPU limit Cost per hour
The funny thing is, I think Google, and a lot of other people, have
forgotten what Cloud Computing was started for. It was because large
companies (like Google) had a lot of hardware which is necessary to
handle the loads their services require, but which don't always work
at full capacity. They
Greg mentioned he was putting together an FAQ so let's help him out!
If you're going to answer this just put in your question into a single line,
let's not try and answer them here or give opinions, there's plenty of other
threads for that. I do understand that Google doesn't have answers to
What parallel universe do you live in? Cloud computing got started as a
way to monetize the valley's in traffic. If I have a farm of computers and
I can get half my clients to run on EST and Half to Run on PST then go from
having 8 hours of peak to 11. And in theory assuming a bell curve to
Thanks Kenneth!
Its been a busy day so I haven't been able to answer all the questions in
the group, but I will do so tomorrow morning (well, morning my time) as well
as cull for the questions that seemed concerning and people wanted answered.
I'll make sure to include all of these, but for now,
Hi Nick,
Thanx for your answers.
Is the new scheduler already activated ?
I have at the moment 3 dynamic instances running (check attachment) : 2 of
them only served 4 and 5 requests but have been alive for almost 8 hours.
This would cost me a lot for doing nothing in the new billing scheme.
This is really neat, thanks for doing this.
Did you track the peak average QPS per instance during this test? I'm
very curious to know what kind of throughput we can expect for a
(threaded) java instance.
Thanks,
Jeff
On Wed, May 11, 2011 at 8:02 PM, Mike Lawrence m...@systemsplanet.com wrote:
Hi Francois,
Speaking as an outsider, it is pretty clear the new scheduler is not active.
Kenneth
--
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-appengine@googlegroups.com.
To unsubscribe from
The smallest granularity will be 15 minutes, but part of the scheduler
change is to ensure we don't start instances to serve 1 request.
This is useful to know so thank you for letting us know this. But it's
disappointing to say the least. We're going from millisecond granularity
with
On Thu, May 12, 2011 at 1:47 PM, peterk peter.ke...@gmail.com wrote:
The smallest granularity will be 15 minutes, but part of the scheduler
change is to ensure we don't start instances to serve 1 request.
This is useful to know so thank you for letting us know this. But it's
disappointing
Although looking at my stats right now the average qps per instance does
seem higher this morning. Almost certainly a coincidence. :-)
--
You received this message because you are subscribed to the Google Groups
Google App Engine group.
To post to this group, send email to
Anyway, in the FAQ, I'd like a transparent, honest answer about why the
switch from CPU-hours to instance-hours (not a vague 'based on the value of
the service', 'based on feedback'), and a comprehensive outline of the
ramifications.
In its three short year history, Google App Engine has
Greetings fine gents,
So a few days ago you assisted me in coming up with solutions for my game
servlet.
One of those options was Long polling and that seemed to be the right
solution.
Now i've been spending my time building it and it's almost ready.
But now with the new changes in billing i
Ha.
Well, if that's the motivation, if it's coming from 'enterprise', then to
rephrase, I'd like to see that explained and outlined fully in this new FAQ,
and what from Google's point of view this orientation will mean for 'grass
roots' developers.
I mean, they talked so much about how they
My question for the FAQ:
Why? :(
On May 12, 12:14 pm, Kenneth kennet...@aladdinschools.com wrote:
Greg mentioned he was putting together an FAQ so let's help him out!
If you're going to answer this just put in your question into a single line,
let's not try and answer them here or give
Hi,
I'm not able to send emails to my app.
app_id: keikaku675
When I sent emails to d...@keikaku675.appspot.com, the emails bounced.
Does anyone know if there are any settings that I need to change?
Thanks.
TS
--
You received this message because you are subscribed to the Google Groups
Hello,
I would like know if there are a max memory limit for the cumulate of all
instances launched
because my chart is wierd in my sense http://goo.gl/WK7Jz
Thanks
Sahid
--
You received this message because you are subscribed to the Google Groups
Google App Engine group.
To post to this
Hello,
I have a few questions about the new Backends feature:
It seems like a reserved backend allows us to have access to a sort of
unevictable memcache, is this correct? If I were doing something like
a game, would it be reasonable to have a single instance keep track of
a few pieces of vital
Hello,
I've been using the Channel API and for each chat room, I have a fixed
number of users. So for each room, prior to the launch, I call
create_channel for each user and store it in a dictionary that I save
in a TextProperty. When I want to broadcast, I read the TextProperty
and convert it
1. How will the Always On feature be handled?
On May 12, 12:14 am, Kenneth kennet...@aladdinschools.com wrote:
Greg mentioned he was putting together an FAQ so let's help him out!
If you're going to answer this just put in your question into a single line,
let's not try and answer them here
See:
http://code.google.com/appengine/docs/python/mail/receivingmail.html
Carefully observe the format of the address -- particularly the domain.
Robert
On May 12, 2011, at 3:19, TohSiang© tohsi...@google.com wrote:
Hi,
I'm not able to send emails to my app.
app_id: keikaku675
When
I don't think it is realistic or desirable to expect Google to run App Engine
like a charity. They've got a sizable team running and developing App Engine.
Plus, people want things like support.
I agree with some of the other commenters, overall I take this as a positive.
It means google is
Ah, my badappspot*mail*.com
Thanks Robert!
On 12 May 2011 21:37, Robert Kluin robert.kl...@gmail.com wrote:
See:
http://code.google.com/appengine/docs/python/mail/receivingmail.html
Carefully observe the format of the address -- particularly the domain.
Robert
On May 12, 2011, at
Thanks to Kennet for the right subset of first questions.
Thanks to Greg for his answers, especially that about scheduler tuning by
user: it will put a cap to skyrocketing bills with a fair performance cap
instead of out-of-quotas service disruption.
Waiting for your document :)
Regards,
Sorry, KennetH :P
--
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-appengine@googlegroups.com.
To unsubscribe from this group, send email to
google-appengine+unsubscr...@googlegroups.com.
For more
Robert I am agreeing with you. I realized I can easily rake in the operating
cost of the app through adsense on my apps. I also realize anywhere I move,
I'll have some overhead costs.
Brandon Donnelson
--
You received this message because you are subscribed to the Google Groups
Google App
Greg from GAE team gave some important answers in this other topic:
http://code.google.com/appengine/forum/?place=topic%2Fgoogle-appengine%2Fig3iefPvvzc%2Fdiscussion
Vanni
--
You received this message because you are subscribed to the Google Groups
Google App Engine group.
To post to this
I agree, Google is not a charity, but equally I thought they had a vested
interest in bringing developers on board using their technologies and APIs.
Here's a suggestion
free is a quota like the new quota, 24 instance hours etc
enterprise is like the new paid for system, with easy to
Hi Richard.
Memcache by design will do eviction. You should keep your backend instance
data in memory (e.g. global var). Be aware that even backend instance could
be killed by the engine, so periodically store live status data in db.
Hope it helps.
Vanni
--
You received this message because
On Thu, May 12, 2011 at 5:44 PM, Robert Kluin robert.kl...@gmail.comwrote:
One thing is for sure, the senior PM is actively watching and responding to
these questions. This is also very good, I'm sure Greg and the AE team will
use all the feedback to finalize the details.
Considering the
Hi Guys,
My app has taken off recently, and it's been very exciting to see so
much traffic. I am trying now to deal with a very high volume of
infrequently accessed /archival data store entries and making sure i'm
not going to hit a performance / cost bottleneck.
Let's say I have a store of
On Thu, May 12, 2011 at 1:15 AM, stevep prosse...@gmail.com wrote:
On May 11, 9:57 am, Geoffrey Spear geoffsp...@gmail.com wrote:
For Python applications, yes, a single request takes up all of the
resources of an instance for the time it's being handled. Java
instances with threading
On Thu, May 12, 2011 at 3:28 AM, Vinuth Madinur vinuth.madi...@gmail.comwrote:
Darien,
I don't think that was the basic premise for cloud computing services. This
has always been a new business opportunity than sharing unused computing.
I'm sorry, but what the FUD is going on in here :).
Brandon
--
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-appengine@googlegroups.com.
To unsubscribe from this group, send email to
Hello Richard,
I had the same problem and could only resolve it by generating a new
token for the reconnecting user, i.e. calling create_channel again.
You can use the same user id though. I believe I read in the docs
somewhere that a token is only good for one sustained connection,
afterwards
Related thought. Has anyone used NAT to achieve the same thing? Could I
setup a linux server and use iptables?
--
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-appengine@googlegroups.com.
To
My single question for Greg's FAQ:
1) What is the justification behind the extremely high price for additional
instances?
Here is a comparison between a GAE Frontend Python Instance and a small
Rackspace Cloud Server:
GAE Frontend Python Instance:
You cannot just compare GAE with Rackspace simply because GAE is unmanaged,
we don't do a thing.
Though I would still maintain that the prices are indeed high.
On 12 May 2011 21:46, Peter Petrov onest...@gmail.com wrote:
My single question for Greg's FAQ:
1) What is the justification behind
Yes, they are different kinds of beasts. But the resources needed to provide
them are the same. And still, the GAE instance costs more than 10 times
higher than a Rackspace VPS consuming the same resources. This is an order
of magnitude difference.
Being managed can justify a higher price, but
Some thoughts...
The problem here is that now I am supposed to be moving from M/S datastore
to a new app with HR. At which point I'll get to pay for anything more than
100 recipients/day.
So I am sitting here with a conundrum. I need to migrate off M/S. Right? So
where do I go? Do I stay with
GAE now has Free and Enterprise plans. The free plan is useless for any
serious app and the enterprise plan will rip single developers like me and
everyone else who thinks they can sustain this through adsense and other
means (unless you do not want to make anything for yourself).
There should be
Will the Front End Cache feature ever be formalized as an expected,
documented part of the service offering?
--
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-appengine@googlegroups.com.
To
On Fri, May 13, 2011 at 12:36 AM, Nischal Shetty
nischalshett...@gmail.com wrote:
There should be a third plan in between the free and enterprise and that plan
exists
Exactly!
--
Regards,
twitter:@yinhm
有微码头:http://yinhm.appspot.com
github: https://github.com/yinhm
--
You received this
Fair to say, good point.
On May 12, 2011 9:37 AM, Nischal Shetty nischalshett...@gmail.com wrote:
GAE now has Free and Enterprise plans. The free plan is useless for any
serious app and the enterprise plan will rip single developers like me and
everyone else who thinks they can sustain this
Why have a tiered pricing at all? Sounds backwards for a cloud computing
platform.
On Thu, May 12, 2011 at 10:43 PM, Brandon Donnelson branflake2...@gmail.com
wrote:
Fair to say, good point.
On May 12, 2011 9:37 AM, Nischal Shetty nischalshett...@gmail.com
wrote:
GAE now has Free and
I am curious how Always On will be handled? Right now for $8.40 I
get 3 instances always on. Can I still have this? If so will I be
billed 3 * .05 * 24 * 30, or will I only be billed for the actual time
the instances are used ?
On May 12, 11:31 am, Peter Petrov onest...@gmail.com wrote:
Yes,
Long polling doesn't seem like a good option to me
Why don't you use channel.js with something like phonegap
On May 12, 11:55 am, Rohan Chandiramani eksrowl...@gmail.com wrote:
Greetings fine gents,
So a few days ago you assisted me in coming up with solutions for my game
servlet.
One of
Well said Nischal. For indy devs the starting 3rd price let us build up a
(hopefully) monetizable service.
On Thu, May 12, 2011 at 6:36 PM, Nischal Shetty
nischalshett...@gmail.comwrote:
GAE now has Free and Enterprise plans. The free plan is useless for any
serious app and the enterprise plan
What can I do to activate my account?
The cellular company is supported by google(Cellcom Israel)
--
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-appengine@googlegroups.com.
To unsubscribe from
Also currently the python instance can only serve 1 request at a time,
so 128mb ram doesn't matter much
My question for FAQ is similiar too:
Is there a possibility of Python not getting a solution for
concurrency and us paying high amounts for this reason?
On May 12, 7:16 pm, Peter Petrov
I don't want to sound like a PubNub shill, but I was able to integrate
PubNub's publish and subscribe system into an App Engine app in about an
hour.
They've got a free development tier, and offer a free production tier if
you're willing to incorporate PubNub branding in your app.
I would suggest having a look at the example code in
http://backends-io.appspot.com/static/counter_demo.zip.
The code gives examples of how to use urlfetch to communicate between
a fronend and a backend. The backend (counter.py) also keeps the value
in memory, and writes out changes either within
We run a bunch of internal Applications and a bunch of public experiments on
GAE. The internal Applications are critical for our company but previously
GAE4B as not sustainable for us -
see https://groups.google.com/group/google-appengine/msg/00ad4ae42b320ebd .
The new pricing model addresses
What does the Premium cost of $500/account mean? Per Google Apps Account?
Per Developer Account, Per Application Owner Account?
--md
--
You received this message because you are subscribed to the Google Groups
Google App Engine group.
To post to this group, send email to
My FAQ question (which went unanswered by Google in an earlier thread, I assume
because of the sheer volume of questions right now):
High Replication Datastore as default: ... encouraging everybody to begin
plans to migrate….
Mail API: ...we’ve reduced the number of free recipients per day
On Thu, May 12, 2011 at 3:32 AM, Richard Arrano rickarr...@gmail.comwrote:
Hello,
I have a few questions about the new Backends feature:
It seems like a reserved backend allows us to have access to a sort of
unevictable memcache, is this correct? If I were doing something like
a game, would
Long polling has never been a viable solution on appengine. Each open
request occupies an instance - prior to threading (java-only), your
concurrency is limited to one instance per connection and Google
isn't going to give you a bazillion instances to support a reasonable
traffic load. Even with
I'l procede with the channel api and phonegap.
Thanks guys, you're awesome.
--
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-appengine@googlegroups.com.
To unsubscribe from this group, send email
Hi Maarten,
This is a result of an update to how cursors work in 1.5.0. You should not
see it in production. However, (for various unfortunate reasons) this new
format is not compatible with old versions of remote API. To fix this
problem please use the 1.5.0 SDKs. We try to never release
On Thursday, May 12, 2011 3:22:05 PM UTC-4, Jeff Schnitzer wrote:
At I/O I got the strong impression that while
G is working on some sort of partial threading solution for Python, it
wasn't likely to surface before the billing changes.
Very disappointing if true. Thanks for sharing.
--
You
This is a great start conceptually. We're on java and this is using the
python libraries. Do you know if someone has done something similar in java?
Thanks so much,
Phil
On Wed, May 11, 2011 at 11:11 PM, Scott Ellis m...@scottellis.com.auwrote:
Check this out:
Hoping that now I/O is over someone from Google can respond.
--
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-appengine@googlegroups.com.
To unsubscribe from this group, send email to
I've got a simple db.Expando class that I'm trying to edit fields
within from the Google App Engine data store viewer interface. There
appears to be a bug with modifying some of the properties;
Specifically, I have a property called 'type'. Attempting to modify
any of the fields including or
This does indeed sound like a bug.
Can you please file a bug about this on the bug tracker?
http://code.google.com/p/googleappengine/issues/entry?template=Other%20defect
If you include the issue number in this thread I can ensure it get
triaged correctly.
On 12 May 2011 13:32, Loren
Sure thing. I submitted with hopefully enough information to be able
to reproduce:
http://code.google.com/p/googleappengine/issues/detail?id=5035
On May 12, 4:41 pm, Greg Darke (Google) darke+goo...@google.com
wrote:
This does indeed sound like a bug.
Can you please file a bug about this on
+1
On May 12, 6:20 pm, Tim meer...@gmail.com wrote:
I agree, Google is not a charity, but equally I thought they had a vested
interest in bringing developers on board using their technologies and APIs.
Here's a suggestion
free is a quota like the new quota, 24 instance hours etc
Hi all,
Has anyone found a solution for this?
I'm developing an Android app using GAE and we're having the same issue.
Thanks
--
You received this message because you are subscribed to the Google Groups
Google App Engine group.
To post to this group, send email to
@Nischal +1
What you are asking is what @TIM above is suggesting which myself also
endorse.
Also as I can see many others in this list are proposing something to
this effect.
Happy coding :-)
Nick Milon
On May 12, 7:36 pm, Nischal Shetty nischalshett...@gmail.com wrote:
GAE now has Free and
Hi Greg,
no FAQ from you yet...
so in the meanwhile here it is a list of links you (and Ikai, Nick, Justin,
etc.) should visit to know what gae users said in the last couple of days
about pricing news.
GAE Forum topics:
I agree with Kaan. I believe Google needs to take an official stance for
all of us python developers who have invested heavily in learning how to
optimize GAE for python development.
1) Would you please state weather GAE team will be releasing an equivalent
multi-safe-threading python
1 - 100 of 126 matches
Mail list logo