#clojure logs

2011-02-05

01:14irc_newbiehowdy
01:15ieureHello.
01:24mec_is there a variant of (source) that will show all the methods of a multimethod?
01:26amalloymec_: i don't think so, but see (.getMethodTable print-dup)
01:26danlarkinamalloy: clojure.core/methods
01:26danlarkin(doc methods)
01:26clojurebot"([multifn]); Given a multimethod, returns a map of dispatch values -> dispatch fns"
01:27amalloydanlarkin: ah. a nice sugar for the above
01:28mec_I tried that but just a bunch of "Source not found"
01:30sritchieamalloy: problem solved with cascading, btw -- there was indeed a way to serialize primitives without any special wrapper, it's just "off" by default
01:31amalloymec_: i don't think defmethod attaches metadata to the methods
01:31amalloyso you can't find the source
01:31sritchieamalloy: I'm using your method, of pushing to a DataOutputStream, I just don't have to pretend to be a byte array anymore
01:31amalloysritchie: convenient
01:31sritchieamalloy: less shameful!
01:32amalloybuffers and channels are supposedly the "new thing", and definitely faster if you care about that
01:33sritchieUnfortunately I have to conform to this interface: http://hadoop.apache.org/common/docs/r0.20.0/api/org/apache/hadoop/io/serializer/Deserializer.html
01:34sritchieamalloy: but I hear you
01:34amalloysritchie: whoa, implementing serialization yourself. i wonder if thrift might be easier
01:34danlarkininterfaces are awesome because you can reify them
01:34danlarkinit's subclassing that sucks
01:35amalloyor avro i guess, for hadoop
01:35amalloydanlarkin: i don't think anyone was complaining about interfaces
01:35danlarkinjust commenting
01:35sritchiedanlarkin: I was just pointing out that it forced me to use streams
01:36sritchieamalloy: for anything other than these primitive arrays, I'll certainly check out thrift, or some other serialization framework
01:36sritchiethe next thing I'll have to stream will most likely be parallel colt matrices
04:13fliebelmorning
04:14fliebelIs anyone here capable of navigating the Java XML jungle? I found a SAX serializer, which is what I thought I needed, but it says it's deprecated, and lists 2 other options I can't find.
04:15fliebel"This class was deprecated in Xerces 2.9.0. It is recommended that new applications use the DOM Level 3 LSSerializer or JAXP's Transformation API for XML (TrAX) for serializing XML. See the Xerces documentation for more information."
04:42fliebelJava makes fliebel angry :(
04:46fliebelWhy! A DocumentBuilderFactory, that produces DocumentBuilders, that can make Documents. Just give me the document, all right?
04:48jkruegerfliebel: so you are a JavaAversionAccumulator ?
04:50fliebeljkrueger: Yes, and making a XmlDslFactoryGeneratorFactoryCreator
04:50fliebelYou know, like Hiccup, but for XML, with namespaces and all.
04:52fliebelThe problem is that I can't find a way to simple generate some XML with Java. When I was on the point where I thought I found it, I noticed it said 'deprecated'.
04:53greghyou can always just write text
04:53jkruegerat times one gets the feeling that some java APIs get deprecated before they ever get released
04:54fliebelgregh: Before I started, I was under the impression there was a wealth of great XML libraries for Java.
04:57greghif by "great" you mean "Very big, large scale", I think you found them. :)
04:59fliebelgregh: The real problem is that that also seems to imply "business talk, complicated" and also "you *know* this stuff, right? so why explain?"
05:00fliebelAnyway, I finally found some examples how to write a DOm Document to XML, so with a dozen lines of factory cruft, that will get me there I think.
05:05fliebelI'll call my lib ArmageDOM, or WisDOM or SAXophone, or XMJ(eXtended Markup Jumble), or… any suggestions?
05:08jkruegeri like SAXophone
05:08jkruegerbut would have expected that to be a library name already
05:09fliebeljkrueger: Me to, but I am not technically using SAX. I was on the SAX trail, but I can;t find a decent serializer/writer
05:12jkruegerDOM minion
05:12fliebelDOMino :)
05:12greghDOMmage
05:13fliebelgregh: ?
05:14greghfrom the french expression "quel dommage" : "what a shame"
05:15fliebelhttp://en.wiktionary.org/wiki/dommage
05:16entropieDOMINATION!
05:23fliebelWhat I need is an implementation of org.xml.sax.ContentHandler that writes the tags somewhere.
05:48fliebelHuh? I try (.newInstance DocumentBuilderFactory) on http://download.oracle.com/javase/1.5.0/docs/api/javax/xml/parsers/DocumentBuilderFactory.html#newInstance() and get java.lang.IllegalAccessException: Class user$eval373 can not access a member of class javax.xml.parsers.DocumentBuilderFactory with modifiers "protected"
05:50fliebelThat constructor is protected, so you have to use newINstance, and then get the protected error...
05:51fliebelthis works: (. DocumentBuilderFactory (newInstance))
05:52fliebelWhy?
05:52clojurebotwhy not?
08:13raekfliebel: sometimes the reflector finds a private or protected method to be a better match type-wise
08:14raekfliebel: if the method or constructor is overloaded, and some of the overloaded variants are not public, you can use type hints to force the reflector to pick the right one
08:15fliebelraek: But why does that mean that
08:15raekthis is common when you have an instance of a private private class that implements a public interface
08:15fliebel(.newInstance DocumentBuilderFactory) does not work while (. DocumentBuilderFactory (newInstance)) does?
08:18fliebelI thought one was sortof a macro for the other.
08:20raekfliebel: I think (.method object) is only for instance methods
08:20fliebelah
08:20raektry (DocumentBuilderFactory/newInstance)
08:21fliebel*facepalm*
09:55fliebelThere must be a better way that doing mutual trampoline recursion…
11:02fliebelphew, it's working. https://github.com/pepijndevos/ArmageDOM
11:06fliebelIn only need to figure out a way to make it recursive in a good way.
11:09LauJensenHow do I open a regular cake/clojure project in Eclipse?
11:09fliebelI am currently in a situation where I have recursive mutual recursion. (I don't know a better wording for it)
11:14ejacksonLauJensen: WHAT ? You must have had one too many Fishshots last night my man... I can't believe I'm seeing you using something outside emacs :P
11:14LauJensenejackson: Im trying to help out a customer :)
11:15fliebelLauJensen: Is Eclipse one of those IDEs that only let you open eclipse project files?
11:15LauJensenYes
11:15LauJensenI know lein has a plugin somewhere which creates such a file
11:16fliebelLauJensen: Well, what Cake feature do you need that prevents you from using Leiningen to generate that file?
11:18LauJensenMy projects are usually quite firmly married to Cake, but I think I would be able to run the plugin even still
11:18LauJensenJust not build the project
11:37defnLauJensen: when you say firmly married, do you use a lot of cake plugins or have custom tasks or something?
11:37defndo you mean you use*
11:42LauJensendefn: custom tasks primarily
11:59robonoboyo
12:10fliebelrobonobo: yo
12:26cinch&(meta '(a))
12:26sexpbot⟹ {:line 1}
12:26cinch&(meta '[a])
12:26sexpbot⟹ nil
12:27cinchwhy is line added on a list?
12:31fliebelcinch: I think for debugging.
12:31fliebelSince most of the time lists are used for code, it is good to know where they are when one raises an exception.
12:31cinchmakes sense, was wondering why it's not on a vector
12:36fliebelWhat operations do and don't retain the meta of an object?
13:07amalloyfliebel: i'd tend to assume (wrongly, i'm sure), that no operations retain the meta, to avoid problems
13:12amalloyalso, fliebel, findfn is fixed:
13:12amalloy$findfn + [1 2 3] 6
13:12sexpbot[clojure.core/reduce clojure.core/apply]
13:15cinchfliebel: " In general, collection functions (conj, assoc, dissoc, and so on) are supposed to preserve metadata,
13:15cinchwhile sequence functions (cons, take, drop, etc.) are not. But there are exceptions. In Clojure 1.0, conj on
13:16cinch(from practical clojure)
13:29fliebelamalloy: Great, great :)
13:30fliebelcinch: Thanks, I shoudl look what Joy of Clojrue hast to say on the issue.
13:37amacIs there a form which allows something similar to loop/recur (tracking intermediate state while iterating over a series of elements) but with multiple recur points in the loop?
13:37amac...hard to phase that question
13:37amalloyamac: i think the best you can do is multiple loop forms
13:37amalloybut iterate or reduce may be able to do what you want in a different way
13:39amacmy problem is that in some cases I need to do extra passes over the elements, so they get temporarily skipped but processed later
13:40amalloyamac: and you can't condense that into a single pass of multiple-step processing?
13:42amacI can't think of a way to do it that won't fail in some edge cases
13:43amacbasically its a graph traversal, but if the graph contained disjoint subsets (groups of elements with no relation to other groups) it would break on a single pass
13:46amac...going to hack away at this some more, thank for the input
13:47amalloyamac: maybe it's hammock time :)
13:50amacamalloy: gotta watch that talk again :)
13:52fliebelamac: What does this disjoint subset graph look like? I can't really imagine what you're talking about.
13:57amalloyfliebel: a graph with points ABCDE: DE are connected, ABC are all interconnected, but no links between the groups
13:57amacsay you have a graph of 6 elements, 1 2 3 are connected and 4 5 6 are connected
14:00amacthe issue is that if you have a 7th element that connects 3 and 4 then they're no longer disjoint and need to be processed again
14:03fliebelamac: So it's a seq of connections? And what do you do with them? I understand what disjoined sets look like, but the representation and iteration is where I run into trouble.
14:03clojurebotc'est bon!
14:07amalloyclojurebot: your tendency to treat any sentence containing the word is as a definition is frequently misguided
14:07clojurebotIn Ordnung
14:09amacfliebel: yeah, its a seq of elements. I do a pass over the elements separating them into two sets based on their relationship, but if I hit an element without a relationship to one already processed its either disjoint (needs to be processed as its own graph) or needs to be processed when another element has been processed which has a relation to it
14:12fliebelI think reduce works. As I understand it, you could have the initial value as an empty seq of subgraphs, and then, for every element, either start a new subgraph, add it to one, or if it connects 2, concat them.
14:13amalloyfliebel: seconded
14:15amalloyamac: that would get you the set of disjoint graphs in one pass, and then you can work on each of them individually
14:15fliebelRemotely related: You could make a zipper for a graph, and have it walk in circles :D
14:16amalloyalthough, fliebel, i suspect you could speed things up by having the reduce/accumulator value be a map of nodes to the subgraph they're in, so that you can do fast lookup of the two endpoints of a node to see what graph they're in
14:16amalloyrather than a seq
14:18fliebelamalloy: I would agree with you, if I had any understanding of graphs.
14:20amalloyanyway, i'm off. ta-ta
14:21fliebelbye
14:21amacman, you're right that would simplify life considerably... most of the headaches were from pickning out the disjoint elements.
14:22fliebelamac: When you're done, I'd love to see it. I'm curious to the graph stuff.
14:24amacfliebel: sure
14:45fliebeloooh, now even node and redis have hosted services. waiting for clojure...
14:48sritchiehey all -- what's the best way to split a string in half? I have "003002", and want two strings "003", "002" -- I can do a clojure.contrib.string/partition by a regex matching a 3 digit number, but that feels clunky
14:51sritchie,(map (partial apply str) (partition 3 (drop 2 "12003002")))
14:51clojurebot("003" "002")
14:52sritchieactually, this is the end goal:
14:52sritchie,(map #(Integer/parseInt %) (map (partial apply str) (partition 3 (drop 2 "12003002"))))
14:52clojurebot(3 2)
14:56fliebel&(let [s "1234567890"] (map (partial apply str) (split-at (/ (count s) 2) s)))
14:56sexpbot⟹ ("12345" "67890")
14:57fliebelYou use of partition and drop seems to suggest you don;t just want to split it.
14:58fliebelsritchie: ^
14:59sritchiefliebel: sure, I should describe what I'm doing -- I've got a string of the form "DDXXXYYY", where XXX and YYY are representations of integers (x and y coordinates of a NASA MODIS tile)
14:59sritchiefliebel: I don't care about d -- I just want those two substrings, represented as integers
14:59sritchies/d/DD
14:59sexpbot<sritchie> fliebel: I DDon't care about DD -- I just want those two substrings, representeDD as integers
15:02fliebel&((juxt #(subs % 2 5) #(subs % 5 8)) "DDXXXYYY")
15:02sexpbot⟹ ["XXX" "YYY"]
15:04fliebelsritchie: In that case, this is the best I can do.
15:05fliebelIt even doe structural sharing with the original string :)
15:05sritchiefliebel: haha, more efficient than mine!
15:06sritchieit'd be nice if clojure.contrib.string had a partition method that took a number n, like core's
15:06sritchierather than just a regex
15:06anthony__I'm stuck on something that I think is trivial. I want
15:07anthony__to have a separate thread print "Hi", and (future (println "Hi")) works for that.
15:07anthony__But (repeatedly 5 (future (println "Hi"))) doesn't work (to do 5 threads). What am I doing wrong?
15:07fliebelsritchie: There is clojure.string now ;)
15:07fliebelanthony__: repeatedly takes a function.
15:08anthony__*sigh* Thanks...I knew that, too.
15:08fliebelBut you want pmap or pcalls I think.
15:08anthony__Ah! I tried pmap first, but it didn't quite work. Never heard of pcalls, and it looks perfect.
15:09fliebelor pvals if you don;t want to make functions ;)
15:09markskilbeckHi, all. Regarding convention, when does one use naming such as *symbol*?
15:10fliebelmarkskilbeck: For vars that can be dynamically changed, via binding.
15:10sritchiemarkskilbeck: earmuffs! from the clojure assembla:
15:10sritchieUse *earmuffs* only for things intended for rebinding. Don't use a special notation for constants; everything is assumed a constant unless specified otherwise.
15:10sritchiehttp://www.assembla.com/wiki/show/clojure/Clojure_Library_Coding_Standards
15:10markskilbeckfliebel, sritchie: Thank you very much.
15:10anthony__fliebel: I'm having trouble finding documentation for pvals. Is that in a separate library? (doc pvals) doesn't work in my REPL
15:11fliebeloh maybe it's pvalues or whatever.
15:11markskilbeck,(doc pvalues)
15:11clojurebot"([& exprs]); Returns a lazy sequence of the values of the exprs, which are evaluated in parallel"
15:11anthony__fliebel: markskilbeck: Thanks. Sorry for the trivial questions.
15:13sritchie,(map (partial subs "11222333") [2 5] [5 8])
15:13clojurebot("222" "333")
15:13sritchieworks, but is misleading!
15:15fliebel&(map (partial apply subs "11222333") [[2 5] [5 8]])
15:15sexpbot⟹ ("222" "333")
15:17sritchiefliebel: not misleading anymore
15:17fliebel&(map (partial apply subs "11222333") (partition 2 1 (range 2 9 3))) ; evil
15:17sexpbot⟹ ("222" "333")
15:18fliebel&(map (partial subs "11222333") (range 2 6 3)(range 5 9 3))
15:18sexpbot⟹ ("222" "333")
15:19fliebelokay, the [[2 5] [5 8]] was the best
15:19sritchieon monday, I'm going to get the other two guys on my team switched over from python to clojure --
15:20sritchieI'll include all of these as anonymous functions with documentation, to give them some samples of
15:20sritchiethe many ways to slay a fn
15:20fliebelsritchie: What kind of stuff are you working on?
15:21sritchiefliebel: a hadoop project, using nathanmarz's cascalog, to predict deforestation rates in tropical areas
15:21sritchiewe're using NASA's MODIS tile data, with a few other sources
15:21sritchieMODIS tiles supply their TileID in that "AAXXXYYY" format... I just needed a quick parser to get the x and y coordinates of a tile
15:22fliebelsritchie: So you're actually changing from Python to Clojure mid-project?
15:22sritchiefliebel: they've finished a first version of the project, that works with EC2, but it's quite fragile
15:22sritchiehttp://www.cgdev.org/section/initiatives/_active/forestmonitoringforactionforma
15:23sritchiefliebel: it's working with 1000m data -- nasa provides 500m and 250m, which will be far better, but the current system doesn't scale
15:23sritchieI'm redoing it in clojure, with hadoop -- it's probably going to clock in at 10% of the code, something like that
15:23sritchiewhat with shedding the file IO, etc
15:26fliebelsritchie: Very good work!
15:27sritchiefliebel: it's been really fun
15:30arohneris there a "drop-nth" function anywhere, or do I need to write it? i.e. returns a seq with the nth item missing
15:30fliebelsritchie: Do you also monitor forest *growth*? It would be interesting to compare.
15:30sritchiethat's really interesting, I'm sure it would be
15:30fliebel(mapcat (partition 4))
15:30sritchiewe don't do that now
15:31sritchiebut with clojure, everything becomes far more composable
15:31sritchieso we can play with different methods of analyses, or pull in new datasets with little effort
15:31doubleagentWhat is wrong here? https://gist.github.com/812758
15:32markskilbeckI'm trying to generate a vector, x * y in length, of random numbers, though I don't know much (if any) Clojure. Any hints? Preferably *not* code.
15:33doubleagentoops
15:33fliebelsritchie: Great! Saying "Xkm^2 of deforestation" is not very meaningful without knowing how much new forest there is. ;)
15:33markskilbeckdoubleagent: at a glance, I'd say its existence, or lack thereof, is the issue.
15:33markskilbeck;)
15:33sritchiewe're tracking the percent probability that a given square kilometer of forest has been deforested, and projecting that forward in time
15:34Chousukemarkskilbeck: into, rand-int, take and repeatedly :P
15:34sritchiefliebel: but you're right!
15:34markskilbeckChousuke: thank you, sir!
15:35doubleagentmarkskilbeck, lol. specifying the context should provide it. Just wanted to know if this is a Cake bug or what?
15:35fliebelChousuke: into?
15:36Chousukefliebel: for the vector.
15:36Chousukefliebel: but I guess vec works too
15:36fliebelright
15:37fliebelChousuke: Another thing to consider is, if he does not know Clojure very well, does he really want a vector.
15:37markskilbeckI'm right here, guys.
15:37fliebelmarkskilbeck: How is it going?
15:38markskilbeckfliebel: uno momento.
15:42markskilbeck,(repeatedly 16 #(rand-int 10))
15:42clojurebot(8 6 6 8 8 4 6 7 3 4 ...)
15:42markskilbeckIs that along the right lines?
15:42Chousukeyes.
15:42markskilbeckBadassery.
15:42Chousukeactually I forgot repeatedly takes a count argument too :)
15:42markskilbeckIt being a vector isn't important, I don't think.
15:42doubleagentsorry about that - here's the issue: https://gist.github.com/812768
15:43markskilbeckWhen should one user a vector, when should one use a list, etc.?
15:43Chousukeuse seqs whenever you can
15:43Chousukeif you need random access, use vectors
15:44Chousukevectors are also good for literals wherever you need a seq
15:44markskilbeckChousuke: could you elaborate on that last statement?
15:45Chousukemost functions that want a seq actually call the seq function on the argument
15:45Chousukeso you can pass a vector instead and it works
15:46markskilbeckAh, I see.
15:46Chousukeie. you can just call (foo [1 2 3]) instead of (foo (list 1 2 3)) or something.
15:46markskilbeckJolly good.
15:47LauJensenhiredman: Looks like you got caught with your hand in the cookie jar :(( http://www.youtube.com/watch?v=oJagxe-Gvpw
15:49danlarkinthat's not very nice Lau
15:49LauJensendanlarkin: I didnt record it, its some security guy who put up honeypots
15:49LauJensen(promise)
15:49doubleagentsolved it - it wasn't pulled into the namespace
15:50danlarkinoh, honeypotting is fine, but insulting hiredman is rude
15:50LauJensendanlarkin: hehe, thats funny you should say so
15:50fliebelghe, is hiredman a haxor who runs perl all the time on windows SP3?
15:50doubleagentninjudd, there's an error in your documentation
15:52fliebelLauJensen: Why is that funny?
15:53LauJensenfliebel: I think its fairly common knowledge that hiredman is one of the most rude and insulting personalities in the land of clojure, so objecting to having some fun with him is at best funny, at worst hypocritical
15:55fliebel… I never noticed that.
15:55markskilbeckMan I love the song on that video.
15:56LauJensenmarkskilbeck: yea its great
15:59fliebelhttp://xkcd.com/481/
16:01markskilbeckThankfully no one is around to hear me singing falsetto ^-^
16:01LauJensenfliebel: haha, that would be great
16:01LauJensenmarkskilbeck: haha
16:01fliebelhttp://freetts.sourceforge.net/docs/index.php + sexpbot :)
16:03jaskiratfliebel: that would be fun! :)
16:04fliebeljaskirat: One would need to couple it with an upload service… but it's an interesting idea...
16:06jaskiratfliebel: hmm, soundcloud.com?
16:08fliebeljaskirat: http://code.google.com/p/soundcloudapi-java/
16:11fliebelI'm all for it! $speak nickname -> soundcloud link of last message :D
16:13jaskiratfliebel: soundcloud + emms
16:13jaskiratfliebel: http://www.emacswiki.org/cgi-bin/wiki/EMMS
16:13jaskiratfliebel: never used emms though.. hmm
16:15fliebeltime to go
16:15fliebelbye
16:25shortlordhow can I evaluate a form in a macro? I am passing 2 forms, the first should be evaluated to decide whether to execute the second form or not
16:26Chousukewhy not just generate an if expression? :/
16:29Chousukeif you want a conditional expansion you can use eval but be aware that it's limited
16:29shortlordChousuke: doh, of course! thx a lot, it works now
16:29sritchiehey all -- if i have something like this --
16:29sritchie,((juxt #(* 2 %) #(vector 2 %)) 3)
16:29clojurebot[6 [2 3]]
16:29sritchieie, one function that returns a number, one that returns a collection,
16:29shortlordChousuke: I still have quite a few problems to think of macros purely in terms of code transformation
16:29jassishortlord: some thing like (defmacro x [f1 f2] `(if (f1)(f2)))
16:29jassi
16:29Chousukeshortlord: yeah, macros don't really "execute" code.
16:30sritchiewhat's the best way to end up with a list of all of the numbers, merged?
16:30Chousukeshortlord: they just generate it and the result is what gets run at runtime.
16:30sritchieto cons or merge them all, and end up with a list one deep
16:30shortlordsritchie: what do you mean, 'merged'? you can use 'flatten' to put all the elements into one big list
16:30jassishortlord: oops that should be ~f1 & ~f2
16:31sritchieshortlord: flatten sounds right
16:32shortlordChousuke: yeah, macros definitely are a fascinating topic. I really need to get a bit more practice with them
16:33Chousukeshortlord: honestly the trickiest thing about macros is knowing when to use them :)
16:35shortlordChousuke: that's what I am still figuring out. So far I have been using them as little as possible, preferring functions wherever possible and just using them in cases like this where the arguments must not be evaluated
16:38Chousukeshortlord: that's a good rule of thumb :P
16:38shortlordhah, nice :D
16:39jaskirat`whats the best way to look up documentation for clojure functions while inside the repl? i thought the :doc would be the best way but doesnt seem to work. like python has help() or __doc__, something like that?
16:40kjeldahl,(doc vec)
16:40clojurebot"([coll]); Creates a new vector containing the contents of coll."
16:40shortlordjaskirat`: doc should work, simply do (doc some-name)
16:40jaskirat`thanks guys
16:40jaskirat`i was trying (:doc blah)
16:41amacyou can also use (source some-name) if you need more information
16:41amacwill show you the implementation
16:42jaskirat`amac: hmm, that should be usefull sometimes
16:43amacjaskirat`: if you wanted to learn more about macros, source some macros for inspiration :)
16:44jaskirat`amac: :)
20:52hiredmanhttps://github.com/ztellman/lamina/blob/master/src/lamina/core/fn.clj#L17 well that looks familiar
21:36sritchiehey all -- is it possible to define an array of unsigned integers in java?
21:37brehautsritchie: if there are unsigned integer primatives (i dont think there are) then yes, otherwise no?
21:37sritchiebrehaut: I didn't think there were unsigned int primitives, just wanted to check if anyone had had to deal with that issue
21:38brehautpeople must have dealt with it in javaland at least
21:38sritchiethe goal is to get out of javaland as fast as possible!
21:39sritchiebrehaut: in any case, problem avoided, the REPL tells me this method will read into a java primitive byte array
21:39sritchieprogress!
21:52sritchiewhen did clojure start supporting doc strings on def?
21:53sritchieI'm using leiningen, with 1.2, and still getting "Too many arguments to def"
22:04mreynoldssritchie: You may be interested to know that Java bytes are also signed http://www.jguru.com/faq/view.jsp?EID=13647
22:04mreynoldsI think it's a bytecode thing. Anyway, if you have something that works, awesome.
22:06sritchiemreynolds: no, that's helpful. I'm interacting with a java object, a dataset, that needs to take an array and read into it -- it takes an optional parameter for datatype, and I know that the source data is either an unsigned byte, signed int (16 bits) or unsigned int
22:07sritchiethe default, with that parameter left out, is an array of 32 bit ints
22:07sritchiewhich makes sense, given that we're talking about a java API
22:08mreynoldssritchie: I have strong memories of Java only having signed types, primarily because of the simplicity of dealing with fewer types at the bytecode level, but don't hold me to that. Are you just passing the data through, or are you trying to deal with it in clojure/java?
22:09sritchiethe ReadRaster method on this object takes that int array and a few other things, and fills it with ints -- then I'm creating a lazy seq with (indexed (partition chunk-size array))
22:09sritchiewhich serializes the data back out into hadoop-land
22:53sritchiehas anyone had trouble with a docstring on def?
22:53sritchiedefn works great, of course, but def won't accept one -- i get a "too many arguments to def" error