HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
r0man
appengine-clj
HISTORICAL RECORD2010–2010
r0man / appengine-clj · Not publicly available

appengine-clj

Discover this repository through its Hacker News conversations.

3Distinct people
3Mentions
0Explicit recommenders
REPOSITORY AT A GLANCE

What to know before exploring

What it is

A public description has not been verified.

Where it is used

No documented product use has been verified yet.

What people are saying

No recommendation phrase was found in the indexed comments.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

No other repository is repeatedly linked in the same discussions.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 3:56:07 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by week3 dated mentions

Observed mentions: 2010-04-04 05:16:51 UTC to 2010-10-18 11:54:20 UTC. Weeks start Monday, UTC.

012010-03-29 00:00:00 UTC to 2010-04-05 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 commentsMar 292010-04-05 00:00:00 UTC to 2010-04-12 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2010-04-12 00:00:00 UTC to 2010-04-19 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2010-04-19 00:00:00 UTC to 2010-04-26 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2010-04-26 00:00:00 UTC to 2010-05-03 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2010-05-03 00:00:00 UTC to 2010-05-10 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2010-05-10 00:00:00 UTC to 2010-05-17 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2010-05-17 00:00:00 UTC to 2010-05-24 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2010-05-24 00:00:00 UTC to 2010-05-31 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2010-05-31 00:00:00 UTC to 2010-06-07 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2010-06-07 00:00:00 UTC to 2010-06-14 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2010-06-14 00:00:00 UTC to 2010-06-21 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2010-06-21 00:00:00 UTC to 2010-06-28 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2010-06-28 00:00:00 UTC to 2010-07-05 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2010-07-05 00:00:00 UTC to 2010-07-12 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 commentsJul 52010-07-12 00:00:00 UTC to 2010-07-19 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2010-07-19 00:00:00 UTC to 2010-07-26 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2010-07-26 00:00:00 UTC to 2010-08-02 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2010-08-02 00:00:00 UTC to 2010-08-09 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2010-08-09 00:00:00 UTC to 2010-08-16 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2010-08-16 00:00:00 UTC to 2010-08-23 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2010-08-23 00:00:00 UTC to 2010-08-30 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2010-08-30 00:00:00 UTC to 2010-09-06 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2010-09-06 00:00:00 UTC to 2010-09-13 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2010-09-13 00:00:00 UTC to 2010-09-20 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2010-09-20 00:00:00 UTC to 2010-09-27 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2010-09-27 00:00:00 UTC to 2010-10-04 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2010-10-04 00:00:00 UTC to 2010-10-11 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2010-10-11 00:00:00 UTC to 2010-10-18 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2010-10-18 00:00:00 UTC to 2010-10-25 00:00:00 UTC (exclusive): 1 mentions; 1 submissions, 0 commentsOct 18

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
Mar 292010-03-29 00:00:00 UTC2010-04-05 00:00:00 UTC101
Apr 52010-04-05 00:00:00 UTC2010-04-12 00:00:00 UTC000
Apr 122010-04-12 00:00:00 UTC2010-04-19 00:00:00 UTC000
Apr 192010-04-19 00:00:00 UTC2010-04-26 00:00:00 UTC000
Apr 262010-04-26 00:00:00 UTC2010-05-03 00:00:00 UTC000
May 32010-05-03 00:00:00 UTC2010-05-10 00:00:00 UTC000
May 102010-05-10 00:00:00 UTC2010-05-17 00:00:00 UTC101
May 172010-05-17 00:00:00 UTC2010-05-24 00:00:00 UTC000
May 242010-05-24 00:00:00 UTC2010-05-31 00:00:00 UTC000
May 312010-05-31 00:00:00 UTC2010-06-07 00:00:00 UTC000
Jun 72010-06-07 00:00:00 UTC2010-06-14 00:00:00 UTC000
Jun 142010-06-14 00:00:00 UTC2010-06-21 00:00:00 UTC000
Jun 212010-06-21 00:00:00 UTC2010-06-28 00:00:00 UTC000
Jun 282010-06-28 00:00:00 UTC2010-07-05 00:00:00 UTC000
Jul 52010-07-05 00:00:00 UTC2010-07-12 00:00:00 UTC000
Jul 122010-07-12 00:00:00 UTC2010-07-19 00:00:00 UTC000
Jul 192010-07-19 00:00:00 UTC2010-07-26 00:00:00 UTC000
Jul 262010-07-26 00:00:00 UTC2010-08-02 00:00:00 UTC000
Aug 22010-08-02 00:00:00 UTC2010-08-09 00:00:00 UTC000
Aug 92010-08-09 00:00:00 UTC2010-08-16 00:00:00 UTC000
Aug 162010-08-16 00:00:00 UTC2010-08-23 00:00:00 UTC000
Aug 232010-08-23 00:00:00 UTC2010-08-30 00:00:00 UTC000
Aug 302010-08-30 00:00:00 UTC2010-09-06 00:00:00 UTC000
Sep 62010-09-06 00:00:00 UTC2010-09-13 00:00:00 UTC000
Sep 132010-09-13 00:00:00 UTC2010-09-20 00:00:00 UTC000
Sep 202010-09-20 00:00:00 UTC2010-09-27 00:00:00 UTC000
Sep 272010-09-27 00:00:00 UTC2010-10-04 00:00:00 UTC000
Oct 42010-10-04 00:00:00 UTC2010-10-11 00:00:00 UTC000
Oct 112010-10-11 00:00:00 UTC2010-10-18 00:00:00 UTC000
Oct 182010-10-18 00:00:00 UTC2010-10-25 00:00:00 UTC110

