2010-08-28
| 00:12 | slyrus | it took me a little while, but: (defmacro defn* [fn-name & rest] `(intern (symbol ~(namespace fn-name)) (symbol ~(name fn-name)) (fn ~(symbol (name fn-name)) ~@rest))) |
| 00:12 | slyrus | seems to do what I want |
| 00:13 | slyrus | (defn* chemiclj.core/make-atom ...) |
| 00:15 | slyrus | yeah, that's great, except for the NPE on a clean restart. hmm ): |
| 00:18 | slyrus | ah, no graceful failure if I don't provide an ns-qualified fn-name |
| 00:18 | gregh | ping |
| 00:19 | gregh | erp |
| 00:48 | slyrus | in case you want to read my writeup of the ns hackery: http://slyrus.github.com/2010/08/27/chemiclj-namespaces.html |
| 02:00 | tomoj | anyone else still getting the 'default-repos does not exist' error with native-deps 1.0.3? |
| 02:02 | tomoj | oh, hmm, default-repos does exist.. strange |
| 02:19 | notsonerdysunny | what does this mean? I created the jreality-native-deps clojar.. When I fetch the library via "lein deps" I get.. [WARNING] POM for 'org.clojars.sunilnandihalli:jreality-native-deps:pom:0.1:compile' is invalid. It will be ignored for artifact resolution. Reason: Not a v4.0.0 POM. for project |
| 02:19 | notsonerdysunny | can anybody tell me what this means? |
| 02:21 | notsonerdysunny | I get a NullPointerException when I run "lein deps" without doing a "lein clean" .. is this expected? |
| 02:21 | tomoj | you have modelVersion 0.1 in your pom |
| 02:21 | tomoj | it should be 4.0.0 |
| 02:23 | notsonerdysunny | thanks tomoj |
| 02:25 | notsonerdysunny | tomoj I get a NullPointerException when I run "lein deps" without doing a "lein clean" .. is this expected? |
| 02:26 | tomoj | I got that too a bit ago with overtone |
| 02:26 | tomoj | it's certainly not intended behavior though.. |
| 02:27 | tomoj | doesn't seem to affect all projects, so I don't have a clue where the bug is |
| 02:28 | notsonerdysunny | oh ic |
| 02:28 | notsonerdysunny | hmmm |
| 03:04 | bortreb | how can I make an array of chars in clojure? |
| 03:05 | bortreb | nm -- it's (into-array Character/TYPE (seq "sdfasf")) |
| 03:06 | fliebel | morning |
| 03:12 | slyrus | bortreb: or (char-array "this-is-crazy") |
| 03:14 | bortreb | nice --- I like char-array |
| 03:19 | notsonerdysunny | ,(char-array "this-is-crazy") |
| 03:19 | clojurebot | #<char[] [C@793a99> |
| 03:20 | notsonerdysunny | ,(vec "this-is-crazy") |
| 03:20 | clojurebot | [\t \h \i \s \- \i \s \- \c \r \a \z \y] |
| 03:20 | slyrus | ,(aget (char-array "this-is-crazy") 0) |
| 03:20 | clojurebot | \t |
| 03:22 | notsonerdysunny | is clojars slow? I am trying to scp a clojar and been unsuccessfull... :( |
| 03:22 | notsonerdysunny | clojars.org |
| 03:42 | notsonerdysunny | is there an alternative to clojars.org where I can upload my jars? |
| 03:47 | seangrove | What is a ctor? |
| 03:47 | seangrove | clojurebot: help? |
| 03:47 | clojurebot | http://www.khanacademy.org/ |
| 03:47 | bortreb | constructor |
| 03:47 | seangrove | Thanks |
| 03:47 | bortreb | np :) |
| 04:14 | notsonerdysunny | when I searched for jogl on clojars .. I found a bunch of them .. does anybody have a suggestion as to which one to use? |
| 04:47 | seangrove | How would I generate a sequence of integers from 0 to 1000? |
| 04:47 | seangrove | And yes, this is project euler related :) |
| 04:49 | seangrove | got it |
| 04:49 | seangrove | range |
| 05:11 | fliebel | Anyone knows a project euler challenge that does challenge my Clojure skills, but not so much my math skills? I want to warm my fingers with some Clojure without cracking my brain on math. |
| 05:22 | mrBliss | fliebel: I find these problems https://sites.google.com/site/prologsite/prolog-problems/1 most of the problems can be solved with an already existing clojure function, but try it using only recursion, first, rest and cons |
| 05:22 | mrBliss | s/find/like/ |
| 05:22 | sexpbot | fliebel: I like these problems https://sites.google.com/site/prologsite/prolog-problems/1 most of the problems can be solved with an already existing clojure function, but try it using only recursion, first, rest and cons |
| 05:24 | fliebel | mrBliss: I'll have a look |
| 05:30 | fliebel | what's the opposite of butlast? |
| 05:32 | arbscht | in which sense? |
| 05:32 | fliebel | something that returns the list except for tis first item. |
| 05:32 | mrBliss | fliebel: do you mean rest |
| 05:33 | fliebel | yea.. |
| 05:34 | fliebel | I really miss slices in Clojure. In python you can do all this stuff with slices. |
| 05:35 | mrBliss | fliebel: write your own slice function with concat, drop and take |
| 05:36 | fliebel | *looks up the docs* This how I'd do it in Python: range(100)[-2::-1] |
| 05:40 | fliebel | mrBliss: I can see you you could do the start and lenghts part of a slice, but negative numbers and the step parameter requires some more magic. |
| 05:40 | mrBliss | ,(doc range) |
| 05:40 | clojurebot | "([] [end] [start end] [start end step]); Returns a lazy seq of nums from start (inclusive) to end (exclusive), by step, where start defaults to 0, step to 1, and end to infinity." |
| 05:43 | fliebel | mrBliss: Yea, but that is only for a generated range, not for any random seq. |
| 05:44 | mrBliss | ,(find-doc #"nth") |
| 05:44 | clojurebot | ------------------------- clojure.contrib.seq/rand-elt ([s]) DEPRECATED. Prefer clojure.core/rand-nth. Return a random element of this seq ------------------------- clojure.contrib.seq-utils/rand-elt ([s]) DEPRECATED. Prefer clojure.core/rand-nth. Return a random element of this seq ------------------------- clojure.core/nth ([coll index] [coll index not-found]) Returns the value at the index. get returns nil if index out |
| 05:45 | mrBliss | fliebel: try (find-doc #"nth") in your repl, you'll see some better functions than the ones clojurebot knows |
| 05:45 | fliebel | mrBliss: Thank you :) |
| 05:47 | fliebel | muhahaha! my very inefficient palindrome list calculator |
| 05:47 | fliebel | ,(let [l [1 2 3 4 5 5 4 3 2 1]] (every? #(= (first %) (last %)) (map vector l (reverse l)))) |
| 05:47 | clojurebot | true |
| 05:48 | fliebel | Any better solutions? |
| 05:49 | mrBliss | (if (< (count l) 1) true |
| 05:49 | mrBliss | (and (= (first l) (last l)) (recur (rest (butlast l))))) |
| 05:51 | fliebel | mrBliss: Let me chew on that… if… recur… chop… lenght…. sounds like a nice solution |
| 05:53 | fliebel | I can't figure out how recur works in this context... |
| 05:54 | mrBliss | fliebel: calls the same function again |
| 05:54 | fliebel | which function? |
| 05:54 | mrBliss | oh yeah, wrap it in (defn palin? [l] ...) |
| 05:55 | fliebel | ah, that was the missing part of the puzzle. |
| 05:55 | mrBliss | fliebel: sorry about that. Some microbenchmarks point out that your functions is actually faster |
| 05:55 | mrBliss | s/functions/function/ |
| 05:55 | sexpbot | fliebel: sorry about that. Some microbenchmarks point out that your function is actually faster |
| 05:56 | fliebel | mrBliss: Mine can actually be made twice as fast by chopping l in halg |
| 05:56 | fliebel | *half |
| 05:57 | mrBliss | fliebel: butlast is linear, that's probably why mine is slower |
| 05:57 | mrBliss | fliebel: yours is quite clojure-y, mine is more scheme-y |
| 06:01 | fliebel | mrBliss: This looks more like it: |
| 06:01 | fliebel | ,(let [l [1 2 3 4 5 5 4 3 2 1]] (every? #(= (first %) (last %)) (map vector (take (/ (count l) 2) l) (reverse (drop (/ (count l) 2) l))))) |
| 06:01 | clojurebot | true |
| 06:02 | fliebel | hooray fro readability :D |
| 06:03 | mrBliss | fliebel: nice |
| 06:04 | fliebel | mrBliss: Only due to integer devision [1 2 3 4 5 666 5 4 3 2 1] also returns true. |
| 06:04 | mrBliss | fliebel: that list is palindromic |
| 06:04 | fliebel | You're right |
| 06:05 | fliebel | So what I was saying… due to the fantastic integer devision this even works for odd lenght lists :DF |
| 06:06 | mrBliss | fliebel: very clever ;-) |
| 06:17 | patrkris | is there anything inherent to Vim that makes it more difficult to create a SLIME-like thing? is emacs better suited for that? |
| 06:17 | patrkris | just wondering |
| 06:21 | Chousuke | As far as I know the main reasons are that 1) vimscript sucks and 2) that vim is not really designed to interact with external programs. |
| 06:21 | patrkris | ah |
| 06:21 | patrkris | sad thing with vimscript |
| 06:22 | patrkris | never wrote much in vimscript besides what goes in .vimrc and various ftplugin files |
| 06:22 | patrkris | Chousuke: do you use emacs or vim for clojure development? |
| 06:22 | Chousuke | emacs |
| 06:23 | Chousuke | I mostly use vim only for quick edits nowadays. |
| 06:24 | incandenza | qq |
| 06:24 | incandenza | oops |
| 06:25 | kwertii | Emacs is actually a general-purpose Lisp interpreter that happens to come with some text editing programs preloaded. Vim is "just" a text editor |
| 06:26 | patrkris | :) |
| 06:26 | Chousuke | ostensibly :P |
| 06:27 | patrkris | i have often thought about learning emacs, but I think I'm turned off by the meta-key thing |
| 06:27 | patrkris | i would hate having to hold Ctrl or Alt all the time |
| 06:27 | Chousuke | There's actually a vi emulator for emacs. |
| 06:27 | patrkris | but that's probably one of the main gripes by most users |
| 06:27 | patrkris | coming from vim |
| 06:27 | patrkris | yeah, heard about that |
| 06:27 | fliebel | yay, next problem solved: |
| 06:27 | fliebel | ,(let [l [1 1 1 2 3 3 1 1 4 4 4 4]] (reduce #(if (= (last %1) %2) %1 (conj %1 %2)) [(first l)] (rest l))) |
| 06:27 | fliebel | Chousuke: Nice word to use… I learnt that word while reading an xkcd comic about lisp. (i'm dutch) |
| 06:27 | clojurebot | [1 2 3 1 4] |
| 06:27 | Chousuke | but it doesn't work so well with most plugins :/ |
| 06:28 | fliebel | clojurebot: just in time ;) |
| 06:28 | clojurebot | multimethods is what separates the boys from the men. |
| 06:28 | kwertii | patrkris: if you do take the plunge, it's _far_ easier to use if you swap Ctrl and Caps Lock, like on a Sun keyboard |
| 06:28 | ssideris | good morning |
| 06:28 | fliebel | morning |
| 06:29 | patrkris | kwertii: yes, but right now I have CapsLock mapped to Esc because of Vim :) |
| 06:29 | kwertii | patrkris: ugh :) |
| 06:29 | patrkris | kwertii: actually non-trivial to get working on Apple hardware |
| 06:30 | patrkris | kwertii: but essential for Vim I think |
| 06:30 | fliebel | OF WHAT USE IS CAPSLOCK ANYWAY, EXCEPT FOR CLAIMING IT'S STUCK? |
| 06:30 | kwertii | I dream of owning a USB space cadet keyboard someday. the one with Alt, Meta, Super, Hyper, etc. keys |
| 06:31 | patrkris | hah |
| 06:32 | Luyt | You could use a Windows keyboard and relabel the Windows and Menu keys |
| 06:33 | kwertii | Luyt: It wouldn't be the same :) |
| 06:33 | kwertii | and anyway I need more keys than that |
| 06:33 | Luyt | not really no... the space cadet keyboard also weighted 10 kilos and was made with steel plating |
| 06:34 | kwertii | Luyt: ... adding considerably to its awesomeness |
| 06:35 | Luyt | I still have a 25 year-old PC AT keyboard |
| 06:35 | kwertii | I wonder how much it'd cost to do a production run of ergonomic USB space cadet keyboards |
| 06:37 | fliebel | kwertii: I bet there is a huge market of vim users for them. You should do it :) |
| 06:37 | kwertii | Luyt: can you get a usb adapter for that? |
| 06:37 | Luyt | Not sure. It has a big DIN connector. Somewhere I must have an adapter cable from large DIN to small DIN. |
| 06:40 | fliebel | what? lambda is actualy a greek letter? |
| 07:07 | ssideris | sooo |
| 07:07 | ssideris | I have this record: |
| 07:07 | ssideris | (defrecord (point) [coords colour]) |
| 07:07 | ssideris | and then I have this (test) function: |
| 07:08 | ssideris | (defn look-at-point [{[x y z] :coords, [r g b a] :colour}] ... |
| 07:08 | ssideris | several print statements follow |
| 07:08 | ssideris | is there any way to avoid putting this whole destructuring thing in every function that deals with points? |
| 07:08 | ssideris | can I reuse it? |
| 07:15 | mrBliss | "Alias s already exists in namespace user, aliasing clojure.contrib.string", how do I remove an alias for a namespace without restarting my repl? |
| 07:15 | mrBliss | ns-unmap doesn't help |
| 07:25 | hoeck | mrBliss: ns-unalias |
| 07:25 | incandenza | ns-unalias ? |
| 07:26 | mrBliss | thanks, quite obvious |
| 08:40 | arnorhs | hey guys |
| 08:40 | arnorhs | I'm a n00b trying to start using clojure |
| 08:40 | arnorhs | And I haven't done any java development in 10 years and never any web development |
| 08:41 | arnorhs | I've got clojure running |
| 08:41 | arnorhs | so far so good |
| 08:41 | arnorhs | but can you recommend a good guide for doing web development in clojure |
| 08:43 | kilofu | I'm not much more than a noob myself |
| 08:43 | kilofu | but I've been hearing good things about compojure |
| 08:44 | arnorhs | is that a framework? |
| 08:44 | kilofu | ya |
| 08:44 | kilofu | a minimal framework |
| 08:45 | arnorhs | I come from a PHP background and I don't know what type of webserver you run clojure through or how it works |
| 08:45 | arnorhs | Can I use apache? |
| 08:45 | arnorhs | I runs as a process, right? |
| 08:46 | mrBliss | you can use different webserver for compojure, but I think jetty is the default |
| 08:46 | mrBliss | http://weavejester.github.com/compojure/ |
| 08:47 | mrBliss | s/webserver/servers/ |
| 08:52 | arnorhs | jetty |
| 08:52 | arnorhs | ok, that's what I was looking for |
| 08:52 | arnorhs | and lein is like gem for ruby or something? |
| 08:53 | mrBliss | not entirely |
| 08:53 | mrBliss | I don't fully know gem, but lein is only for your own projects |
| 08:53 | mrBliss | you don't install programs with it, only libraries |
| 08:53 | arnorhs | ahh ok |
| 08:54 | mrBliss | http://github.com/technomancy/leiningen |
| 08:54 | arnorhs | yeah, I've got that set up |
| 08:55 | mrBliss | I don't really know Rake, but it looks like Ruby's leiningen |
| 08:56 | arnorhs | I don't really know ruby :) |
| 08:56 | arnorhs | I've just dabbled around in it |
| 08:56 | arnorhs | didn't seem to be that much it had to offer over php |
| 08:56 | arnorhs | syntax wise |
| 08:56 | arnorhs | I've been writing really weird php code for years anyways |
| 08:57 | arnorhs | usually my code becomes really long lines of stuff and I'm always trying to help my self write as less code as possible |
| 08:57 | arnorhs | and there's just stuff in the syntax that I'm really tired of |
| 08:57 | arnorhs | that I can't shorten |
| 08:57 | arnorhs | I'm a slow typer and I hate writing a lot of code to do simple things |
| 08:57 | arnorhs | I'm hoping clojure will help me :P |
| 08:58 | arnorhs | Since clojure code looks like my php code |
| 08:58 | mrBliss | what do you mean? it looks the same? |
| 08:59 | arnorhs | I do everything in arrays in PHP |
| 08:59 | arnorhs | I have a lot of magical array functions that I've used and do a lot of function callback hacking and stuff like that |
| 08:59 | arnorhs | php's arrays are really powerful and 99% of php developers don't know how to use them right |
| 08:59 | arnorhs | And I'm not a big fan of OO programming |
| 09:00 | arnorhs | I used to, when I started out and was in school |
| 09:00 | arnorhs | but through the years I've gradually written fewer and fewer classes |
| 09:00 | arnorhs | at least smaller |
| 09:00 | mrBliss | It annoys me that you can't do get_array()[0] in PHP (till recently) |
| 09:00 | arnorhs | yeah, that's true |
| 09:00 | ssideris | arnorhs: if you like to write concise code, i think you'll like the fact that clojure has macros |
| 09:01 | arnorhs | yes, I've been looking at a lot of clojure examples |
| 09:01 | mrBliss | ever played with another lisp? |
| 09:01 | arnorhs | and they look powerful |
| 09:01 | arnorhs | no |
| 09:01 | arnorhs | I tried classic lisp, don't remember what it was, ANSI lisp maybe? |
| 09:01 | arnorhs | anyways |
| 09:01 | arnorhs | that was a long time ago |
| 09:01 | mrBliss | Exactly my experience: http://xkcd.com/224/ |
| 09:02 | arnorhs | And it was horrible with all the different compilers out there and everything was just so much trouble |
| 09:02 | arnorhs | I got inspired to write lisp first a few years ago when I read PG's hackers and painters essay |
| 09:02 | arnorhs | and dabbled around |
| 09:02 | arnorhs | but that pretty much sucked :P |
| 09:03 | arnorhs | mrBliss: that's a good one :P |
| 09:03 | arnorhs | I've been hearing about clojure a lot lately, but I didn't realize it was a lisp |
| 09:04 | arnorhs | I didn't know what it was |
| 09:04 | mrBliss | I enjoyed these videos by Rich Hickey: http://clojure.blip.tv/posts?view=archive |
| 09:05 | mrBliss | Start with the "Clojure for {Lisp,Java} Programmers" depending on your background |
| 09:05 | arnorhs | hey, awesome |
| 09:05 | arnorhs | great |
| 09:05 | arnorhs | thanks |
| 09:14 | notsonerdysunny | Hello everybody.. I want to configure my leiningen to download http://download.java.net/maven/2/net/java/jogl/jogl/1.1.1-rc6/ .. how can I add it to the list of repositories? |
| 09:28 | arnorhs | Are you guys using jetty? |
| 09:28 | arnorhs | is there a lot of difference between jetty 6 and 6 ? |
| 09:28 | arnorhs | is there a lot of difference between jetty 6 and 7 ? |
| 09:29 | notsonerdysunny | How can I add the repository above ? |
| 09:29 | notsonerdysunny | to leiningen |
| 09:39 | emh | I know you can implement protocols on interfaces (for other protocols), but this is not good if you're not dealing with Java compatibility, because interfaces is a host implementation detail, right? |
| 09:40 | emh | and say I have a protocol for printing something, and I implement it on at Set and a Graph interface, then what happens if a type implements both Set and Graph? |
| 09:42 | emh | best way is to always implement protocols in the concrete types, and use default mixins for things that are implemented using other protocols that the concrete type implements? just checking that my understanding is correct |
| 09:57 | raek | notsonerdysunny: http://github.com/technomancy/leiningen/blob/master/sample.project.clj see key :repositories |
| 09:59 | raek | you probably want to add the repo root directory or something (maybe http://download.java.net/maven/2/ ), but I don't know the details |
| 09:59 | notsonerdysunny | thanks raek |
| 10:01 | arnorhs | I can't even get this jetty thing working |
| 10:01 | arnorhs | I think my java inabilities are holding me back |
| 10:01 | arnorhs | mayb clojure is just fun for java developers |
| 10:02 | arnorhs | it seems most of the documentations and everything is made for people moving out of java |
| 10:02 | mrBliss | did you follow this: http://weavejester.github.com/compojure/docs/getting-started.html ? |
| 10:03 | mrBliss | no need to install jetty |
| 10:03 | arnorhs | hmmm |
| 10:03 | arnorhs | ahh |
| 10:03 | mrBliss | it's not like apache and php |
| 10:03 | mrBliss | jetty is a server, but it's just a java process |
| 10:04 | arnorhs | ahh ok |
| 10:04 | arnorhs | so the clojure process itself becomes the webserer |
| 10:05 | arnorhs | then everything that the webserver has to be able to, must be implemented by the library or your own code? |
| 10:05 | mrBliss | java |
| 10:05 | mrBliss | right |
| 10:05 | mrBliss | imo a cleaner approach than apache+php |
| 10:06 | arnorhs | The best thing about apache is that it handles all the hard stuff about running a webserver |
| 10:06 | arnorhs | all the threading |
| 10:06 | arnorhs | and development becomes so easy when it's all request based |
| 10:06 | arnorhs | I do realize that this will not work the same way |
| 10:06 | mrBliss | compojure does this for you |
| 10:06 | arnorhs | it will be interesting |
| 10:06 | mrBliss | you write the routes and the request handlers |
| 10:14 | arnorhs | ok, there is a reference to jetty in the project configuration example that the compojure doc has |
| 10:14 | arnorhs | does that mean jetty has to be installed? because I uninstalled it ? :P |
| 10:15 | raek | no, leiningen will pull down the needed jars |
| 10:15 | raek | since compojure has it as a dependency |
| 10:15 | arnorhs | wow, there's some magic happening |
| 10:16 | mrBliss | in your project dependencies, you'll probably have ring-jetty-adapter |
| 10:16 | mrBliss | these are the dependencies or ring-jetty-adapater: http://github.com/mmcgrana/ring/blob/master/ring-jetty-adapter/project.clj |
| 10:16 | raek | hrm, yes. maybe that is not a dependency of compojure anymore.... |
| 10:16 | raek | I use moustache for the routing instead of compojure nowadays |
| 10:17 | raek | anyway, Ring does most of the stuff anyway |
| 10:21 | arnorhs | hmm |
| 10:22 | arnorhs | I executed: lein repl src/arnorhs/core.clj and I got this error: |
| 10:23 | arnorhs | arnorhs@ubuntu:/opt/clojure/projects/arnorhs$ lein repl src/arnorhs/core.clj Wrong number of arguments to repl task. |
| 10:23 | arnorhs | and Expected ([project]) |
| 10:24 | mrBliss | are you in lein project folder (containing a project.clj)? |
| 10:25 | arnorhs | yes |
| 10:26 | arnorhs | wait sorry |
| 10:27 | arnorhs | I copy pasted the example code but it has a reference to the project name |
| 10:27 | raek | arnorhs: you don't specif the file name as an argument |
| 10:28 | raek | -ify |
| 10:28 | raek | lein repl |
| 10:28 | arnorhs | oh |
| 10:28 | raek | and then (require 'arnorhs.core) |
| 10:28 | raek | and maybe (in-ns 'arnorhs.core) |
| 10:29 | arnorhs | you're right |
| 10:29 | arnorhs | working |
| 10:29 | raek | I've heard about a new "lein run" command that can be used to run a file as a scriåt |
| 10:29 | raek | *script |
| 10:29 | arnorhs | the compojure guide showed it like that: http://weavejester.github.com/compojure/docs/getting-started.html |
| 10:29 | arnorhs | somebody needs to edit that guide |
| 10:30 | raek | hrm, maybe a new feature in leiningen |
| 10:30 | arnorhs | no wait |
| 10:32 | arnorhs | awesome |
| 10:32 | arnorhs | Hello World Wide Web! |
| 10:32 | arnorhs | thanks a lot raek |
| 10:32 | arnorhs | when I make source code modifications, do I always have to type in those two commands? |
| 10:33 | arnorhs | lein repl and then (require 'arnorhs.core) |
| 10:33 | mrBliss | which editor are you using? |
| 10:33 | arnorhs | currently just gedit |
| 10:34 | arnorhs | I can also use emacs |
| 10:34 | mrBliss | that would be perfect! |
| 10:34 | raek | arnorhs: no, just paste the updated code into the repl |
| 10:34 | raek | you don't need to restart the server |
| 10:34 | mrBliss | install clojure-mode, slime and slime-repl |
| 10:35 | mrBliss | (via ELPA) |
| 10:35 | raek | if you use emacs with slime, just use C-x C-e to send the current form to evaluation |
| 10:36 | mrBliss | Or C-c C-k to compile the whole buffer |
| 10:36 | raek | or C-M-x to evaluate the top level form containing the point (usually a def) |
| 10:37 | raek | you can do a (require 'arnorhs.core :reload) in the repl to reload the whole file |
| 10:37 | raek | but then surround the server call in something |
| 10:38 | raek | (defonce server (run-jetty example {:port 8080, :join? false})) |
| 10:38 | raek | no wait, this is better (defonce server (run-jetty #'example {:port 8080, :join? false})) |
| 10:42 | raek | (since if you would redfine example, the server would use the new one automatically) |
| 11:10 | arnorhs | my god, a lot of things to learn/install just to start programming :) |
| 11:10 | arnorhs | I followed the guide here: http://www.assembla.com/wiki/show/clojure/Getting_Started_with_Emacs |
| 11:10 | arnorhs | and thereby configured lein repl to be the inferior lisp or whatever |
| 11:11 | arnorhs | and I got the clojure.core> prompt inside emacs |
| 11:11 | arnorhs | and could run my little application |
| 11:11 | arnorhs | so far so good |
| 11:11 | raek | I usually do "lein swank" |
| 11:11 | raek | and then connect to it with "M-x slime-connect" |
| 11:12 | arnorhs | what does that do? |
| 11:12 | raek | works out of the box, no config required |
| 11:12 | raek | lein swank starts a repl server that slime can use |
| 11:12 | arnorhs | this ? http://github.com/technomancy/swank-clojure |
| 11:12 | raek | ah, yes |
| 11:12 | arnorhs | goddamnit, so many things to learn |
| 11:13 | arnorhs | need to go help my brother move |
| 11:13 | arnorhs | brb |
| 11:13 | raek | the way you did it is build-tool independent |
| 11:14 | raek | but when you do multiple projects which may have dependencies, you will most likely want to use some build tool (like leiningen) |
| 11:14 | Bahman | Hi all! |
| 11:14 | raek | arnorhs: my repertoire for setting up everything: |
| 11:15 | raek | 1) get emacs and install clojure-mode, slime and slime-repl through elpa |
| 11:15 | raek | 2) get leiningen |
| 11:16 | raek | 3) create a leiningen project and add :dev-dependencies [[swank-clojure "1.2.1]] |
| 11:16 | raek | 4) run lein deps and lein swank |
| 11:16 | raek | 5) start emacs and connect with M-x slime-connect |
| 11:16 | raek | done! |
| 11:17 | raek | (this installs clojure and contrib too, as they are added as dependencies) |
| 11:17 | raek | (dependencies are added to the project.clj file) |
| 11:18 | raek | (a leiningen project skeleton can be created with lein new) |
| 11:21 | raek | this is of course opinionated towards emacs+leiningen |
| 11:23 | raek | you can use pretty much any combo of {Netbeans, Eclipse, Idea, Emacs, Vim, Textmate} x {Leiningen, Maven, Gradle, Cake, Cljr} |
| 11:24 | qbg | Hmm. I found a typo in The Joy of Clojure |
| 11:26 | qbg | Table of contents -> Part 1 -> 2: "Firehos" should probably be "Firehose" |
| 11:27 | bobo_ | qbg: they would probably be happy if you added it: http://manning-sandbox.com/forum.jspa?forumID=624 there |
| 11:34 | rosejn | anyone have advice for tracking down a java.lang.ExceptionInInitializerError? |
| 11:34 | rosejn | Trying to move to 1.2, and it's coming up in code that previously loaded fine. |
| 11:36 | chouser | rosejn: can you get a stack trace? |
| 11:37 | rosejn | yeah I can, but it doesn't say much |
| 11:37 | rosejn | 1 sec and I'll get it |
| 11:39 | rosejn | https://gist.github.com/60138f739bc0b7ebec47 |
| 11:39 | rosejn | That's the stack trace |
| 11:43 | raek | what's at line 2 of ugen.clj? |
| 11:44 | rosejn | http://github.com/overtone/overtone/blob/clj1.2/src/overtone/core/ugen.clj |
| 11:44 | rosejn | A doc string |
| 11:45 | raek | strange |
| 11:45 | raek | you're not using incompatible versions of, say, clojure and contrib or something? |
| 11:45 | raek | or aot-compiled libs? |
| 11:46 | raek | or openjdk? |
| 11:46 | rosejn | I'll check |
| 11:46 | rosejn | don't think so |
| 11:50 | rosejn | huh... I removed the classes directory and the error went away |
| 11:50 | rosejn | not entirely comfortable that this should happen though |
| 11:54 | raek | it seems like you have done a "lein compile" at some point |
| 11:56 | rosejn | Does that happen automatically when you "lein jar"? |
| 11:57 | rosejn | So the compiler doesn't recognize if code has changed it needs to reload from source? |
| 11:58 | raek | in what situation? |
| 11:59 | raek | I'm not certain if lein jar runs lein compile |
| 11:59 | raek | I have not used that function much |
| 11:59 | raek | anyway, classes/ is added to the classpath |
| 12:00 | Raynes | I don't think lein jar will compile anything unless you ask it to in your project.clj |
| 12:00 | Raynes | If it does, I've certainly never noticed it. |
| 12:00 | Raynes | But if you have old compiled files in classes/ for whatever reason, you can definitely expect weirdness. |
| 12:00 | raek | since you might have, for example, java code that needs to be compiled and available on the classpath for the repl |
| 12:01 | rosejn | ok, so basically you have to delete classes all the time before re-running code? |
| 12:02 | rosejn | as in the "classes" directory |
| 12:03 | raek | after you have AOT-compiled source, yes |
| 12:03 | raek | which you mostly only do when you release a package |
| 12:03 | raek | the internal clojure compiler does not output class files to the classes/ dir |
| 12:05 | raek | for example, (fn [] "foo) is compiled and generates a class under the hood, but it isn't stored in any file |
| 12:07 | Raynes | Most of the time, you don't have to AOT compile code. The only time you really have to do that is for serious Java interop purposes (a la gen-class). |
| 12:08 | chouser | rosejn: (sorry, stepped out) That stack trace is incomplete. |
| 12:08 | chouser | (e) only returns the root cause, which is almost always insufficient for compile-time errors |
| 12:09 | Raynes | ._. |
| 12:09 | Raynes | I guess we frightened him. |
| 12:09 | raek | btw, will (.printStackTrace *e) print the full stack trace? |
| 12:09 | chouser | raek: yes |
| 12:09 | opqdonut | not the causes though? |
| 12:27 | leafw | anybody knows if kotka's memoize functions made it into clojure libs? Or contrib? |
| 14:08 | chouser | opqdonut: the full stack trace and the full chain of causes. (.printStackTrace *e) prints everything |
| 14:09 | opqdonut | ok |
| 14:09 | opqdonut | was the behaviour different earlier or am I misremembering |
| 14:16 | arohner | opqdonut: clojure.stacktrace/print-stack-trace doesn't print causes |
| 14:16 | opqdonut | ah |
| 14:16 | arohner | but c.stacktrace/print-cause-trace does |
| 14:17 | arohner | (stupid, IMO) |
| 14:17 | opqdonut | yes |
| 14:17 | opqdonut | that was it |
| 14:17 | opqdonut | IMO too |
| 15:05 | arnorhs | slima |
| 15:05 | arnorhs | slime |
| 15:09 | arnorhs | how do I stop "lein repl" inside my emacs? |
| 15:09 | arnorhs | killall in command prompt? :P |
| 15:09 | LauJensen | Anybody here had problems with uberjars not being able to run, because they are not able to establish the root binding of *warn-on-reflection* ? |
| 15:10 | arnorhs | is there a command i can execute? |
| 15:10 | LauJensen | arnorhs: ,q |
| 15:10 | LauJensen | oh sorry, you wanted to kill the lein repl |
| 15:10 | LauJensen | (System/exit) ? |
| 15:10 | arnorhs | yes |
| 15:10 | arnorhs | and some command to execute? |
| 15:12 | raek | arnorhs: I suppose you could kill the *inferior lisp* buffer |
| 15:12 | LauJensen | arnorhs: if you hit "(System/exit 1)" in the repl, doesn't the jvm die? |
| 15:12 | raek | lein repl starts a clojure process outside emacs, so what did you mean? |
| 15:12 | arnorhs | ahh I see |
| 15:13 | raek | I recommend using slime + swank |
| 15:13 | raek | then you can basically control everything from emacs |
| 15:13 | arnorhs | I don't know why I'd only want to control 50% from emacs |
| 15:14 | arnorhs | either everything or just run from command prompt |
| 15:14 | arnorhs | this is just confusing as hell |
| 15:14 | arnorhs | I'll just uninstall everything, use the syntax highlight and run clojure from the command prompt |
| 15:15 | fbru02 | I want to code a simple function to emulate a python generator, what's a good way to incremente a local on each call of the generator ? |
| 15:15 | ssideris | arnorhs: you'll be missing the interactivity like that |
| 15:15 | arnorhs | ssideris: I'll have to start somewhere |
| 15:15 | LauJensen | fbru02: iterate? |
| 15:15 | ssideris | arnorhs: yeah ok start like that if the setup is too much for you right now, but keep in mind that there is more |
| 15:15 | fbru02 | LauJensen: yes basicaly |
| 15:16 | raek | I find it useful to be able to edit one definition and only reevaluate that one when I'm done with it |
| 15:16 | ssideris | arnorhs: for example, if you setup swank+slime, you'll be able to re-write a function and replace it in your program without restarting your program at all |
| 15:16 | arnorhs | And so far.. with java, jetty (which I didn't have to worry about), emacs package editor, lisp syntax highlighting, installing clojure, installing leiningen, compojure... |
| 15:16 | ssideris | arnorhs: replace it as in "hot" replace |
| 15:17 | arnorhs | it's just a large chunk of stuff to eat and understand in a single afternoon |
| 15:17 | somnium | fbru02: the idiomatic way is to use a lazy sequence (like from iterate), but its possible to use atoms and closures to be purposefully mutable |
| 15:17 | ssideris | arnorhs: agreed :-) |
| 15:17 | arnorhs | I just want a simple hello world at this point |
| 15:17 | arnorhs | :P |
| 15:17 | fbru02 | somnium: cool, i was just openning the page on that in clojure.net thanks |
| 15:17 | arnorhs | So, emacs+code highlighting, and lein is fine for me |
| 15:17 | raek | a repl in a terminal can be a good start :) |
| 15:18 | arnorhs | yes, I'll ask you guys about the emacs magic after a week |
| 15:18 | raek | but when writing longer pieces of code, the interactivity becomes very neat to have |
| 15:18 | arnorhs | I'm also using desktop linux for the first time in 8 years :) |
| 15:19 | arnorhs | ok, when that becomes an issue/problem, then I'll appreciate it |
| 15:20 | arnorhs | Thanks for all the help raek and everybody |
| 15:20 | arnorhs | It's been super helpful |
| 15:20 | raek | arnorhs: how far did you get? did you ever use slime-connect? |
| 15:20 | arnorhs | no, not slime |
| 15:20 | raek | how did you run things in emacs? |
| 15:21 | arnorhs | I was about to install it, I saw the lisp script needed to install on http://common-lisp.net/project/slime/doc/html/Installation.html#Installation |
| 15:21 | arnorhs | the inferior lisp program, I don't know the location? would that be "lein repl" or? |
| 15:22 | raek | the easiest way, I think, is to use ELPA to get clojure-mode, slime and slime-repl |
| 15:22 | raek | it's very automatic |
| 15:22 | ssideris | arnorhs: i think the stable way to do it is to run "lein swank" from a console and then run "slime-connect" from emacs |
| 15:22 | LauJensen | raek: Last time I tried it failed |
| 15:22 | arnorhs | can you use elpa also to get slime and slime-repl? |
| 15:22 | LauJensen | arnorhs: yea |
| 15:22 | ssideris | raek: i never got as far |
| 15:22 | arnorhs | what was swank again and why do I need it? |
| 15:23 | raek | "swank" is the server that the "slime" client connects to |
| 15:23 | Bootvis | how can you use (read-line) in a repl? |
| 15:23 | raek | or "swank-clojure", more accurately |
| 15:23 | ssideris | yeah "swank" can refer to any such server (for other lisps etc) |
| 15:23 | raek | basically, you start a swank server outsite emacs with, for example, lein swank |
| 15:24 | raek | and then connect to that with emacs (using M-x slime-connect) |
| 15:24 | arnorhs | I'm sorry but I'm reading your text but the information is just not parsing |
| 15:25 | arnorhs | I might be too dumb for clojure in general |
| 15:25 | arnorhs | what does slime do again? |
| 15:25 | raek | talk to swank |
| 15:25 | ssideris | slime is the emacs extension for developing lisp |
| 15:26 | arnorhs | I thought that was the clojure-mode I installed |
| 15:26 | raek | clojure mode is syntax highlighting and indentation |
| 15:26 | raek | it does not give you a repl in emacs |
| 15:26 | arnorhs | ok |
| 15:26 | raek | that is what slime does |
| 15:27 | raek | you could think of swank as a "repl server" and slime as a "repl client" |
| 15:27 | arnorhs | Ok and if slime does that, why do I need swank? |
| 15:27 | raek | but it can do more that just the repl... |
| 15:27 | arnorhs | ahhh |
| 15:28 | raek | like a web browser (client) and a web server |
| 15:28 | ssideris | swank is like an instance of clojure sitting around waiting to be send commands from slime |
| 15:28 | arnorhs | hmm.. so swank is the thing that's controlling the clojure process (somehow through lein) and slime is the client that connects to that process to insdert the new updated code into it |
| 15:28 | ssideris | yes! |
| 15:28 | arnorhs | so when I make modifications etc, I use slime to inject it into swank, the controller of the server |
| 15:29 | raek | lein is a tool for, amon other things, starting clojure processes with the right CLASSPATH stuff |
| 15:29 | arnorhs | because java is too uncomfortable to work with out of the box? |
| 15:29 | raek | swank-clojure is actually an ordinary clojure library |
| 15:30 | arnorhs | and it also generates the project files and handles dependencies etc of java/clojure libraries |
| 15:30 | raek | yes |
| 15:30 | rmarianski | i'm trying to create a simple implementation of something seqable, but i'm running into some issues |
| 15:30 | rmarianski | http://pastie.org/1122898 |
| 15:30 | rmarianski | (first (FooSeq. 7)) |
| 15:30 | rmarianski | seems to work |
| 15:30 | rmarianski | so does (first (next (next (FooSeq. 8))) |
| 15:31 | rmarianski | but, i can't use the other seq functions with it |
| 15:31 | rmarianski | like take |
| 15:31 | raek | when I set up emacs and stuff last time I did it like this: |
| 15:31 | rmarianski | (take 3 (FooSeq. 8)) |
| 15:31 | rmarianski | > ([:x 8]) |
| 15:31 | rmarianski | anyone have any ideas? |
| 15:32 | arnorhs | raek: you should make an online guide for setting everything up that you need for proper clojure web development |
| 15:33 | ssideris | rmarianski: i think that defrecord is more for map-based types, maybe deftype is more appropriate for your case |
| 15:33 | rmarianski | ssideris: when i try that, i get an error message: |
| 15:33 | rmarianski | No message. [Thrown class java.lang.AbstractMethodError] |
| 15:33 | raek | 1) installed emacs 2) installed elpa by pasting the code at http://tromey.com/elpa/install.html in the *scratch* buffer and evaluated with C-x C-e 3) install clojure-mode, slime and slime-repl from the M-x package-list-packages menu |
| 15:34 | raek | arnorhs: I should probably do that... |
| 15:34 | rmarianski | maybe it's because it doesn't know how to print out the type? |
| 15:34 | rmarianski | (the repl that is) |
| 15:35 | rmarianski | i get the same error when i try to explicitly print an instance of the type |
| 15:35 | arnorhs | ah ok, you can use the package manager to set all that up.. interesting |
| 15:35 | arnorhs | what about swank? |
| 15:35 | arnorhs | you need to install that outside of emacs, right? |
| 15:35 | ssideris | arnorhs: lein takes care of that, you just list it the dev-dependencies |
| 15:36 | rmarianski | adding a toString to it doesn't seem to be help, so maybe it's something else |
| 15:36 | arnorhs | ahh, right |
| 15:36 | raek | exactly, you dont have to install it |
| 15:36 | raek | it is a dependecy, just like clojure and contrib |
| 15:37 | raek | lein deps will fetch the versions specified |
| 15:37 | ssideris | rmarianski: not sure, haven't worked much with records and types yet |
| 15:37 | arnorhs | so just add :dev-dependencies [[swank-clojure "1.2.1"]] to all your projects |
| 15:37 | rmarianski | ssideris: ok, thanks ... i appreciate it |
| 15:38 | raek | arnorhs: I usually start with something like this: http://gist.github.com/555485 |
| 15:39 | rmarianski | ssideris: would you happen to know where in the clojure codebase the java collections are made seqable? |
| 15:40 | rmarianski | i figure that might give me some clues |
| 15:40 | ssideris | rmarianski: they are a different implementation |
| 15:40 | arnorhs | raek: except I also have compojure |
| 15:40 | ssideris | they are not java collections at all |
| 15:40 | arnorhs | + jetty |
| 15:40 | rmarianski | ssideris: right, but i can seq a java.util.ArrayList for example |
| 15:40 | rmarianski | that's very similar to what i'm trying to do |
| 15:41 | raek | just wanted to provide the minimal getting started with emacs project file... |
| 15:41 | ssideris | rmarianski: sorry, I'm new around here too :-) |
| 15:41 | raek | after doing "lein deps" you should be able to start a swank server with "lein swank" (by default on localhost and port 4005) |
| 15:42 | ssideris | raek: as far as I can tell, there have been attempts to be able to manage clojure-swank from within emacs, but that's still buggy, right? |
| 15:43 | raek | you mean clojure-mode.el= |
| 15:43 | raek | ? |
| 15:43 | raek | "Previous versions of Swank Clojure bundled an Elisp library called swank-clojure.el that provided ways to launch your swank server from within your Emacs process. While swank-clojure is still distributed with the project, it's a much more error-prone way of doing things than the method outlined above. |
| 15:43 | raek | If you have configured your Emacs to use M-x swank-clojure-project then it should still work, but it's not recommended for new users." |
| 15:43 | raek | from the swank-clojure docs |
| 15:43 | ssideris | by the way, is there a way to re-use destructuring statements? |
| 15:44 | ssideris | raek: yeah, that's what i mean |
| 15:44 | raek | I think it was very hard to maintain |
| 15:44 | arnorhs | yeah, I saw that swank-clojure is listed from the packages list in emacs |
| 15:44 | arnorhs | so I should just ignore that |
| 15:44 | raek | yes |
| 15:45 | raek | don't start slime with just "M-x slime". that is what's in swank-clojure.el (which is very outdated) |
| 15:46 | raek | M-x slime-connect seems to be the way to go, nowadays |
| 15:46 | ssideris | i should automate all the questions that slime-connect asks me every time |
| 15:48 | arnorhs | nice :D |
| 15:49 | raek | I've been thinking about writing this for a long time |
| 15:49 | arnorhs | I'll upvote that on every single site that has a vote button |
| 15:49 | ssideris | haha |
| 15:49 | gfrlog | what should I use if I like atoms but not retries? |
| 15:49 | ssideris | raek: a lot of people that haven't ever seen a lisp will not know what a repl is and they certainly wont know about slime |
| 15:50 | arnorhs | I got a 3 page error list when installing slime and slime-repl from the package list :) |
| 15:50 | raek | :( |
| 15:50 | somnium | I thought even java has a repl these days |
| 15:50 | somnium | beanshell or something? |
| 15:50 | somnium | cant imagine its very pleasant to use |
| 15:51 | raek | arnorhs: warnings or errors? |
| 15:51 | raek | http://github.com/technomancy/swank-clojure section "Connecting with SLIME" is what I have read |
| 15:52 | raek | arnorhs: do you have other versions of slime lying around? |
| 15:52 | arnorhs | well, hmm, I did download it with cvs |
| 15:53 | raek | does emacs know about it? :) |
| 15:53 | gfrlog | I'm going to guess agents with promises |
| 15:53 | arnorhs | it shouldn't |
| 15:53 | arnorhs | I didn't start installing |
| 15:55 | raek | maybe you could try with the package.el linked from the swank-clojure docs |
| 15:56 | arnorhs | I'm trying to remove it from the packages menu |
| 15:56 | arnorhs | there doesn't seem to be a remove command documented anywhere |
| 15:57 | arnorhs | why is there a sudoku game available as an emacs package? |
| 15:57 | ssideris | arnorhs: emacs is HUGE |
| 15:57 | technomancy | raek: have you thought about adding your info to the assembla wiki page instead? |
| 15:57 | ssideris | arnorhs: there are e-mail plugins, twitter clients, tetris etc for emacs |
| 15:58 | Raynes | technomancy: Rather than add to the 6 thousand old "Get started with Emacs, SLIME, and Clojure" blog posts!?!? No way man. ;) |
| 15:58 | raek | technomancy: yes |
| 15:58 | technomancy | ssideris: Emacs is a lot of things: http://p.hagelb.org/emacs-is.html |
| 15:59 | raek | it would not follow the current structure of the getting started wiki, but maybe that's a good thing |
| 15:59 | arnorhs | are there any get started with emacs, slime and clojure blog posts? |
| 15:59 | technomancy | arnorhs: tons and tons! |
| 15:59 | Raynes | The problem is that most of them are outdated. |
| 15:59 | technomancy | less than half of them have correct, useful info |
| 15:59 | arnorhs | orly |
| 16:00 | technomancy | "The great thing about standards is that there are so many to choose from." |
| 16:00 | arnorhs | like this one (top of google for get started with emacs slime and clojure): |
| 16:00 | arnorhs | http://nklein.com/2010/05/getting-started-with-clojureemacsslime/ |
| 16:00 | ssideris | technomancy: it doesn't mention "Get things done" app |
| 16:00 | arnorhs | it ends with the sentence "What didn’t work .. i tried tried tried ... Edit: Ah, it appears that the Subversion repository for Clojure that I found is deprecated. But, I don’t have the energy to try the git repository myself at this point. Maybe next week." |
| 16:01 | arnorhs | so it doesn't look like the kind of guide you'd want to read |
| 16:01 | raek | whoa |
| 16:01 | Raynes | wut |
| 16:02 | Raynes | And that post is recent! |
| 16:02 | technomancy | par for the course. =\ |
| 16:02 | arnorhs | yes |
| 16:02 | arnorhs | but this one is alright http://lifeofaprogrammergeek.blogspot.com/2009/03/learning-clojure-and-emacs.html |
| 16:02 | arnorhs | but it doesn't explain anything |
| 16:03 | arnorhs | it doesn't mention swank |
| 16:03 | arnorhs | or lein or anything |
| 16:03 | technomancy | really the only thing to be done is try to increase the ranking of the assembla wiki and official docs |
| 16:03 | arnorhs | but this guy also wrote this: http://riddell.us/ClojureWithEmacsSlimeSwankOnUbuntu.html |
| 16:03 | arnorhs | no, he linked to that |
| 16:03 | arnorhs | what is assembla? |
| 16:03 | arnorhs | I've seen that wiki and read some stuff |
| 16:04 | technomancy | Clojure uses assembla as its official wiki and issue tracker |
| 16:04 | technomancy | clojurebot: assembla? |
| 16:04 | clojurebot | assembla is http://www.assembla.com/spaces/clojure |
| 16:04 | technomancy | ~botsnack |
| 16:04 | clojurebot | thanks; that was delicious. (nom nom nom) |
| 16:04 | Raynes | $botsnack |
| 16:04 | sexpbot | Raynes: Thanks! Om nom nom!! |
| 16:04 | Raynes | I totally didn't steal that. |
| 16:05 | technomancy | clojurebot stole it from fsbot |
| 16:05 | fliebel | good evening |
| 16:05 | Raynes | sexpbot comes from a long line of thiefbots. |
| 16:09 | raek | test |
| 16:09 | fliebel | raek: test coming through ;) |
| 16:10 | arnorhs | The errors I get when just trying to install slime: http://pastebin.com/hKRWee87 |
| 16:11 | raek | technomancy: what do you think should be mentioned (at minimum) in a getting started with emacs tutorial? |
| 16:12 | raek | or, make that emacs and swank-clojure |
| 16:12 | arnorhs | those are actually just warnings |
| 16:13 | arnorhs | but here's the error I get when installing slime-repl: http://pastebin.com/y4JDdQc2 |
| 16:13 | arnorhs | Seems like actual code errors |
| 16:13 | raek | I think it is important to have a getting started tutorial that covers the whole process, from emacs to the clojure jvm |
| 16:14 | arnorhs | yes, and one step at a time.. first just java+clojure+lein, then a seperate one for web development using compojure and then a third tutorial about installing slime, swank, slime repl, clojure highlighting etc.. , maybe? |
| 16:15 | ssideris | slime+swank etc is of general use |
| 16:15 | ssideris | ti applies to non-web work |
| 16:15 | technomancy | raek: you could mention that Emacs 24 will come with an up-to-date package.el |
| 16:15 | ssideris | it |
| 16:15 | technomancy | raek: I really need to fix up my own personal package archive though |
| 16:16 | arnorhs | who manages the slime packages in emacs? |
| 16:16 | arnorhs | do you think there's somebody who'd like to know about the errors I'm getting? |
| 16:16 | technomancy | arnorhs: I'm the packager; upstream is really careless about releases. |
| 16:16 | arnorhs | ahh |
| 16:17 | arnorhs | who's upstream and where does he live? |
| 16:17 | raek | that says, this is a set of tools you may want to use. this perticular combination of tools is used as described here... etc |
| 16:17 | technomancy | arnorhs: http://common-lisp.net/project/slime/ |
| 16:19 | ihodes | does anyone have any news on Enlive? I'd like to use it, but i'm a little worried it's been put on hold, and i don't want to maintain it… though it might be fine for my uses now, i'll have to test. |
| 16:20 | raek | what is the issue about the old package.el, and how do I install the new one in a simple way? |
| 16:20 | arnorhs | I was wondering about these installation instructions, since emacs install of slime is not working: http://common-lisp.net/project/slime/doc/html/Installation.html#Installation |
| 16:20 | technomancy | raek: the old one had some bugs preventing package insallation in some edge cases. it also doesn't support installing from multiple sources. |
| 16:21 | technomancy | raek: there are two versions that fix those problems: the one on my github, and the one in Emacs 24. they aren't really the same |
| 16:21 | technomancy | GNU adapted package.el for inclusion in Emacs 24 straight from tromey's buggy version |
| 16:21 | arnorhs | (setq inferior-lisp-program "/opt/sbcl/bin/sbcl") ; should this be just "lein repl" ? |
| 16:21 | technomancy | so I had to go back and replay my fixes on top of theirs |
| 16:21 | ihodes | technomancy: awesome. ugh. |
| 16:22 | technomancy | raek: I haven't tried the one bundled in 24 with 23, but it would be good to give that a spin and see if it works |
| 16:22 | technomancy | that would simplify things quite a bit; I wouldn't have to keep my github fork around |
| 16:22 | arnorhs | yes and you would make my life sweet :) |
| 16:22 | arnorhs | is 24 not out yet? |
| 16:23 | tomoj | slime cvs is still broken for clojure, right? |
| 16:23 | technomancy | arnorhs: still at least a year away probably |
| 16:23 | arnorhs | ok |
| 16:23 | technomancy | tomoj: I haven't heard reports either way |
| 16:23 | technomancy | maybe people just stopped using trunk; that would be nice. =) |
| 16:24 | raek | should one install elpa as usual and the replace the package.el file, or just put the package.el in .emacs.d/elpa/ and add a suitable line in .emacs? |
| 16:24 | arnorhs | so as things stand now, even though you guys say that using slime is the best way to develop... I can't install it because installaction from cvs isn't working and installaction from emacs packages are not working either? |
| 16:24 | technomancy | raek: the latter, I think |
| 16:24 | technomancy | note that package.el from 24 needs an extra line of config to make it work with the elpa archive |
| 16:25 | raek | I'll try that |
| 16:25 | technomancy | raek: also would be good to make a clear distinction between package.el (the software) and ELPA (the site providing packages) |
| 16:25 | technomancy | since now the FSF has their own package archive (which is basically useless since it only accepts libs with copyright assignment) |
| 16:25 | technomancy | I've been guilty of conflating the two in the past |
| 16:25 | arnorhs | hmm.. what is package.el? |
| 16:26 | arnorhs | the script that controls the packages? |
| 16:26 | arnorhs | .el == emacs lisp or something? |
| 16:26 | technomancy | right |
| 16:27 | arnorhs | would that be (eq ".el" "emacs lisp") ? |
| 16:27 | arnorhs | lol |
| 16:27 | raek | it's a packet manager for emacs extensions |
| 16:28 | raek | package-list-packages is a part of it |
| 16:28 | arnorhs | but for somebody starting out, this is a pretty horrible resource to start with: http://clojure.org/getting_started |
| 16:28 | raek | technomancy: it is great that you provide all this important information :) |
| 16:28 | arnorhs | yes it is |
| 16:29 | ihodes | http://data-sorcery.org/2009/12/20/getting-started/ this helped me get everything set up |
| 16:29 | arnorhs | what is incanter? |
| 16:29 | technomancy | arnorhs: that's pretty bad; it should be set up as a redirect to the assembla getting started page |
| 16:29 | technomancy | that one is much better. |
| 16:30 | arnorhs | yes |
| 16:30 | ihodes | arnorhs: don't worry about incanter: this is applicable to just getting started. it's a stats library |
| 16:30 | arnorhs | ihodes: that's a great article |
| 16:30 | arnorhs | it starts out with just the words I wanted to hear |
| 16:32 | LauJensen | technomancy: emacs is a GUI toolkit? |
| 16:32 | ssideris | arnorhs: yeah, but given that you have no previous java experience, it's unlikely that you'll know of any of the other tools :-) |
| 16:33 | arnorhs | ssideris: yes :) |
| 16:33 | arnorhs | I programmed java applets in the 90's |
| 16:33 | ihodes | arnorhs: i'm so sorry |
| 16:33 | ihodes | ;) |
| 16:33 | arnorhs | lol |
| 16:33 | ssideris | haha |
| 16:34 | arnorhs | I made a drawing application that you could save to files and I hated java forever after that |
| 16:35 | arnorhs | it was awesome |
| 16:35 | LauJensen | I once did an application that rendered text in a webrowser, I haven't been able to look at PHP since that :( |
| 16:35 | ihodes | yeah i did a stats program in Java about 5 years ago. it was gross. |
| 16:35 | ihodes | had to interface with R. that was so painful. |
| 16:36 | ssideris | i write java for a living... |
| 16:36 | ssideris | swing in particular |
| 16:36 | arnorhs | R the language? |
| 16:36 | arnorhs | Java is probably pretty awesome today |
| 16:36 | ihodes | ssideris: i made 6.95 an hour for that…but i guess i can't call it a living. |
| 16:36 | ihodes | arnorhs: yes |
| 16:36 | ssideris | ihodes: and now? |
| 16:37 | ihodes | ssideris: got 12.50/hr for a summer working in Clojure. i was in high school then, so 7$ wasn't bad: didn't need to be making a living. |
| 16:37 | arnorhs | now he makes 695 an hour |
| 16:37 | ihodes | haha i wish. now i'm a poor college student. |
| 16:40 | ssideris | ihodes: so what were you working on? clojure itself? or writing something in clojure? |
| 16:41 | ihodes | ssideris: with clojure; it was/is a data analysis app for a neuroscience lab. |
| 16:41 | ssideris | was the language your choice? |
| 16:41 | ssideris | or were they using it already? |
| 16:41 | ihodes | definitely mine haha |
| 16:42 | ssideris | ah ok |
| 16:42 | ihodes | their only other full-time computer engineer/programmer was using VB. and labview. |
| 16:42 | ssideris | just wondering how widely used it is already |
| 16:42 | ssideris | VB! my favourite! (not) |
| 16:42 | ihodes | yeah. the program they were using crashed if you used it too quickly… |
| 16:43 | ssideris | yeah you don't want to surpise VB |
| 16:43 | ssideris | *surprise |
| 16:43 | ihodes | haha yeah |
| 16:44 | raek | hrm, would you say that swank-clojure starts a "swank server" or a "slime server", btw? |
| 16:44 | ihodes | swank |
| 16:44 | ihodes | swank = server, slime = client |
| 16:44 | raek | swank is the protocol, right? |
| 16:44 | arnorhs | process? |
| 16:45 | clojurebot | processing is a language/toolkit for visualizations. See the Clojure wrapper at http://github.com/rosado/clj-processing/ |
| 16:45 | arnorhs | lol |
| 16:45 | ihodes | haha |
| 16:45 | arnorhs | clojure? |
| 16:45 | clojurebot | clojure is far closer to perfection then python |
| 16:45 | arnorhs | lol |
| 16:45 | arnorhs | python? |
| 16:45 | clojurebot | python is ugly |
| 16:45 | ssideris | hikey? |
| 16:45 | arnorhs | LOL |
| 16:45 | ihodes | it's a server–it's not like a protocol or anything (AFAIK) |
| 16:45 | ihodes | hickey? |
| 16:45 | ihodes | rish? |
| 16:45 | clojurebot | is_rhickey_is_a_minor_god? is yes |
| 16:45 | ihodes | rich? |
| 16:45 | ihodes | excellent |
| 16:45 | arnorhs | slime? |
| 16:46 | clojurebot | slime-installer is http://github.com/technomancy/clojure-mode/blob/0f28b61de90ce8a09d75bf1668ef3f1c200f9c52/clojure-mode.el#L560 |
| 16:46 | technomancy | clojurebot: underscores? I am disappoint. |
| 16:46 | clojurebot | Excuse me? |
| 16:46 | technomancy | clojurebot: forget slime-installer |
| 16:46 | clojurebot | slime-installer is http://github.com/technomancy/clojure-mode/blob/0f28b61de90ce8a09d75bf1668ef3f1c200f9c52/clojure-mode.el#L560 |
| 16:46 | ihodes | emacs? |
| 16:46 | clojurebot | emacs is best configured for Clojure with instructions at http://technomancy.us/126 |
| 16:46 | seangrove | Trying to get familiar with lazy sequences and what not - would it make sense for a lazy sequence that generates multiples of 20? |
| 16:46 | ihodes | haskell? |
| 16:46 | technomancy | clojurebot: slime-installer is deprecated |
| 16:46 | clojurebot | "you have to see features like that in the context of Haskell's community, which is something like Perl's community in the garden of Eden: detached from all shame or need to do any work." -- ayrnieu |
| 16:46 | clojurebot | c'est bon! |
| 16:46 | ihodes | haha so excellent |
| 16:46 | arnorhs | haskell? |
| 16:46 | clojurebot | "you have to see features like that in the context of Haskell's community, which is something like Perl's community in the garden of Eden: detached from all shame or need to do any work." -- ayrnieu |
| 16:46 | arnorhs | heh, sorry |
| 16:47 | arnorhs | ruby? |
| 16:47 | clojurebot | Chunky bacon! |
| 16:47 | tomoj | seangrove: that would make sense, yes |
| 16:47 | arnorhs | html? |
| 16:47 | arnorhs | php? |
| 16:47 | clojurebot | make a note of http://scienceblogs.com/goodmath/2006/11/the_c_is_efficient_language_fa.php it is yet another article about picking c or c++ for performance being naive |
| 16:47 | arnorhs | lisp? |
| 16:47 | clojurebot | "Like DNA, such a language [Lisp] does not go out of style." - Paul Graham, ANSI Common Lisp |
| 16:48 | ssideris | i saw a talk of Rich Hickey today were he apologised for teaching c++ in the past :-) |
| 16:48 | arnorhs | lol |
| 16:48 | arnorhs | ehhe |
| 16:48 | arnorhs | yes |
| 16:49 | ssideris | raek: maybe fire up graphviz and make a real graph? |
| 16:49 | ssideris | you know dot, right? |
| 16:49 | raek | I do in fact... it's nice |
| 16:50 | ssideris | i like the fact that it's almost zero effort |
| 16:51 | ska2342 | Hi. Is anyone around who could help setting up compojure with maven? |
| 16:53 | ssideris | raek: are you doing this, or should I? |
| 16:53 | raek | I have done it on a piece of paper |
| 16:53 | arnorhs | maven is a lein alternative? |
| 16:54 | ssideris | arnorhs: maven is lein for the java world |
| 16:54 | arnorhs | ahh |
| 16:54 | ssideris | arnorhs: lein uses maven in the background |
| 16:54 | arnorhs | i see |
| 16:54 | ska2342 | maybe I should have added "without making fun of it" :-) |
| 16:55 | arnorhs | lol |
| 16:56 | ska2342 | anyway. As far as I understand things (and I am neither a Java nor a Maven guy) the 0.4.1 JAR of compojure doesn't include compojure.html anymore. When I try to :use compojure.html it can't be found and without that, I don't get the (html ...) functionality. |
| 16:56 | raek | leiningen uses maven for the whole dependency machinery |
| 16:56 | ordnungswidrig | ska2342: this has moved do hiccup |
| 16:57 | raek | ska2342: that has been split into a library called hiccup |
| 16:57 | ska2342 | Ah, OK. I'll try that. |
| 16:58 | ssideris | great name |
| 16:58 | ska2342 | would 0.3.0 suffice? |
| 17:03 | ssideris | raek: does this describe the situation accurately? |
| 17:03 | ssideris | http://i.imgur.com/A7E7W.png |
| 17:05 | ihodes | i prefer to skip the package.el part |
| 17:05 | ihodes | but thats' about right |
| 17:07 | raek | ssideris: yes! that was what I had in mind |
| 17:08 | ssideris | raek: ok, should I improve the formatting a bit and re-post it, or do you think it's unnecessary? |
| 17:09 | raek | I know how to make my own |
| 17:10 | technomancy | there should be some relationship (different from a dependency) between swank-clojure and slime |
| 17:10 | technomancy | since they talk over a socket |
| 17:11 | ssideris | ok, I'm firing up inkscape |
| 17:13 | ihodes | ssideris: it'd definitely be useful. how might i contact you if i'd like ot use it in a blog post, if i may? |
| 17:14 | ssideris | ihodes: wait a few minutes for the better version and feel free to use it whenever you like... |
| 17:14 | ihodes | technomany: you suggested a java/clojure IO kind of post; i'm having trouble deciding what to cover. definitely stuff like slurp, spit and line-seq, and things like with-open and file etc. but what about things like read and PuchBackReader, BufferedRead |
| 17:14 | ihodes | technomancy: see above |
| 17:15 | raek | ssideris: I think I will go with your version too |
| 17:15 | ssideris | ok... preparing shinier version, please wait |
| 17:15 | technomancy | ihodes: the basic java.io classes would be a good start, maybe followed by "best of" clojure.java.io? |
| 17:16 | technomancy | PushBackReader is worth a mention too just because it's quirky and you won't be able to find much about it in the general Java literature. |
| 17:16 | ihodes | that's what i was thinking: i'd mention it along with 'read' in particular |
| 17:17 | ihodes | since read's a fun deal. kind of a big deal/ |
| 17:17 | raek | no hurry :) |
| 17:18 | ihodes | i'm trying to decide if i should split it up into 2 posts. but there's no great way of modularizing the content… and i'd prefer to publpish it all at once |
| 17:20 | ihodes | but i have the best first line for the post, ever: It is a truth universally acknowledged, that a programmer using Clojure will want to perform IO. |
| 17:20 | technomancy | nice! |
| 17:20 | ihodes | haha gotta shove some english lit in there, right? |
| 17:21 | technomancy | that's always been my approach |
| 17:21 | LauJensen | technomancy: when you got a sec, check your query window |
| 17:22 | raek | preliminary outline: http://gist.github.com/555595 |
| 17:23 | ihodes | nice. and html5, to boot ;) |
| 17:25 | raek | it follows the structure of the graph ssideris made |
| 17:25 | ihodes | technomancy: per the mailing list, seems 1.3.1 would be good to go for windows as well |
| 17:26 | darrenaustin | Hi folks, quick question: does 'lein repl' work correctly with 1.2? |
| 17:27 | ihodes | darrenaustin: it should |
| 17:27 | darrenaustin | I am running lein 1.3 and when I start the repl, it drops me in clojure.core and none of my project appears to be on the classpath. |
| 17:27 | ihodes | are you sure you're starting lein from your project's directory? |
| 17:28 | ihodes | and that your project.clj has 1.2 specified for its version of clojure |
| 17:28 | darrenaustin | yes to both. |
| 17:28 | technomancy | ihodes: I saw a crazy bug on someone else's machine where the standalone install task put the shell wrapper in the wrong place and didn't even bother to get the deps |
| 17:28 | ihodes | and you're sure that you're running 1.3? are you on windows or a nix? |
| 17:28 | technomancy | but I can't repro here |
| 17:29 | darrenaustin | I am on Mac OS X |
| 17:29 | ihodes | technomancy: could that happen if they have some funky env variables set up? |
| 17:29 | technomancy | maybe |
| 17:30 | ihodes | darrenaustin: could you put in a gist or pastebin what you see after you start lein repl? |
| 17:30 | darrenaustin | if I wanted to try to reinstall lein, what do I need to delete other than the lein script itself? |
| 17:32 | ssideris | raek, ihodes: http://i.imgur.com/Z7ICw.png |
| 17:32 | ssideris | also available in SVG if you prefer |
| 17:32 | ihodes | ssideris: freakin' awesome |
| 17:32 | ssideris | :-D |
| 17:33 | darrenaustin | sure thing, but there are no errors. It just starts with "REPL started; serverl listening on localhost:12610." and then dumps me into the repl in the clojure.core namespace. |
| 17:33 | ihodes | except who uses emacs without -nw? haha ;) |
| 17:33 | raek | awesome! |
| 17:33 | ihodes | darrenaustin: so instead of user=> you get clpojure.core=> |
| 17:33 | ssideris | glad you like it, feel free to use it |
| 17:33 | darrenaustin | lhodes: yeah. |
| 17:34 | raek | ssideris: found a typo... "swank-mode" |
| 17:34 | ihodes | ssideris: thanks so much. raek: good catch! should be swank-clojure |
| 17:34 | ssideris | oops |
| 17:34 | darrenaustin | and when I try to use a library from the project, it complains that it can't find the classes. |
| 17:34 | ssideris | ok let me update it |
| 17:34 | darrenaustin | Both of which work fine from swank. |
| 17:36 | darrenaustin | I'll try reinstalling lein and see if that clears it up. Thanks for the help. |
| 17:36 | ssideris | raek, ihodes: http://i.imgur.com/ll4L2.png |
| 17:36 | ihodes | darrenaustin: please let me know–i'd like to fix this if it's a recurring issue. that's so bizarre |
| 17:37 | ihodes | ssideris - i hate to ask you change it again... but maybeee instead of package.el, it should be ELPA |
| 17:37 | seangrove | Hey all, I have this: (def multiples-of-20 (iterate (fn [x] (+ x 20)) 20)) |
| 17:37 | ihodes | for Emacs Lisp Package Archive, which is what package.el runs |
| 17:37 | raek | as I learned today: ELPA is the central repository |
| 17:38 | tomoj | seangrove: you'll probably want to turn that into a defn instead of a def |
| 17:38 | raek | not the project written in emacs lisp |
| 17:38 | ihodes | seangrove: you could do (iterate (partial + 20) 20) instead |
| 17:38 | tomoj | for example (defn multiples-of-20 [] ...) |
| 17:38 | ssideris | ihodes: ok ok |
| 17:38 | ihodes | ssideris haha sorry for the trouble–it really looks awesome |
| 17:39 | tomoj | as a def, multiples-of-20 will always point to the beginning of the seq, and so the beginning won't be garbage collected |
| 17:39 | seangrove | interesting |
| 17:39 | tomoj | so if you tried to do (nth multiples-of-20 100000) or something, all 100000 elements would end up in memory at once |
| 17:39 | tomoj | as a function, (nth (multiples-of-20) 100000) works fine, because multiples-of-20 there refers to the function and you're not hanging on to the beginning of the seq |
| 17:40 | tomoj | (called "holding the head" around here) |
| 17:40 | raek | 22:23 < technomancy> raek: also would be good to make a clear distinction between package.el (the software) and ELPA (the site providing packages) |
| 17:40 | seangrove | Very cool! |
| 17:40 | raek | 22:23 < technomancy> since now the FSF has their own package archive (which is basically useless since it only accepts libs with copyright assignment) |
| 17:40 | raek | 22:24 < technomancy> I've been guilty of conflating the two in the past |
| 17:40 | raek | for me, the nodes in the graphs represent softwares, so would like it to remain "package.el" |
| 17:40 | seangrove | Thank you! |
| 17:41 | ihodes | raek: good call, didn't even think of it |
| 17:42 | ssideris | ok so what's the verdict? |
| 17:42 | ihodes | keep package.el :) you got it perfect |
| 17:42 | ihodes | don't listen to me |
| 17:42 | ssideris | ok |
| 17:42 | ihodes | haha sorry about that |
| 17:43 | ssideris | ok, final version: http://i.imgur.com/9ZUMG.png |
| 17:43 | ssideris | (i hope!) |
| 17:44 | tomoj | what do the edges represent? |
| 17:44 | ssideris | tomoj: depends on |
| 17:44 | ssideris | apart from the one btween swank-clojure and SLIME |
| 17:44 | ihodes | ssideris: it looks awesome :) |
| 17:44 | ssideris | :-) |
| 17:45 | ssideris | the one between swank-clojure and SLIME represents "these two things are connected with the power of thunder" |
| 17:45 | ssideris | or something |
| 17:45 | Raynes | Sexy. |
| 17:52 | emh | what's a good way to set warn on reflection in a lib so that it works when I run the file for testing and when it is used/required by another file without throwing IllegalStateException? |
| 17:52 | emh | just catch the exception? |
| 17:53 | emh | I mean, it doesn't have to take effect when loaded from another file |
| 18:09 | LauJensen | Good night all - Here's a tip on how to unify development and production mode, so you dont have to switch around all the time: http://i.imgur.com/QbQVB.png |
| 18:12 | ssideris | haha |
| 18:17 | gfrlog | how do I check if a promise has been delivered |
| 18:17 | gfrlog | ? |
| 18:19 | danlarkin | what function has the prototype (f '[a b c d] '[1 2 3]) => '[[a 1] [b 2] [c 3] [d nil]]? |
| 18:21 | opqdonut | , (map vector [1 2 3] [4 5 6 7]) |
| 18:21 | clojurebot | ([1 4] [2 5] [3 6]) |
| 18:21 | opqdonut | almost :) |
| 18:22 | ssideris | it reminded me of zipmap |
| 18:25 | danlarkin | partition-all can do the second half, but interleave won't pair pas the end of the shorter seq |
| 18:26 | opqdonut | maybe make a version of map that follows the longest sequence and not the shortest? |
| 18:28 | Raynes | gfrlog: http://www.mail-archive.com/clojure@googlegroups.com/msg27029.html |
| 18:28 | tomoj | if you knew which arg was the longest you could lazy-cat the rest with (repeat nil), but that seems Wrong |
| 18:28 | opqdonut | it sure does |
| 18:30 | tomoj | copying map and just changing 3 things seems Wrong too :( |
| 18:30 | ssideris | it's very Perl-ish |
| 18:31 | opqdonut | how come? |
| 18:31 | ssideris | in perl you can say: my ($a, $b, $c) = (1, 2); |
| 18:31 | ssideris | and $c will be undefined |
| 18:32 | ssideris | i mean what you're trying to do reminds me of perl somehow |
| 18:32 | ssideris | not the solution |
| 18:34 | gfrlog | Raynes: thanks |
| 18:46 | danlarkin | here's what I've come up with, http://gist.github.com/555658 |
| 18:46 | danlarkin | change interleave to not stop at the length of the shorter seq |
| 21:22 | emh | the elegant simplicity of functional programming is ever growing on me :) . I just realized that instead of creating macros to compose protocols to create a more complex abstraction, I should just define predicate functions to check whether an object satisfies a set of protocols. OOP had me all screwed up, thinking in terms of hierarchies |
| 21:23 | ssideris | but how do you compose protocols then? |
| 21:24 | emh | I don't. it's not necessary |
| 21:24 | emh | that's what I realized |
| 21:25 | ssideris | ah ok (don't know enough about protocols yet) |
| 21:26 | ssideris | so you were creating a meta-macro of sorts? |
| 21:26 | emh | not to be confused with composing _default implementations_, or mixins, of protocols, which can be done with something like the methods a la carte library |
| 21:26 | emh | ssideris: no, I was thinking I was going to have to |
| 21:26 | ssideris | sorry I meant meta-protocol |
| 21:26 | ssideris | or super-protocol |
| 21:27 | emh | yeah, the idea was to have a protocol that had all the methods of several other protocols, and to paste it together using some macro trickery |
| 21:27 | emh | but it's all backwards doing it that way |
| 22:29 | n2n3 | ,() |
| 22:29 | clojurebot | () |
| 22:44 | arnorhs | ihodes: http://twitter.com/ihodes/status/22403264493 |
| 22:44 | ihodes | arnorhs: gotcha :) what are you hacking on now? |
| 22:49 | arnorhs | ihodes: not much. My first clojure project will be a half-baked comet implementation |
| 22:50 | arnorhs | I've been working on this simple (yet another) task list manager |
| 22:50 | arnorhs | which I only created to play around with html5 technologies |
| 22:50 | arnorhs | http://fridgelistapp.com/ |
| 22:51 | arnorhs | I've got a big revision change coming up with almost a complete rewrite |
| 22:51 | arnorhs | and I'm doing real-time editing/updates of sharet tasklists through a lot of small ajax requests |
| 22:52 | arnorhs | so if you and I are editing the same tasklist in real time, you send an ajax request to edit and I have to pull it on a regular basis |
| 22:52 | arnorhs | I wanted to create a push mechanism by using "comet" (which isn't an actual technology but a term used to describe push through javascript) |
| 22:53 | arnorhs | I wanted to implement this thing in a language that is natively a process |
| 22:53 | arnorhs | and I've wanted to try clojure for a long time |
| 22:53 | Raynes | ->() |
| 22:53 | sexpbot | => () |
| 22:53 | arnorhs | so, this seemed like the perfect time |
| 22:54 | arnorhs | I thought about using web sockets (sexy) and I should actually do that instead of the comet thing.. but it's only supported in FF4, chrome and safari 5 (no IE support yet) |
| 23:08 | ihodes | arnorhs: that sounds really interesting |
| 23:08 | ihodes | arnorhs: as for sockets; are the people who'll be using your app using IE? |
| 23:08 | ihodes | arnorhs: i hate waiting for a shitty browser to play catch-up, and its market char is dropping fast (though i guess it's sitll significant) |
| 23:20 | arnorhs | ihodes: It's just about everybody |
| 23:20 | arnorhs | I have a few regular users and there are a lot of them using ie |
| 23:21 | arnorhs | I might just use comet for IE and web sockets for the rest.. and then gradually throw comet out |
| 23:22 | arnorhs | traditional comet is done through an invisible iframe and it works crappy in safari |
| 23:22 | arnorhs | so web sockets+comet |
| 23:22 | arnorhs | anyways |
| 23:22 | arnorhs | gn |
| 23:22 | arnorhs | it's 3:20 am here in Iceland |
| 23:24 | ihodes | goodnight :) |
| 23:24 | ihodes | it's just 11:30 here. plenty of time |
| 23:37 | tomoj | ihodes: websockets work in firefox? |
| 23:38 | tomoj | oh, FF4, huh? cool |
| 23:38 | ihodes | yeah. can't wait to use them everywhere soon :) |
| 23:44 | ihodes | haha *that* ff4 won't be seeing websockets any time soon |
| 23:45 | technomancy | not even on the DS remake? |
| 23:45 | ihodes | no, you're right. it'd really enhance the game ;) |
| 23:45 | ihodes | i'm sure it makes it into the DS |
| 23:46 | stacktracer | how do I set clojure.pprint/*print-miser-width* (for repl purposes)? |
| 23:47 | slyrus | and when is *print-circle* going to be implemented? |
| 23:48 | tomoj | does the DS have opera or is that just the wii? |
| 23:49 | technomancy | tomoj: it does, but it's slooooow. |
| 23:50 | technomancy | it's not built-in either; I had to order mine from Japanland |
| 23:53 | stacktracer | never mind ... *print-right-margin* is the thing I was looking for ... |