What Hacker News says

3 sources
For small crud apps you can avoid the java baggage. Using ring and ring-servlet you can build the servlet app engine wants. Libraries like compojure build on top of ring. The datastore can be accessed using http://github.com/r0man/appengine-clj or http://github.com/smartrevolution/clj-gae-datastore. Accessing the blobstore has not been abstracted away yet and requires a bit of work to get uploads acting correctly with ring/compojure. I've not touched task queues, xmpp, mail, or memcache and have not seen any abstractions for them.
In Better performance in App Engine with new Lisp language Clojure
I've been using Clojure w/ GAE to build an enterprise knowledge-base webservice for about 3 months now. It's my first serious project with Clojure on the GAE although I've been playing around with it since last summer. (1) On GAE you don't get to use some of the good parts of Clojure because you can't spawn any threads. So the rationale for Clojure has to be something else than agents and the Clojure concurrency model. I'd say use Clojure if you want functional programming and all of the Lispy goodness: code as data, macros... For me Lispyness is a huge + so it was a no brainer. (2) One of the things I really like about traditional Clojure web-development (using Ring or Compojure) is that if you set things up properly you can experiment with and patch a live system using the REPL. I haven't been able to set that up just yet on the GAE.
Read the rest
On your development server using the GAE jars, however, you can do it (see http://www.hackers-with-attitude.com/2009/08/intertactive-pr... for some guidance). There is nothing like being a C-c C-c away from updating your development server app :) I can't emphasize enough taking the time to get Slime, your GAE development server, lein, and Clojure well-integrated. Your development cycle will make good ol' Java GAE development using the Eclipse plug-in (which I used to think was pretty sweet) feel really really clunky. (See also http://elhumidor.blogspot.com/2009/04/clojure-on-google-appe... for some pointers on setting up Clojure on GAE) (3) GAE's datastore works extremely well with Clojure because it's schema-less. You can store arbitrary hashmaps and structmaps in GAE with zero effort -- it's a match made in heaven. There are a couple of branches of appengine-clj (http://github.com/duelinmarkers/appengine-clj is the original, http://github.com/r0man/appengine-clj is a pretty good branch) that you can look at to get a feel what I mean. (4) With GAE's transaction support and automatic index generation (it's good enough most of the time), you can dynamically create types (kinds), put them in the datastore, and query on them without having to do any of the traditional NoSQL stuff (thinking queries first, denormalizing ahead of time, etc.). It's very sweet. I've done some Clojure+Cassandra and Clojure+GAE is a lot more painless (as long as you can live with the other limitations of the GAE) -- although things are getting much easier in Cassandra world with Hector + automatic index generators. (5) In terms of performance and robustness, nothing about Clojure's held me up. But since I haven't launched yet, that doesn't mean anything. I don't know of any "high-traffic" Clojure+GAE apps out there -- if there are any, I'd love to get some numbers on costs (CPU, especially) to see if there is a significant difference with similar java projects. (Actually, the guys behind https://the-deadline.appspot.com, see http://www.slideshare.net/smartrevolution/how-a-clojure-pet-..., just launched three days ago -- you may want to shoot them an email, they seem nice enough) My guess is that this is a non-issue. Clojure holds up really well against Java and JVM languages like Scala in terms of performance (especially if you give type-hints), and I'd expect the same thing to be true on GAE. (6) General Clojure limitation with web development: Clojure web frameworks are light. You don't get to start with anything as nice as Scala's Lift. You'll have to work and build your own tools -- the good thing is that Clojure is a blast and macros will, in the longer term, allow you to do much cooler stuff. Compojure is a great light framework to start with. Also look at Enlive for templating. On the flip-side Clojure immutable nature works very naturally with request / response. (7) For the OP: before you get on GAE, spend some time reading about its limitations: - exploding indexes (makes implementing text search very tough -- there is some irony in there I think) - no threads (it kills me, I want to use pmap) - not real message queues. GAE is a pull/request-based system, not a push system. It is, however, getting much better (tasks, comet on the coming features list). Still, if you are building a real-time system that needs constant background processing, I'd think twice right now. - if GAE goes down, you're down until they fix things, and will be totally helpless. - some of the GAE goodness/crack means you're locked in (e.g., index building -- to move away you'll have to build equivalent facilities for whatever DB you move to). Although you can protect yourself by being smart in how you abstract away the GAE. (8) Can't think of anything else. If there is interest, I have been thinking about writing some blog posts about my experience setting up a Clojure+GAE development environment, working with the data store, working the the GAE API, etc. Let me know here and I'll get a first post out of the way by week's end.
In Who's using Google App Engine?

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.