text:
0:00 amalloy: brehaut: nah, i should just do it right the first time instead of flattening the wrong version :P
0:00 brehaut: amalloy: haha sure :P
0:00 amalloy: &(into [] (for [[k v] {3 1, 2 2, 0 3}] (repeat v k)))
0:00 sexpbot: ⟹ [(3) (2 2) (0 0 0)]
0:00 amalloy: haha nope, not that either
0:00 dnolen: &(reduce concat (for [[k v] {3 1, 2 2, 0 3}] (repeat v k))))
0:00 sexpbot: ⟹ (3 2 2 0 0 0)
0:00 amalloy: &(mapcat (fn [[k v]] (repeat v k)) {3 1, 2 2, 0 3})
0:00 sexpbot: ⟹ (3 2 2 0 0 0)
0:01 brehaut: amalloy: nice
0:03 amalloy: mapcat solves a lot of problems if you remember it's there
0:03 dougbradbury: ^^
0:04 dougbradbury: amalloy:, dnolen:, brehaut: et al thanks!
0:04 I'll look at mapcat
0:04 brehaut: amalloy: it does. i knew it was possible with seq-m but couldnt remember the sane name :P
0:04 dougbradbury: haven't used it yet
0:05 dnolen: &(mapcat (juxt inc dec) [1 2 3])
0:05 sexpbot: ⟹ (2 0 3 1 4 2)
0:05 brehaut: &((juxt inc dec) 1)
0:05 sexpbot: ⟹ [2 0]
0:05 brehaut: i love juxt
0:07 amalloy: brehaut: juxt is great. fnil is another HOF that's surprisingly useful
0:07 dnolen: &((juxt true? false?) true)
0:07 sexpbot: ⟹ [true false]
0:07 amalloy: &((juxt :a :b :c) {:a 1 :b 4 :c 9})
0:07 sexpbot: ⟹ [1 4 9]
0:08 brehaut: amalloy: im quite confused about what fnil does
0:11 amalloy: &(let [m {:a 1}] (update-in m [:a] (fnil inc 0)))
0:11 sexpbot: ⟹ {:a 2}
0:11 amalloy: &(let [m {:a 1}] (update-in m [:b] (fnil inc 0)))
0:11 sexpbot: ⟹ {:b 1, :a 1}
0:12 brehaut: amalloy: awesome
0:12 amalloy: brehaut: you can often use fnil to gloss over the base case of your recursion
0:14 brehaut: amalloy: yeah thats really cool. definately adding it to my toolbox
0:16 amalloy: &(map (fnil (memfn length) "") ["foo" nil "x"])
0:16 sexpbot: java.lang.IllegalStateException: Var clojail.core/tester is unbound.
0:16 amalloy: &(doall (map (fnil (memfn length) "") ["foo" nil "x"]))
0:16 sexpbot: ⟹ (3 0 1)
0:17 amalloy: that is a really annoying bug to fix in sexpbot, btw. i've been trying to wrap my head around it for a couple days
0:19 brehaut: im off. have a good rest of your day
1:44 replaca: Q: does anyone know the idiom to get clojure.walk/walk to stop recursing at some point in its walk?
1:45 I want to create a modified version of loop that modifies any returns inside, but doesn't modify nested loops
1:46 s/returns/recurs/
1:46 sexpbot: <replaca> I want to create a modified version of loop that modifies any recurs inside, but doesn't modify nested loops
1:47 amalloy: replaca: walk doesn't recur at all; it's post-walk that adds the recursive-ness
1:48 you want to call walk with an <inner> function like (fn [x] (if (some-condition x) x (some-transform x)))
1:49 replaca: amalloy: ahh, that makes the code make sense! Thanks for the insight - I knew I was missing something
1:55 brehaut: i think i have succeeded in writing my scraggliest piece of clojure so far. unimpressed with myself; there must be a cleaner way.
1:55 amalloy: brehaut: an admirable attitude, and expressed in such a way that i can't help but laugh
1:55 brehaut: amalloy: hah :)
1:56 amalloy: any ideas on 'handle-post' in https://
1:57 the nested if-let in a try are just plain nasty
2:00 amalloy: brehaut: hrm. there's no obvious way to improve it
2:00 brehaut: amalloy: le sigh
2:01 amalloy: brehaut: it makes me think of cond-let, though. i wonder if that can help somehow
2:03 brehaut: hmm. someone was asking about maybe-m which did stuff on failures. clearly this is my penance for not working harder on his problem
2:03 cond-let looks interesting though
2:03 amalloy: brehaut: it is interesting, but i don't think we can apply it to this problem easily
2:04 brehaut: amalloy: agreed
2:05 amalloy: &(cond-let [[a b]] nil {a b} [1 2] (list a b))
2:05 sexpbot: java.lang.Exception: Unable to resolve symbol: cond-let in this context
2:05 amalloy: (use 'clojure.contrib.cond)
2:05 &(use 'clojure.contrib.cond)
2:05 sexpbot: java.io.FileNotFoundException: Could not locate clojure/contrib/cond__init.class or clojure/contrib/cond.clj on classpath:
2:05 amalloy: oh well
2:06 brehaut: (1 2)
2:06 according to my repl
2:07 amalloy: brehaut: yeah, i hoped it would be. cond-let is kinda inside-out from when-let and if-let
2:08 brehaut: im not quite sure i understand what is going on
2:09 i mean, i can kind of see whats happening, but im not quite sure how it deviates from cond
2:10 amalloy: brehaut: it gives you bindings from the test which you can use in the expr
2:11 ie, it evaluates first nil, and then [1 2]; the first one that evaluates to true it binds to [[a b]], and then evaluates the corresponding expression
2:11 brehaut: ah right now i see
2:11 clever
2:12 amalloy: brehaut: yes, it looks clever but i've never found a condition where it seems to fit. so maybe not
2:12 brehaut: amalloy: it doesnt seem to quite suit what i need
2:12 amalloy: no
2:13 brehaut: amalloy: i wonder if ideally id be best suited by a form that has pairs of expressions, first of each pair is the expression to try. if it fails (ie results in nil) then the second of the pair is evaluated and that isthe result of the expression. if i succeeds it moves on to the next pair and repeats. once there is no more pairs it returns the final result
2:14 except that it gets horrible fast
2:14 amalloy: brehaut: so you want "and-let"
2:14 replaca: brehaut: isn't that just cond with a lot of "not"s
2:14 brehaut: amalloy: that would be a good name for it
2:15 replaca: i missed a detail. the result of each successful pair is passed onto the next as an argument
2:15 lets see if i can do a hypothetical
2:16 replaca: brehaut: ok, that's different
2:17 sort of like a mash-up of cond and -?>
2:17 brehaut: -?> is new to me
2:18 (attempt [foo ({:foo {:bar 2}} :foo)] "no foo present"
2:18 [r (:bar foo)] "found foo but not bar"
2:18 r) ; => 2
2:18 amalloy: brehaut: clojure.contrib.core/-?>
2:19 brehaut: this is really looking monadic to me :(
2:19 clearly im on the wrong track if thats the case
2:20 amalloy, replaca: cheers for the -?> pointer. looks handy
2:25 is there a function to determine the available arity(s) of a fn?
2:27 amalloy: brehaut: none that i know of, but you can do it with a var, sorta
2:28 &(-> partition var meta :arglists)
2:28 sexpbot: ⟹ ([n coll] [n step coll] [n step pad coll])
2:28 _ato: brehaut: http://
2:28 amalloy: &(->> partition var meta :arglists first (map count))
2:28 sexpbot: java.lang.UnsupportedOperationException: count not supported on this type: Symbol
2:28 amalloy: &(->> partition var meta :arglists (map count))
2:28 sexpbot: ⟹ (2 3 4)
2:29 brehaut: amalloy _ato: cheers
2:30 amalloy: brehaut: but i'll echo the sentiments on stackoverflow: relying on this is unlikely to work well in practice
2:30 brehaut: amalloy: i was worried about that
2:30 esp seeing as the comments are that its not really workable on anon funs
2:30 amalloy: right, like i said: only for vars
2:31 brehaut: amalloy: yeah. oh well.
2:31 amalloy: well. i suppose someone could attach arglist metadata to the anonymous functions they return you, but...
2:31 _ato: IIRC you can do it with java reflection on anon fns
2:31 brehaut: yeah thats unlikely to happen!
2:31 _ato: not sure if that breaks with primitive args in 1.3 though
2:32 brehaut: _ato that might be something i put off for now
2:32 amalloy: _ato: i don't think primitives will break it, but anon functions with multiple arities would
2:33 _ato: http://
2:33 see Achim's answer
2:34 amalloy: yeah, that's a good answer
2:34 "here is some clever code that does what you want. but don't use it, it's really a bad idea"
2:35 brehaut: im comfortable with just catching the exception and having really minimal autodocumentation for these handlers
2:35 cheers for all the pointers
3:54 Raynes: ping?
3:54 Raynes: brehaut: Furious pong.
3:55 brehaut: im not quite sure what to make of that!
3:55 Raynes: :p
3:55 brehaut: so as to not duplicate effort on another project, did you have any partcular blog api's you were planning to start work on ?
3:56 Raynes: brehaut: Wordpress mostly. I wanted to write a library for all of the major blogging engines, but I'm not sure how feasible that is given differences in APIs.
3:56 I need wordpress as a prerequisite for my blog editor.
3:56 brehaut: Raynes: so you are planning to consume their APIs rather than reimplement them?
3:57 Raynes: i was planning to implement both ends of pingback next just as a heads up
3:57 Raynes: The former.
3:57 brehaut: sweet as. that should mean we avoid duplicating effort
3:58 Raynes: I haven't started work on anything and didn't have any plans on doing so in the immediate future, so no duplicating going on here. <3
3:58 I've been busy on a super secret project lately.
3:59 brehaut: heh :)
4:04 AWizzArd: Will protocol fns always dispatch to the most specific type?
4:08 raek: AWizzArd: http://
4:13 AWizzArd: raek: thx
4:20 ejackson: morning all
4:56 fbru02: Hey all , don't want to bring back the thread about primitive support, but just want to check that i understand correctly According to this : http://
5:02 fliebel: morning
5:02 fbru02: fliebel: morning !
5:03 _ato: fbru02: as arguments and return values yes. You could already use primitives within a fn, but they would be boxed when passed to another fn
5:03 fbru02: _ato: thanks
5:05 fliebel: This morning I found a very good argument for the new pods, and why they should not do the lock managing thing. You know why? Because it'll be awesome to have Podrace conditions! :)
5:16 fbru02: _ato: the other day i was reading this http://
5:16 fliebel: nice :D
5:30 Leonidas: what is the name of the function to divite a seq into two, depending on a predicate?
5:30 *divide
5:30 fliebel: split-with
5:31 Leonidas: fliebel: thanks, exactly what I was looking for
5:42 Raynes: Morning cemerick.
5:43 cemerick: morning :-)
5:43 Raynes: cemerick: Been doing much book writing lately?
5:44 cemerick: Raynes: my usual amount. I've been on the same cadence since ~October.
5:45 ejackson: cemerick: is the book going to built using Maven, like the Maven book ?
5:45 cemerick: ejackson: no, O'Reilly has its own tooling platform. I've no idea what drives it.
5:46 All the code in the book will likely be tested via maven, though.
5:46 ejackson: if you write in LaTeX, then the whole process is just like coding.... How fun :)
5:47 deployment to pdf, hahahaha
5:48 cemerick: They're very anti-latex. Non-semantic markup, etc.
5:49 ejackson: I guess they'd know. Still, it seems like a powerful toolchain.
5:51 cemerick: My impression of their impression is that it doesn't play well with others, in various ways.
5:51 e.g. if you're Knuth or writing a dissertation, it seems just fine because you can do things your way
5:51 If you're trying to keep a "house style" across 100's of books, it's just a PITA. *shrug*
5:52 I actually figured I'd have to learn latex for the book, but asciidoc is **way** simpler. :-D
5:52 Raynes: I'm using Lyx for my book. LaTeX without having to deal with LaTeX.
5:52 ejackson: In our lab we had a latex stylesheet that did exactly that. I grant that requires an in house wizard though.
5:53 Raynes: Lyx has been a joy to write with so far.
5:53 ejackson: Glad to hear it. LaTeX is marvellous.
5:54 mrBliss: Raynes: what's your book about?
5:54 fliebel: Raynes: You're writing a book? And, LaTeX is the math thing, right? You write books with that?
5:54 Raynes: mrBliss: Clojure
5:54 LaTeX is for *
5:54 ejackson: cemerick: actually, I'm suprised to hear that argument, given that all the techie journals ask for LaTeX and manage to publish in a house style.
5:54 mrBliss: Raynes: what's gonna be your focus?
5:55 ejackson: fliebel: latex is a document layout language. Its particularly good at doing maths, hence the association.
5:55 cemerick: ejackson: I'm not sure anyone else operates at O'Reilly's scale.
5:55 fliebel: okay
5:55 ejackson: cemerick: this is true :D
5:55 cemerick: In any case, insofar as their approach didn't force me to use latex, I'm happy for it. ;-)
5:55 Raynes: mrBliss: Freeness. It's licensed under a CC license and will be made freely available upon completion. It is not aimed at anybody in particular, but the book is an introductory book that expects some programming knowledge in any given language.
5:56 cemerick: I remember your editor from the Conj.
5:56 Julie Steele.
5:56 cemerick: Yup, that's her.
5:56 Raynes: One of the few women that attended.
5:56 My own book has been keeping me away from doing tech review on your book. :(
5:57 I'm paranoid that if I don't hurry with the tech review, I'll get way behind when more drafts are out.
5:57 bobo_: Someone should write a book about web devlopment or statistics in clojure. so i can read it =)
5:58 cemerick: Raynes: I think that's a fair bet. You've got to keep your own cadence. ;-)
5:58 * fliebel notes bobo_'s comment
5:58 ejackson: bobo_: an interesting idea indeed....
5:58 cemerick: bobo_: @marick is doing a book on Ring, FWIW
5:58 Raynes: mrBliss: Of course, it isn't being published by anybody, so if anybody wants printed copies, they'll have to print it themselves.
6:00 bobo_: cemerick: oh he is? awesome
6:01 mrBliss: Now that we're on the topic of books: which one should I read first "On Lisp" or "ANSI Common Lisp". Or does reading one make the other redundant?
6:03 bobo_: a mixed book with one chapter on web development, one on statistics, and other more practical things would also be nice
6:03 fbru02: bobo_: clojure in action kinda does that
6:03 Raynes: Well, I might self-publish printed copies while making the pdf free.
6:03 cemerick: bobo_: That almost perfectly describes our book, actually.
6:04 bobo_: fbru02: it does? and i thought i have read clojure in action =)
6:04 fbru02: bobo_: i thought i read it too :)
6:04 bobo_: cemerick: yours is practical clojure?
6:04 Raynes: My book is going to have a chapter devoted to creating a library and an application that uses that library. Using cake. Probably some stuff on web development and whatever else I feel like talking about.
6:04 cemerick: bobo_: no: http://
6:05 bobo_: ah
6:05 ejackson: Raynes: thought of pre-publishing on a blog ? Would be nice for rapid iteration and feedback.
6:05 Raynes: I enjoyed Real World Haskell's chapters walking through the creation of real things.
6:06 fbru02: Raynes: i was thinking that too ! I even grabbed my copy of RWH
6:07 Raynes: ejackson: I've been giving drafts to a lot of people from different walks of life, including non-Clojure and non-Lispers. I'll probably give it to more and more as I write more. I'll probably throw the final drafts up on my blog and let people give me feedback before I totally finalize the book.
6:07 ejackson: groovy
6:07 clojurebot: Titim gan éirí ort.
6:08 ejackson: $botsnack
6:08 sexpbot: ejackson: Thanks! Om nom nom!!
6:08 ejackson: take that clojurebot ! ha
6:09 Raynes: $huggle ejackson
6:09 * sexpbot Hugglez ejackson. I lubs yous.
6:09 ejackson: oh lord
6:14 Raynes: It's surprising that I've written as much as I have so quickly. Especially given that I wrote more typos than coherent sentences.
6:14 Gigaroby: hello guys
6:16 can I ask a question ?
6:16 fliebel: Gigaroby: No!
6:16 Welll, yes of course
6:16 Gigaroby: thanks
6:16 I'm new to clojure
6:16 fliebel: And to IRC...
6:16 Gigaroby: and I'm trying to write somethink that make sense
6:16 yep both
6:16 never used
6:17 irc
6:17 what am I doing wrong btw ?
6:17 fliebel: Gigaroby: "Don't aks to ask"
6:17 Gigaroby: good
6:17 I was looking
6:17 for a function
6:18 to count how many elements are in a collection
6:18 like
6:18 fliebel: (and type a whole sentence before you hit enter)
6:18 Raynes: &(count [1 2 3 4])
6:18 sexpbot: ⟹ 4
6:18 Gigaroby: no
6:18 not that
6:18 I meant (count 1 '( 1 2 4 5 1 5 2))
6:18 fliebel: $(distinct [1 2 3 1 2])
6:18 Gigaroby: -> 2
6:19 Raynes: Oh. I see.
6:19 mrBliss: $(count (filter #{1} '( 1 2 4 5 1 5 2)))
6:19 Raynes: &(distinct [1 2 3 1 2])
6:19 sexpbot: ⟹ (1 2 3)
6:19 Raynes: Ampersand, silly.
6:19 mrBliss: &(count (filter #{1} '( 1 2 4 5 1 5 2)))
6:19 sexpbot: ⟹ 2
6:19 fliebel: The PHP I did yesterday got me I think :(
6:20 Gigaroby: ok that what I meant I just thought there was a function I didn't see
6:20 Raynes: &(group-by identity [1 2 3 4 5 1 5 2])
6:20 sexpbot: ⟹ {1 [1 1], 2 [2 2], 3 [3], 4 [4], 5 [5 5]}
6:21 Raynes: &((group-by identity [1 2 3 4 5 1 5 2]) 1)
6:21 sexpbot: ⟹ [1 1]
6:21 Raynes: Fun.
6:21 mrBliss's example is better, of course. Still, fun.
6:21 Gigaroby: yeah
6:21 good
6:21 mrBliss: Gigaroby: Clojure's count is CL's length, not CL's count.
6:21 fliebel: Poor Gigaroby, asks for one solutions, gets ten :)
6:22 Gigaroby: better than 0 anyway
6:22 thanks a lot
6:24 fliebel: &(get 1 (frequencies [ 1 2 3 1 2 3]))
6:24 sexpbot: ⟹ nil
6:24 fliebel: &(get (frequencies [ 1 2 3 1 2 3]) 1)
6:24 sexpbot: ⟹ 2
6:25 Gigaroby: a set used like a function just test the membership of the argument ?
6:25 fliebel: $huggle frequencies
6:25 * sexpbot Hugglez frequencies. I lubs yous.
6:26 Raynes: fliebel: Ah! I knew there was something I was forgetting.
6:26 mrBliss: Gigaroby: correct
6:26 Gigaroby: ok
6:26 it's weird not having all the usual loops and stuff
6:27 mrBliss: Gigaroby: What's your background? Common Lisp, Ruby, Python, Java, ...?
6:27 Gigaroby: Python and Java at most
6:27 some php
6:27 some C
6:27 fliebel: Gigaroby: Same as me :)
6:28 mrBliss: Gigaroby: I thought Common Lisp, since the 'count' you suggested, does exactly what you need in Common Lisp :-)
6:28 Gigaroby: mrBliss no just get a clojure manual on the kindle sounded like fun
6:29 infact it was btw
6:29 fliebel: &(reduce #(if (= %2 1) (inc %1) %1) 0 [1 2 3 2 3 1])
6:29 sexpbot: ⟹ 2
6:31 fliebel: &(keep (map #{1} [1 2 3 1 2 3]))
6:31 sexpbot: java.lang.IllegalArgumentException: Wrong number of args (1) passed to: core$keep
6:31 mrBliss: Gigaroby: besides the good books that are currently available, http://
6:31 fliebel: &(keep identity (map irc://irc.freenode.net:6667/#%7B1} [1 2 3 1 2 3]))
6:31 sexpbot: java.lang.Exception: Unmatched delimiter: }
6:31 Gigaroby: mrBliss, thanks I'll have a look but when I begin a new language I like to have a manual to follow
6:32 fliebel: huh?
6:32 * fliebel actually wants to get 10 solutions.
6:33 mrBliss: fliebel: another one for your list: ##(count (remove (complement #{1}) '(1 2 3 1 2 3))) ; pretty similar to my previous solution though
6:34 sexpbot: ⟹ 2
6:36 Gigaroby: mrBliss, the first is my favourite I think
6:37 AWizzArd: &seen AWizzArd
6:37 sexpbot: java.lang.Exception: Unable to resolve symbol: seen in this context
6:37 mrBliss: Gigaroby: it's probably the most idiomatic
6:37 AWizzArd: Raynes: can you add a $seen fn to the sex bot?
6:38 Raynes: $seen AWizzArd
6:38 sexpbot: AWizzArd was last seen talking on #clojure 10 seconds and 787 milliseconds ago.
6:38 Raynes: Normal commands are prefixed with $, while code is prefixed with & for evaluation.
6:39 fliebel: &(count (nth (partition-by identity (sort [ 1 2 3 1 2 3])) 0))
6:39 sexpbot: ⟹ 2
6:43 fliebel: 5 distinct solutions so far.
7:01 http://
7:17 Gigaroby: how do you do != in clojure ?
7:18 Raynes: not=
7:18 &(not= 3 3)
7:18 sexpbot: ⟹ false
7:21 Gigaroby: thanks Raynes
7:29 _ato: &((fn f [[x & xs :as coll]] (cond (= coll '(1)) 1, (nil? xs) 0, :else (apply + (map #(f (take-nth 2 %)) [coll xs])))) [1 2 3 4 5 1 5 2])
7:29 sexpbot: ⟹ 2
7:30 Raynes: Holy God, I've just went blind.
7:38 _ato: &(let [s (sort [1 2 3 4 5 1 5 2])] (- (.lastIndexOf s 1) (.indexOf s 1) -1))
7:38 sexpbot: ⟹ 2
7:40 AWizzArd: Raynes: ah ok
7:41 $seen rhickey
7:41 sexpbot: rhickey was last seen quitting 2 weeks and 2 days ago.
7:41 Raynes: $seen stuarthalloway
7:41 sexpbot: stuarthalloway was last seen quitting 4 weeks ago.
7:42 Raynes: If not for chouser, I'd feel like a chick without a hen.
7:52 rsenior: I've got a -main function (invoking via lein run) and I am trying to get console input from (.readLine *in*) or (read-line) via that main function and for some reason (.readLine *in*) does not prompt for input and always just returns nil
7:52 is it possible that something else has grabbed System/in?
8:03 probably too early for an I/O question :-)
8:04 mids: rsenior: http://
8:04 LauJensen: Morning all
8:06 fliebel: _ato: I'll add them. beautiful!
8:06 LauJensen: morning
8:06 ejackson: hey Lau
8:07 LauJensen: Hey Action Jackson
8:07 rsenior: mids: that certainly seems like my issue, thanks!
8:08 ejackson: Lau, no that's ajackson.
8:09 Raynes: LauJensen: Ohai
8:09 LauJensen: You missed the public announcement of my new book. ;>
8:09 LauJensen: I sure did - link? :)
8:10 Raynes: It isn't actually finished yet. Only been writing for just over a week. I've got a 47 page draft sitting in front of me right now.
8:10 LauJensen: Exiciting, how did you get the idea for a book ?
8:11 Raynes: Well, it's a Clojure book. Not fiction.
8:11 jk_: silly question but... "byte b = 0x80" works in java (= -127) but how do i do this in clojure? I understand that Java doesn't have unsigned bytes, I just want it to give me the equivalent value with the same bits set
8:12 Raynes: LauJensen: I'd like to fill the 'free' niche that no Clojure book fills yet.
8:12 I'm licensing it under a CC license and making it freely available upon completion.
8:12 Might self-publish it and make printed copies available.
8:12 LauJensen: Interesting. What would happen if you put no license on it at all ?
8:13 Raynes: Well, there is the unlikely event that someone would take the book and put their name on it and sell it.
8:14 LauJensen: In which case you would be prepared to sue ? :)
8:14 fliebel: Hah, I found the link to the Ring book on the Google group . "This book seems intended to be about Ring specifically, rather than the more general topic of how to write Clojure web applications."
8:15 Raynes: With a fury. I'm almost ready to take the BAR.
8:16 fliebel: So, no general web dev books yet?
8:16 Raynes: Creative Commons Attribution-NonCommercial-ShareAlike 3.0 United States License is the license I'm licensing it under. Nice long one.
8:19 Speaking of all that: dear chouser, thank you for coauthoring The Joy of Clojure. If I didn't have that book to teach me this stuff, I wouldn't be able to write what I'm writing in the first place.
8:20 I keep it open for reference as I write.
8:20 cemerick: That's a good one. Lets others pass around the PDF, but doesn't allow others to sell copies.
8:20 IIRC, anyway.
8:20 Raynes: cemerick: That's about right.
8:21 And, people can make changes to it as long as it remains under the same license.
8:22 jk_: silly question but... "byte b = 0x80" works in java (= -127) but how do i do this in clojure? I understand that Java doesn't have unsigned bytes, I just want it to give me the equivalent value with the same bits set
8:22 this document says (byte) should wrap around, but it doesn't seem to: http://
8:25 ejackson: jk_: that's true, now it throws an out of range exception
8:28 jk_: ejackson: and no function exists to return the byte equivalent?
8:29 ejackson: jk_: no idea.
8:29 jk_: ejackson: i'm trying to pack an integer value into 3 bytes and was confronted by this when i had working java code to do the same
8:30 not b64 encoding... some stupid proprietary protocol
8:30 TubeSteak: jk_: well, if it's a constant, why don't you put the signed value?
8:31 jk_: TubeSteak: sure, that's what i want to do. i want to pass an arbitrary value 0x00-0xFF and have it return the signed byte value
8:31 TubeSteak: i just thought a byte cast would do that, or that an existing function at least existed.(java byte cast does this exact thing)
8:34 i could write the function but i found it hard to believe that this functionality was lost in clojure
8:34 that's why i'm asking here :)
8:37 fliebel: LauJensen: You know about this? http://
8:37 LauJensen: fliebel: yep
8:37 Its like a poor mans version of ClojureQL :)
8:38 fliebel: LauJensen: Just what I thought… Somewhat related: Is there a data structure backend for CQL?
8:39 LauJensen: fliebel: Yes, the RTable record is effectively an AST comprised by its fields, altered by its methods
8:40 fliebel: LauJensen: I'm afraid you use to many unknown words in that sentence… A what record is effective a what?
8:41 LauJensen: fliebel: ClojureQL contains this like (defrecord RTable [....]). That record has fields like table-name, columns, predicates etc. Together they form an Abstract Syntax Tree, a datarepresentation of the query. This AST can be easily modified by the methods of the record, ie. (select tble (where (= :x 5))) etc.
8:41 Crowb4r: amalloy_: Hey, how do I give a plugin to you and Raynes for sexpbot?
8:42 jk_: LauJensen: but can you easily convert any seq or data collection in clojure to an RTable? that's what LINQ does for you, (i think, not a .net programmer)
8:42 Raynes: Crowb4r: If you have forked sexpbot on Github and added the plugin, you're welcome to issue a pull request and it will be looked at as soon as possible.
8:42 LauJensen: jk_: essentialy its a hashmap
8:44 jk_: LauJensen: all i'm saying is that LINQ has functionality that isn't already built into ClojureQL in that you can apply LINQ operations to any enumerable or sequence in .NET
8:45 LauJensen: jk_: Im not sure I follow, can you show an example ?
8:45 fliebel: LauJensen: So can I do (into (RTable) {:a 1 :b 2 :c 3}) and then do the CQL equivalent of SELECT * FROM :a , or something like that?
8:45 jk_: LauJensen: read the wikipedia article referenced... section on LINQ providers
8:45 LauJensen: Aha. That would be trivial to implement. Like (map rtable [{:a 5} {:b 5} {:c 5}]) etc
8:46 Im not sure that buys us anything in the composability department though
8:52 Crowb4r: Raynes: ok, will do. I have a couple of features my bot has that can be converted to run on sexpbot.
8:53 fliebel: LauJensen: What it buys you is that you can do relational stuff to your seqs, rather than (reduce (map)). Like NoSQL vs SQL.
8:57 LauJensen: fliebel: But you realiase that ClojureQL already lets you do relational operations right?
8:58 Gigaroby: how can I load a file into the repl ?
8:58 fliebel: LauJensen: On relational databases. What if I parse a nice XML file, can it do relational stuff to that as well?
8:58 LauJensen: fliebel: no, hence the QL
8:59 For normal relational algebra ops, you have clojure.set, for SQL backends, you have clojureql
8:59 fliebel: LauJensen: LINQ to XML offers this, but I'll have a closer look at clojure.set.
9:01 *amazed* I had no idea clojure.set contained things like join and select!
9:15 ejackson: fliebel: you didn't read Stuart Halloways book (seeing we're talking books today) !
9:16 fliebel: ejackson: Uh, no. Which one is it?
9:16 ejackson: "Programming Clojure" the first clojure book
9:27 Gigaroby: gotta problem : I was trying to execute a few lines I write and I dunno what's wrong but the compiler gives me an error on line 0. http://
9:28 fliebel: Gigaroby: What error?
9:28 mrBliss: Gigaroby: the docstring give me an error
9:28 only the first line should start with a " and only the last line should end with a "
9:29 Gigaroby: mrBliss, wich first line are you talking about ?
9:29 mrBliss, you mean docstrings ?
9:29 mrBliss: Gigaroby: yes remove the last char from L10 and the first from L11
9:30 Gigaroby: mrBliss, fliebel thanks a lot
9:31 mrBliss, still same error
9:31 mrBliss: Gigaroby: I'll post a fixed version in a sec
9:31 Gigaroby: mrBliss, but I did correct the docstring
9:31 mrBliss, thanks
9:32 agentwrangler: Is it a bug or a feature that you can't send-off from within the error-handler of a failed agent?
9:32 chouser: agentwrangler: what version of Clojure?
9:32 agentwrangler: chouser: 1.2.0
9:34 Gigaroby: mrBliss, must be a lot of mess I'm sorry but that's the first I do with clojure
9:34 mrBliss: Gigaroby: http://
9:35 chouser: I believe it was intentional, but has been changed in 1.3-alpha4: http://
9:35 mrBliss: Gigaroby: it's ok, I've seen much worse ;-)
9:35 Gigaroby: this compiles
9:36 agentwrangler: chouser: thanks!
9:36 Gigaroby: mrBliss, you think the style is lispy enaugh or I'm still too in imperative programming ?
9:37 mrBliss: Gigaroby: judging by this small amount of code, I think you're on the right path
9:38 Gigaroby: mrBliss, ok thanks I understood what was wrong
9:39 mrBliss, you gotta declare the functions in the order in wich you are going to use or at least with declare
9:39 mrBliss: Gigaroby: correct. Also notice the last expression (the or)
9:39 Gigaroby: In Clojure, you seldomly return false or true explicitly
9:40 Gigaroby: mrBliss, that was just style of indentation or there was an error ?
9:40 mrBliss: Gigaroby: in Lisps in general, everything that's not nil or false will be treated as 'true' in an 'if'
9:42 Gigaroby: mrBliss, good thanks
9:43 mids: Gigaroby: minor nitpick; for a predicate I'd drop the is- prefix if it already has a ? at the end
9:43 Gigaroby: mids, fair enaugh thanks
9:43 mids: so position-valid? instead of is-position-valid?
9:44 mrBliss: Gigaroby: small tip: you can replace L27 with (let [{:keys [board current-queen]} queens
9:45 Gigaroby: mrBliss, any suggestion for an IDE ?
9:46 mrBliss: Gigaroby: most Clojurians use Emacs + Slime, but I think Eclipse + counterclockwise is easier to start with
9:47 Gigaroby: mrBliss, yeah I do use eclipse for python and java as well
9:47 mrBliss: Gigaroby: http://
9:58 Gigaroby: mrBliss, counterclockwise is really good thanks for the tips now I go offline
9:58 see ya
9:58 mrBliss: Gigaroby: hope to see you again on this channel
9:58 Gigaroby: mrBliss, tomorrow for sure xD
10:08 drdozer: hi - are there any resources to get me started with genetic programming using clojure?
10:08 mrBliss: drdozer: An example: http://
10:12 drdozer: Now I'm remembering why I don't use lisp :)
10:13 thanks mrBliss for that example
10:13 I have a multi-player game coded up in scala, and need to write some bots to play it
10:15 so I'm hoping to breed functions that make sensible responses when it is time for the bot to make a move
10:15 companion_cube: wow, anonymous classes are not garbage collected ? this is ugly
10:17 chouser: companion_cube: where are you seeing that?
10:17 companion_cube: in the blog post mrBliss posted
10:18 Raynes: companion_cube: Where did that name come from, if you don't mind me asking? I am deadly curious.
10:19 companion_cube: you mean my nickname ?
10:19 Raynes: Yes.
10:19 joly: sound like Portal
10:19 companion_cube: it comes from portal, yeah :D
10:19 Raynes: I was thinking of a few games with cubes. None of them were minecraft.
10:19 joly: interesting 1st person puzzle game that I couldn't play due to motion sickness :P
10:24 chouser: joly: I can relate. Very high framerate helps, but still I often had to stop playing to recover my equilibrium.
10:24 Crowb4r: what makes sexpbot eval clojure code?
10:25 chouser: companion_cube: you see the note in there that the class GC problem has been corrected?
10:25 companion_cube: oh, i didn't see it, thanks
10:28 fliebel: Crowb4r: prefix it with an ampersand or with ##(println "this") mid-sentence.
10:28 sexpbot: ⟹ this nil
10:28 Raynes: Crowb4r: There is a Clojure plugin. clojure.clj. It uses clojail to evaluate code.
10:28 Oh. Is that what he was asking?
10:28 fliebel: I don't know...
10:29 * Raynes figured he was asking for the actual mechanism.
10:29 * fliebel thinks Raynes thinks to complicated.
10:29 Raynes: ;)
10:29 fliebel: Crowb4r: Enlighten us, what did you want to know?
10:30 Crowb4r: I was asking the keyword to kick it off
10:31 before opening up the src code to look at the trigger
10:31 like ',' is clojurebot
10:31 eckroth: If I defn a multiple-arity fn, I cannot :use it in another ns; why is that (or am I mistaken)?
10:31 joly: &(println "test")
10:31 sexpbot: ⟹ test nil
10:31 Crowb4r: got ya
10:32 Raynes: also where are the dynamic.clj and status.clj files I had to take them out of plugins to load because it could not find the files and I don't see them on github anyplace.
10:33 Raynes: Crowb4r: Eh, those were deleted a few weeks ago. I forgot to remove the references to them from the default configuration.
10:34 Just remove them from the plugin lists in your config. Sorry for that. I'll push a commit to remove them in a moment.
10:34 Crowb4r: Raynes: kk, umm another question anything specdial I have to do besides have mongo db just run in and be connectable (using ubuntu 10.10)?
10:35 or is ther ea config I'm missing
10:35 this is fresh from apt in this vm
10:36 Raynes: Right. You should just be able to start it up and run. If the apt installation configures it to use a non-standard default port, it might not work though.
10:37 Crowb4r: Raynes: because I get this error when I send him a message in an irc server http://
10:37 Raynes: Right, that means he isn't seeing mongo. Make sure that it is being run on port 27017
10:37 I don't think I've made that configurable yet.
10:37 Crowb4r: Raynes: ok thanks
10:37 will look
10:38 thanks for all the help
10:38 cemerick: fliebel: a couchdb "external handler"?
10:38 Raynes: Crowb4r: Also, we have a channel for sexpbot and related projects: #sexpbot
10:38 Crowb4r: Raynes: alright, I will squat in that one as well, thanks
10:38 Raynes: If you don't mind, please join there for further discussion/questions.
10:38 :)
10:38 Crowb4r: done
11:02 joly: &(macroexpand-1 (binding [test 5] (println test)))
11:02 sexpbot: ⟹ 5 nil
11:02 joly: &(doc binding)
11:02 sexpbot: ⟹ "Macro ([bindings & body]); binding => var-symbol init-expr Creates new bindings for the (already-existing) vars, with the supplied initial values, executes the exprs in an implicit do, then re-establishes the bindings that existed before. The new bindings are made i... http://
11:02 fliebel: &(macroexpand-1 '(binding [test 5] (println test)))
11:02 sexpbot: ⟹ (let* [] (clojure.core/push-thread-bindings (clojure.core/hash-map (var test) 5)) (try (println test) (finally (clojure.core/pop-thread-bindings))))
11:02 joly: ah, thanks
11:06 I'm looking at some scheme code that uses make-parameter and parameterize. Would binding be a good way to translate that in general?
11:10 chouser: joly: After reading a couple paragraphs of related scheme docs, I think so.
11:11 though clojure's use of lazy seqs can sometimes lead to surprising results with 'binding'
11:13 because of that, how they interact with multiple threads, and how it leads to non-pure functions, many people avoid using 'binding' as much as possible in Clojure.
11:28 joly: chouser: thanks, I'll keep an eye out trouble. I shouldn't be dealing with lazy seqs or multiple threads here, but I'll be on my guard
11:28 for trouble*
11:32 kurtharriger: where does one find foldr foldl do these functions not already exist?
11:33 chouser: reduce is one of them, though I forget which
11:34 foldl I think
11:34 joly: reduce should be foldl
11:34 chouser: foldr is rarely needed and not provided by clojure core, afaik.
11:34 kurtharriger: k
11:35 reduce works thanks
11:36 chouser: I think foldr would be something like (reduce #(f %2 %1) (reverse coll))
11:36 tonyl: morning
11:36 Dranik: for what projects do you guys use clojure?
11:37 chouser: eeeeevvvvrrrryyyytttthhhiiinnnngggggg
11:37 ;-)
11:37 Dranik: chouser, for example?
11:38 fbru02_: Dranik: what's on your mind , and i will tell u if clojure is a good fit ! :)
11:38 Dranik: fbru02_, well, I'm trying to determin which projects clojure fits best comparing to java
11:39 fbru02_: comparing to java?
11:39 Dranik: yep
11:39 fbru02_: if you are thinking of doing sth in java , do it in clojure, you will be happier
11:40 Dranik: fbru02_, well, its a bit complex to do j2ee with pure clojure
11:40 chouser: the most common good reason I run into for not using Clojure is because the JVM is unavailable or a poor fit
11:41 Dranik: chouser, like in Android, for instance?
11:41 fbru02_: i agree with chouser, and i would add web-dev is somehow easier in rails for me because i have experience with that
11:41 chouser: Dranik: well, some people are doing even that. I meant like in the web browser, or for quick-startup at the command line.
11:41 fbru02_: but other than that , clojure for most of the stuff
11:42 Dranik: fbru02_, that's why I've said "comparing to java", bcs web-development with rails3 is really much easier :-)
11:42 chouser, could you give any examples?
11:43 fbru02_: we are doing a web app hallf in rails and half in clojure , with zeromq and works great
11:43 chouser: Dranik: examples of things I've used Clojure for?
11:43 Dranik: fbru02_, so why did you choose clojure with rails, not pure rails?
11:44 chouser, yep
11:45 fbru02_: i was doing provisioning but wanting to do it concurrently and used pallet for that, hugod does a great job and i much prefer it over the ruby solutions
11:45 chouser: scraping web pages, web apps, web apis, mongo abstraction layer, protobuf library, data structure experimentation
11:45 I'm sure I'm forgetting things
11:46 fractal applets, custom RPC protocol
11:46 Dranik: chouser, ok, thanks :-)
11:46 chouser: swing gui
11:47 Dranik: chouser, btw, is any of your clojure code available anywhere? or maybe you coud share some?
11:47 fbru02_: Dranik: many people are using clojure in the bigdata niche
11:47 Dranik: I just try to lear clojure
11:47 chouser: Dranik: I have a bunch in contrib and on github
11:48 Dranik: fbru02_, yep, I see. Clojure is really good at concurrent programming
11:48 replaca: chouser: didn't you write some kind of book filled with great examples? :)
11:48 chouser: oh, right, IRC log to web site converter.
11:49 replaca: yeah, it's a great language to use for examples in a Clojure book!
11:49 tonyl: brehaut: ping
11:49 Dranik: chouser, could you please share some links and the book?
11:50 I've just searched through github and there are really many links with "chouser" strings there... so I've got lost
11:50 chouser: Dranik: http://
11:50 FOR party IN parties
11:50 HAVING party.name = \"Old Timers\"
11:51 doh
11:51 sorry
11:52 Dranik: http://
11:52 Dranik: chouser, thanks a lot!
11:53 fbru02_: into-array converts a seq into an array, is there a way to make a seq from an array ?
11:53 chouser: Dranik: contrib is full of interesting and primarily high-quality code, too
11:53 replaca: chouser: hey, do you know when we're going to see the dead-tree version of JoC?
11:53 chouser: fbru02_: seq
11:53 replaca: soon. Maybe January?
11:53 fbru02_: chouser: don't know why i didn't try that :D
11:54 chouser: :-)
11:54 replaca: chouser: excellent! Can't wait to have it on my shelf. Really nice discussion of records, types, and protocols there by the way
11:54 (among other things)
11:55 fbru02_: yeah i thought it was coll -> seq , didn't know it worked with java arrays
11:55 chouser: replaca: thanks!
11:55 Dranik: chouser, clojure-jna -- wow! that's great!
11:55 replaca: fbru02_: seq is the (almost) universal magic function
11:55 fbru02_: thanks !
11:56 chouser: fbru02_: also strings, iterators, etc.
11:56 Dranik: there is a much more industrial-strength lib out there if clojure-jna's features are too thin for you: clj-native
11:58 Dranik: chouser, yep, I'll give it a try!
12:14 Raynes: chouser: You're fairly performance savvy, aren't you?
12:15 * chouser shrugs
12:15 Raynes: I'm curious as to what would be the absolute dirtiest, rawest, fastest way to write this in Clojure: https://
12:15 chouser: Raynes: s is always a string?
12:15 Raynes: The idea is to just count the number of non-space characters in a string.
12:15 I want the fastest possible thing I can get without using Java.
12:16 chouser: and this is on 1.3-alpha-something?
12:16 Raynes: 1.2.0, but I'd be interested in 1.3-alpha versions as well if they make an important difference.
12:17 chouser: it makes a difference in the code, not the potential speed, I think.
12:18 Raynes: I'm trying to see how close I can get to some Java algorithms I've seen.
12:21 I've wrote a version using loop, but it leaves much to be desired at an average of 138168.371 to run on a 460 character string 1000 times.
12:21 The fastest Java solution I saw ran at just under 3000 nanoseconds.
12:22 chouser: hm, I'm not sure how to do primitive char equality
12:23 amatos: In clojure.test what is the equivalent of JUnit's assertEquals(double, double, delta)? Basically comparing doubles but passing a small delta because doubles are never exact?
12:27 chouser: Raynes: I think the problem might be that char comparison. I can't think of a way to check the equality of chars without autoboxing them.
12:28 Raynes: :\
12:29 chouser: hmm...
12:32 (defn count-num-chars [^String s] (let [len (.length s), space (int 32)] (loop [i (int 0), c (int 0)] (if (< i len) (recur (inc i) (if (== (.codePointAt s i) space) c (inc c))) c))))
12:33 I've done no profiling of that, but it ought to produce bytecode that deals only with primitives and does no reflection
12:33 Raynes: chouser: Runs slower than my loop version.
12:33 chouser: noooo
12:33 Raynes: Marginally. :p
12:33 chouser: good thing I shrugged in the first place. :-)
12:33 what's yours?
12:34 Raynes: https://
12:34 Nothing special at all, actually.
12:35 I wrote an example with reduce that runs around the same time as yours does.
12:35 chouser: hm, I must have missed something in mine then.
12:35 Raynes: More eye watering code? :p
12:35 chouser: oh
12:35 #^String
12:36 you probably caught that already?
12:36 Raynes: Nope, did the same thing in my example as well.
12:36 Doesn't seem to make a difference though.
12:37 chouser: hm, I guess 1.2 already supported ^ for tagging
12:37 Raynes: I thought so. I was already googling to make sure.
12:38 chouser: I suppose .codePointAt might be slow
12:39 performance questions might do better on the google group
12:40 Raynes: I'm not sure I care enough to bother the group with it.
12:40 It's a trivial example that I was just obsessing over.
12:40 chouser: I bet there are people on the group who would enjoy it.
12:41 Raynes: You have a point. I guess I'll go ahead and post it and see what I can get.
12:41 Thanks for trying. <3
12:41 chouser: :-) sorry I didn't help
12:42 Raynes: Well, you did help. It was a demonstration that "Hey, even though I'm obviously much smarter than you, even I could come up with a speedy example."
12:42 (inc ego)
12:42 sexpbot: ⟹ 1
12:43 chouser: Raynes: are you using a profiler?
12:44 Raynes: No. Just a bit of code that checks the current nanotime, runs the code 1000 times, and then checks the nanotime again.
12:44 amalloy: Raynes: wouldn't it be faster to convert the string to a byte[] first?
12:45 Raynes: amalloy: If you think you can implement it faster, go for it. I'm interested in all sorts of fun ideas. :>
12:47 gtrak: (inc nil)
12:47 sexpbot: ⟹ 1
12:48 gtrak: (nil)
12:50 clizzin_: is there a way to take a sequence of lazy sequences and make one lazy sequence that iterates through each of the elements of those lazy sequences in turn? basically, i'd like to (apply lazy-cat foo) where foo is a sequence of lazy sequences, but unfortunately i can't apply a macro.
12:51 chouser: (apply concat foo) should do what I you want, I believe.
12:52 amalloy: clizzin_: or mapcat before you get those lazy sequences: ##(mapcat range [5 6])
12:52 sexpbot: ⟹ (0 1 2 3 4 0 1 2 3 4 5)
12:52 chouser: the only what that lazy-cat is more lazy than concat is that because concat is a function, it's arguments will normally all be evaluated first.
12:52 but apply itself is lazy, so you should be ok
12:53 clizzin_: amalloy, chouser: great info, thanks!
13:09 Raynes: chouser: Switching to using unchecked-inc in your version gives me an extreme speed increase.
13:09 rayne@ubuntu:~$ cake run ~/challenge.clj
13:09 Chars outputted: 460
13:09 Time (in nanoseconds): 5711.932
13:10 tomoj: (.start (Thread. (fn [] (loop [] (.read stream (byte-array (.available stream))) ()))))
13:10 that makes no sense, right?
13:13 the loop form can be removed, and the empty list at the end as well if the return value is ignored? (.start (Thread. (fn [] (.read stream (byte-array (.available stream)))))) ?
13:13 Raynes: chouser: I also changed .codePointAt to be (int (.charAt ..)), because .codePointAt was a huge bottleneck.
13:17 clizzin_: hmm so the behaviour i was attempting to achieve is to create a lazy sequence on top of a sequence of readers. so i have a function (defn datum-seq [filenames] (mapcat (comp line-seq clojure.java.io/reader) filenames)). and then i have a function foo that iterates through a sequence and updates a transient map as it goes. my hope was to have the iteration through lines in the files be such that it discards files (or even b
13:17 lines) from memory as soon as it's done with them, but i'm seeing linear growth in memory as foo iterates through the sequence that suggests that the file contents are being cached. anyone have any ideas on how i can achieve the behaviour i'm looking for? thanks in advance!
13:23 amalloy: clizzin_: garbage collection only runs when it's needed. if you have enough memory to keep it all cached, the gc won't bother cleaning it up even if clojure has thrown away all references to the earlier stuff
13:24 technomancy: clizzin_: you need to use with-open for readers; this doesn't play nicely with laziness.
13:25 amalloy: clizzin_: see http://
13:28 clizzin: amalloy, technomancy: hmmm. ideally, i'd like to create a sequence abstraction over all the lines of these files so that foo can take any sequence of data as input. it sounds like this isn't possible without manually opening/closing each file as the iteration starts/finishes with that file's lines, but how can i have the resulting function be treated as a sequence? i come from a python background, so the best way i can expl
13:28 what i'm trying to achieve is the equivalent of a python generator.
13:28 also feel free to let me know if i'm thinking about this all wrong
13:30 my main concern is that i can't hold all of the data in these files in memory at once, so i thought making a lazy sequence on top of the readers would avoid caching the contents of multiple files at once.
13:52 leif-p: Hi, all. Is there a clojure json lib that accepts all legal json? c.c.json/read-json seems to take only a subset.
13:52 Raynes: $google clj-json
13:52 sexpbot: First out of 459 results is: mmcgrana/clj-json - GitHub
13:52 https://
13:52 Raynes: That probably does.
13:53 It wraps a Java JSON lib though, so it isn't a pure Clojure implementation.
13:53 * Raynes goes to sleep.
13:55 chouser: clizzin: having a lazy seq close an underlying resource (like a file) when it is fully consumed is generally considered fragile, because of how often lazy seqs in general are abandoned before being fully consumed.
13:56 clizzin: but in your case, it may be less objectionable since you should be able to guarantee that no more than one file is open at a time.
14:03 raek: leif-p: what does it not accept?
14:07 technomancy: apparently clj-time has not released any stable versions; what's up with that? ಠ_ಠ
14:08 leif-p: raek: maps with numeric keys. Hmm... I'm just assuming that's legal json, let me check. And while it technically accepts maps with any string keys, the fact that it automatically converts them all to keywords means the result is hard to use if any of the keys contain clojure special characters.
14:10 raek: the awesome syntax diagram of http://
14:11 leif-p: you can turn off the keywordization of you like
14:12 or you can construct keywords from strings ##(keyword "\u2603")
14:12 sexpbot: ⟹ :☃
14:13 raek: (unicode snowman)
14:14 but yeah, keywordization is perhaps not always a good idea
14:14 ,(doc read-json)
14:14 clojurebot: Gabh mo leithscéal?
14:14 raek: &(doc read-json)
14:14 sexpbot: java.lang.Exception: Unable to resolve var: read-json in this context
14:15 raek: &(use clojure.contrib.json)
14:15 sexpbot: java.lang.ClassNotFoundException: clojure.contrib.json
14:17 leif-p: raek: You're right, I am looking at that right now. I guess I am using json wrong. Unfortunately, when almost all json libraries dump to string, they fix my mistake, and js might be doing some str->num magic. :(
14:22 dnm: technomancy: Hey there.
14:23 technomancy: Quick question. Are you still in Seattle? I happened to be perusing the careers section of the Sonian website, and it seems all the open positions are in Boston. Is there still a telecommute option available for certain roles?
14:29 technomancy: dnm: all our engineering roles are telecommute, but I'm not sure if we are actively looking for Clojure hackers right now. I'll ask.
14:34 dnm: technomancy: Ah, I see. Thanks for asking! It happened to be an interesting conincidence, as I was just mentioning elsewhere (#dylan) that I missed Boston and would consider moving there second to moving to Seattle, but didn't know what I would do in Boston. And last I knew, you, anyway, were in Seattle with Sonian. I didn't know they were Boston-based.
14:35 technomancy: we hire wherever there's talent
14:35 * dnm nods
14:36 technomancy: I'm in Seattle, but I work with people all over the place.
14:36 are you in Seattle?
14:37 dnm: No. Currently I'm in the D.C. area.
14:37 But I have plans to move to Seattle.
14:37 technomancy: it's great; I love it
14:38 see also http://
14:38 dnm: Is the picture of the bench that showed up on Fogus's interview of you from Green Lake?
14:38 Or elsewhere?
14:38 fogus`: dnm: Have you been out to any of the NOVA Clojure meetups?
14:39 dnm: fogus`: Sadly no, they're all out in Reston, and I am never out that far. I live carless in Arlington, and I work in downtown D.C. during the day.
14:39 fogus`: Would like to meet up with local Clojure hackers though.
14:40 technomancy: dnm: that's a park across the street from my house, but I love working from the shores of Green Lake in the summer =)
14:40 dnm: http://
14:40 fogus`: dnm: People are usually willing to do drop/pick at local metro stations
14:40 dnm: technomancy: Intensely envious. ;] Looking at apartments on padmapper.com, it seems I can find a place in Seattle or surrounding areas for less than I pay here, which seems like a win/win!
14:41 technomancy: dnm: my remoteoffice flickr feed is a covert Sonian recruitment mechanism.
14:41 not as effective in the Winter though =(
14:41 dnm: fogus`: Yeah, which is very nice of them. Usually they also start too early for me to make it from work. I think lately I've seen start times of around 7 PM. I usually don't leave work until 6:30 or so, depending.
14:41 s/they/the meetups/
14:41 sexpbot: <dnm> fogus`: Yeah, which is very nice of them. Usually the meetups also start too early for me to make it from work. I think lately I've seen start times of around 7 PM. I usually don't leave work until 6:30 or so, depending.
14:42 dnm: fogus`: One of these days, maybe. Do you know of any Arlington or D.C. proper Clojure hackers? I'd love to do something even less formal than a capital-M meetup.
14:42 fogus`: dnm: Too bad. If the time is ever not a factor then ping the meetup page. I'm certain someone will volunteer as chauffeur. ;-)
14:43 dnm: Surprisingly DC/VA/MD seems to be a hotbed of Lispiness
14:43 chouser: Fort Wayne too
14:43 dnm: technomancy: Seattle's great attraction for me is to escape humid Virginia summers.
14:43 chouser: in my dreams
14:44 dnm: technomancy: Well, one of the great attractions anyway.
14:44 fogus`: The author of Land of Lisp lives in DC and he used to run the DC Fringe group. He might (hoping) restart those meetups again
14:44 chouser: in reality, Fort Wayne is a hotbed of military radio engineering.
14:44 dnm: Conrad, yeah! I know Conrad. FringeDC's been kinda dormant for a while.
14:44 Crowb4r: Fort Wayne IN?
14:45 chouser: yessir
14:45 dnm: The last FringeDC meeting I went to was a talk on ML from a then-local company making their product in it. That was a few years back.
14:45 Crowb4r: chouser: heh, I'm not that far from you then
14:46 <- Western Michigan
14:48 chouser: Crowb4r: cool
14:49 I keep meaning to go to one of the ohio clojure meetups
14:49 Crowb4r: far in perspective to some I suppose..
14:49 chouser: Crowb4r: this is the midwest. < 4 hours drive is close
14:49 Crowb4r: I should drive down for that. there is a Detroit group that just started. I need to look at Chicago as well.
14:49 chouser: in Europe that might require a passport, but here it's just "going in to town"
14:50 Crowb4r: yeah
14:50 chouser: Crowb4r: I talked at the Chicago one once -- nice folks. But it takes too long to do regularly
14:50 Crowb4r: I'm in Holland, right on Lake Michigan so pretty much I can only go east or south for 4 hours to hit anything (but Grand Rapids)
14:51 pjstadig: dnm: i'm also in the DC area, and i work for Sonian
14:51 dnm: pjstadig: Hi there!
14:52 * dnm hits send on an email to Zach Tellman.
14:57 dnm: fogus`: Are you in the area?
14:58 fogus`: dnm: Indeed
14:59 dnm: fogus`: Ah, neat!
15:01 pjstadig: fogus` has presented at the clojure group several times
15:01 * fogus` got snowed out of his last talk
15:11 brehaut: morning
15:30 AWizzArd: brehaut: good evening brehaut
15:30 brehaut: AWizzArd: clearly i forgot my timezone again
15:30 AWizzArd: 21:32 in Germany
15:31 brehaut: 09:32 in new zealand
15:31 AWizzArd: So, middle Earth is on the other side of the world :)
15:31 brehaut: yup :)
15:32 dnm: brehaut: Where are you in NZ?
15:33 brehaut: dnm hamilton
15:33 AWizzArd: How far away is that from Hobbingen?
15:33 dnm: Ah. I converse regularly with a Dylan developer in Wellington.
15:33 brehaut: AWizzArd: maybe half an hour
15:33 dnm: there are still dylan developers?!
15:34 dnm: Yes. We're a rare breed, I guess ;]
15:34 brehaut: dnm: i guess. pretty cool though
15:34 dnm: Not only that, there's another Dylan developer who uses Clojure regularly.
15:35 brehaut: i guess if you are going to use one relatively unknown language, why not use 2
15:35 dnm: Heh.
15:41 brehaut: fogus`: ping?
15:44 fogus`: pong
15:45 brehaut: fogus`: i tried to tweet a bug report at you but twitter is doing weird nonsense. anyway, xml-> is getting rendered as xml-> while -> is still ->
15:47 fogus`: brehaut: Thanks will look into that
15:47 brehaut: fogus`: ive also got a curious case where marginalia is thinking that the body of a condp is code to output verbatim in the doc side of the uberdoc
15:48 fogus`: brehaut: Do you mind creating a case at https://
15:48 brehaut: sure thing
15:48 fogus`: Thank you!
15:48 brehaut: not a problem
15:57 fogus`: https://
16:04 fogus`: brehaut: The dangers of regex! Thanks again. Gotta run, but it should be fixed some time today
16:04 brehaut: fogus`: not a problem. cheers
16:43 (inc tonyl)
16:43 sexpbot: ⟹ 1
17:19 raek: oh, java... http://
17:19 interesting though...
17:30 &(= (.hashCode "polygenelubricants") (Integer/MIN_VALUE))
17:30 sexpbot: ⟹ true
17:31 brehaut: raek: what the?!
17:32 raek: (see the video...)
17:32 also:
17:32 (Math/abs (Integer/MIN_VALUE))
17:32 &(Math/abs (Integer/MIN_VALUE))
17:32 sexpbot: ⟹ -2147483648
17:32 brehaut: i havent, my internet connections incredibly lame today
17:32 raek: hrm
17:34 ah, Raynes's long decorative arrow hid the minus sign...
17:34 so, yupp. the abs function can return a negative value
17:35 brehaut: so strange
17:35 raek: since there are one more negative Integer than positive
17:36 brehaut: ah true
17:36 raek: hrm, why did using that static field as a method work?
17:36 &(Math/abs Integer/MIN_VALUE)
17:36 sexpbot: ⟹ -2147483648
17:37 raek: &(Integer/MIN_VALUE)
17:37 sexpbot: ⟹ -2147483648
18:08 joshua__: amalloy, the plugin is pretty much done =) XML worked wonderfully. The only thing that needs to be fixed at the moment is this really dumb bug. Basically there is a file where you specifcy what amounts to a config page and even though I changed that file it is still compiling as if I had not changed it.. anyways that is not why I came here..
18:08 Trying to connect to mongodb is giving me a network exception error.
18:09 Any idea where the problem might be?
18:09 amalloy: joshua__: $ sudo mongod, is what usually fixes it for me
18:09 ISTR i fixed something in my etc/init.d or thereabouts to get this to stop happening, let me see if i can find it
18:10 joshua__: Wed Dec 22 15:10:50 exception in initAndListen std::exception: dbpath (/data/db/) does not exist, terminating
18:10 That doesn't look right..
18:12 It is actually happening in my command line too.
18:12 Not just when I start up swank
18:12 amalloy: joshua__: are you root? permission-denied errors often look like not-found errors to java
18:12 this is to start the server, not to connect to it
18:12 joshua__: amalloy, I didn't grok what you said?
18:13 oh
18:13 yea I rank sudo mongod
18:43 zkim: Is there any way to clone a java class in clojure? I'd like to muck with a static member on a class (specifically c.l.LispReader), but I don't want to interfere with the operation of other consumers.
19:19 programble: um
19:20 cake isn't working
19:20 i run it and after a while it says it's taking long to connect to the JVM, but it never starts a JVM
19:21 ninjudd: programble: i need more information than that. which version are you using? how did you install it? etc...
19:22 programble: 0.5.8 from gem
19:23 oh it works if i'm not in a project dir...
19:23 but fails in my clone of penumbra
19:23 ninjudd: programble: ah
19:23 you have to upgrade to the latest cake to use penumbra
19:24 i just fixed that yesterday actually
19:24 use the "Git repository" installation method from https://
19:25 lancepantz was working on adding cake tasks for the penumbra examples actually
19:26 lancepantz: jees, i can't tell if it's penumbra or cake gaining in popularity :)
19:27 programble: but yeah, i have some commits i'm queueing up for https://
19:27 ninjudd: programble: you're the second person to ask about using penumbra with cake in the past two days. and nobody ever asked before that
19:27 programble: well i'm just looking at penumbra cuz i'm bored
19:29 ninjudd: that explains it!
19:29 programble: and i'm using cake because it is apparently "oh so much" better than lein
19:29 guys
19:29 on every run of cake i get this:
19:29 $ cake
19:29 which: invalid option -- 's'
19:30 /usr/bin/wget
19:30 ninjudd: doh
19:30 that's from a commit i just added. i guess that is an os x only opt
19:30 fixing
19:31 programble: fixed
19:32 programble: OH MY GOD HOW DO I CLOSE THE PONG EXAMPLE
19:32 ninjudd: hahah
19:32 did you start it with cake?
19:32 programble: i started it from a cake repl
19:32 ninjudd: you exited the repl?
19:32 'cake kill' will work
19:33 on os x, clicked the 'x' on the window works too
19:33 programble: it doesn't get a window border here
19:33 ninjudd: oh no
19:34 ctrl-c in the repl
19:34 * programble reads the pong source and gets a headache
19:34 ninjudd: if it is still running after that, 'cake kill'
19:35 programble: do not understand opengl at all
19:40 clizzin: if i pass a lazy sequence as an argument to a function that uses it only for the first instruction, do all the realised members of the lazy sequence stay in memory until the function exits? or is the sequence garbage collected after the last use of it?
19:41 technomancy: clizzin: as long as you're on 1.2 or newer, you're clear after the last use.
19:42 "fine-grained locals-clearing", in the vernacular
19:43 clizzin: technomancy: cool, thanks for the information. is there any way to tell the lazy seq not to bother caching realised members?
19:43 i've got a case where the cost of computing the sequence members is cheap but there are a whole lot of them, so i don't want them to be cached in memory
19:43 technomancy: clizzin: no, you have to ensure references to the head are GC'd
19:46 clizzin: technomancy: hmm okay. what is the behaviour of a lazy sequence if iterated over using loop? are the members still cached?, e.g. (loop [i (lazy-seq foo)] ...)?
19:47 technomancy: clizzin: depends. if you recur on (rest i) you're probably clear.
19:48 you can construct a test with an infinite seq to be sure
19:51 clizzin: technomancy: interesting. so my situation is that i'm doing (foo (lazy-seq...)) where foo is (defn foo [s] (bar s)) and bar is (defn bar [s] (loop [sequence s] ... (recur (rest s))). it sounds like keeping things decomposed into separate functions like this would result in all the members of the lazy sequence getting cached because the foo and bar scopes retain references to the head.
19:51 so now i'm tempted to mash them all into one big function so that the lazy sequence is passed directly into the loop.
19:52 or is clojure smart enough to figure out that this chain of calls ends with a loop that recurs on (rest s)?
19:53 mabes: how could I tell if a certain deftype/defrecord implements a fn.. you can use satisfies? to see if it "implements" the protocol, but I've noticed that def[record|type] does not enforce a method be defined for each signature
19:53 technomancy: clizzin: I suspect it will be smart enough, but you will need to confirm this with Science.
19:53 clizzin: technomancy: Science!
19:53 technomancy: clizzin: http://
19:53 mabes: I know you can look at the protocol and that the methods should live on it somewhere, but I'm having a hard time finding them
19:53 clizzin: alright, time to give it a shot. thanks for the help!
19:54 technomancy: haha nice
19:54 technomancy: np
19:59 joshua__: Is there a way to tell congomongo to declare an index on a key?
19:59 declare/create
20:00 or do I need to do that within mongodb itself
20:05 mids: joshua__: add-index!
20:07 joshua__: thanks!
20:15 mids, any idea where I can get more thorough documentation of congomongo?
20:22 Best I've seen: http://
20:35 Where can I find info on query maps for mongodb?
20:59 arohner: does anyone have any good tricks for figuring out what part of performance problems are caused by cache misses?
21:33 datka: Are multimethods supposed to hold on to their dispatch fn, or is it possible to change that function dynamically. I made a change to my dispatch fn, and it wasn't picked up. (1.3)
21:33 amalloy: datka: i don't know what is "supposed" to happen, but that is the behavior in 1.2 also
21:34 datka: it's probably by design and for performance reasons, but it's a bit annoying
21:34 amalloy: agreed
21:39 pdk: oh snap is 1.3 out
21:40 tomoj: I don't see it
21:40 joshua__: (GET "/item?id=:id" [id] (archive-item id)) Why is this not matching /item?id=2312312?
21:41 datka: I'm jumping the gun on upgrading to 1.3, it's not out yet. (unless I missed something)
21:44 joshua__: To answer my own question the ?id is being treated as a get parameter.
22:01 brehaut: anyone here know much about moustache ?
22:05 bhenry: brehaut: depends on how much
22:05 brehaut: bhenry: how easy is it to use moustache's pattern matcher outside of moustache
22:06 bhenry: brehaut: uhh. i've only ever used it the standard way. what are you trying to do?
22:06 brehaut: bhenry: minimise the amount of repetition in a pingback implementation
22:07 bhenry: pingback is xml-rpc which means it tunnels through http and then dispatches itself based on the method not the resource
22:07 but pingback also has to check that the resource being pinged back exists
22:09 bhenry: brehaut: well i guess i'm not the man for this, but moustache is only one file, so you should take a look at it. https://
22:09 brehaut: bhenry: that was my next step.
22:13 judging by the number of private functiosn that i think i would need, i might be screwed


text:
Signed in as:
Details and craftsmanship-Nothing feels like an Allure!
Offering gowns from all collections: Allure, Romance, Couture,Wilderly, and Plus Size Wedding Dresses.
Madison James bridal has trend setting style, fashion forward details in a range of silhouettes. Offering a unique, custom looking gown at a price point for every bride.
Maggie Sottero has been a top bridal gown designer for over 20 years. Classic elegance, attention to detail, and impeccable fit keeps brides asking for a Maggie gown.
Mori Lee by Madeline Gardner is best known for her iconic ball gowns & impeccable attention to detail.
Classic bridal silhouettes with a modern twist. Rebecca Ingram offers gowns for budget savvy bride.
Chic, modern & a little boho Wilderly is all about unique lace patterns, flowy silhouettes, and bold details.

subset: commoncrawl


text: That AVTOVAZ intends to maintain the recognizable appearance of the Lada 4×4 said the company's chief designer Steve Mattin in an interview with RNS. "It is important to have some binding elements that share a car with a car of the previous generation. Today vivid is the image of Lada 4×4. There are some memorable… More


text:
Founder and director of True Global Ventures 1, 2 and 3, Investment Vehicles set up by serial entrepreneurs investing exclusively in serial entrepreneurs based in Singapore, Hong Kong, Beijing, Shanghai, New York, Silicon Valley, Berlin, Stockholm, Paris and London within mainly Fintech and related companies. A serial entrepreneur within the Fintech space itself, he once started and sold an internet banking company in the early 00s and started making angel investments since 2005. He was named Business Angel of the year in 2013 after having 3 exits in a week and had a total of 9 out of 18 exits in the portfolio companies he invest in. Currently building a billion dollar decentralized Blockchain Fund as his next big thing!
CEO of Bitcoin.com – Roger Ver
Named the Bitcoin Jesus, Roger Ver is one of the first to make a serious investment into bitcoin in early 2011. Not only has he


text:
In this episode of ICO or NO Jeremy dives into the AppCoin project. AppCoin is looking to address the inefficiencies that exist in the current app stores by eliminating the middleman. Their vision is to create a decentralized marketplace, complete with reputation rankings, where individuals can sell their applications and add-ons directly to the consumer, without the approval or a third party hosting service.
Jeremy dives into what the project hopes to achieve, the market conditions surrounding the project, the team, and the details of the token sale. Be sure to check back for more ICO or NO's by subscribing to our channel!
What is AppCoin & what is the problem the project is looking to solve?
The AppCoin network is an open and distributed protocol built on the Ethereum blockchain. It aims to mitigate the current inherent deficiencies and inefficiencies of app stores.
So AppCoin is basically joining blockchain-techy with app store technology. Why can that be useful? Well, app advertising, in-app billing, and app-approval can be a drastically faster and and quicker through disintermediation and redistributing the unlocked value to end-users and developers.
In-app purchases (IAP) is really not designed for low-end market, in-app advertising is plagued by too many middlemen, malware is still prevalent, and innovation is slowing down. There are several reasons these payment models are not suited for emerging countries and younger generations. There is no trust between the actors of the ecosystem; and there is a lack of standardization defining clear interfaces and enabling market entry for new players.
So how is AppCoin establishing trust? They have a dispute resolution kind of like eBay's and reputation ranking system for developers, like you would see in today's app stores.
AppCoin, an ERC20 token will be used by the developers to advertise their apps to the users. According to the Whitepaper, from every advertising investment inside the app store, 85% goes to the user. This is different from the traditional systems used today.
What are the market conditions facing the project?
Today there are 2.1 billion smartphone users in the world generating more than $77 USD billion in annual gross revenue. Those numbers are projected to double by 2020.
However, app stores are still riddled with inefficiencies and malware. If you are aware of the situation that went on on with Jaxx and Bitcoin Cash compatibility, you can see how this is true.
This seems like a pretty revolutionary idea. There are so many apps that take off that end up going viral. For example, Angry Birds, Candy Crush, Pokemon Go; they all rely on a microtransaction systems via an app store. These apps all took off like crazy, and the revenue generated by them was no joke.
I do find myself asking, does this really need a blockchain? I totally get the inefficiencies and issues with the current system, but are people going to even be able to transition to a blockchain-based app store when you have two major players in Google and Apple controlling the market? I guess the idea is that with 85% going to the developers, it will attract them to deploy their apps on the AppCoin store.
Who is the team behind the AppCoin ICO?
The AppCoin ICO is run by an existing company called Aptoide. Aptoide is an alternative marketplace for mobile applications which runs on the Android Operating System. In Aptoide, unlike the default Google Play Store, there is not a unique and centralized store but each user manages their own store, and they can put whatever they want in there for the most part.
These are people already in the space. They know it, and they have a separate working product. If I had to pick a team to work on that project I'd probably pick Aptoide. A large established team that knows the space and saw the potential of the blockhain, the Aptoide team is a factor that gives me confidence in this project.
What are the details of the token sale?
Im actually going to talk about the presale because it's on-going at press time. You get a 30% bonus for participating in the presale.
- Pre-sale: 6th November 2017 – 20th November 2017
- ICO Token Price: 1 APPC = 0.1000 USD
- Fundraising Goal: $18,000,000 USD
- Available for Token Sale: 40%
My only criticism is that even with the pre-sale and the token sale, a lot of tokens are still going to be held by the company and advisers.
ICO or NO covers some of the hottest tokens sales from the coolest projects! Jeremy, though his patented Four Question System*, dissects each project to help you better understand the token sale! Check out more of our ICO or NO episodes here, and subscribe to our YouTube channel for future ones!
*Patent Maybe Pending


text:
|A baby hatch in Xi'an where parents can leave their child safely
|An abandoned child plays with a caregiver in Xi'an
However, the vast majority of the cases are children with illnesses that average families would not be able to cope with physically or financially without government assistance.
Meanwhile the government is also considering giving free medical treatment to young children born with a disease. That would greatly help families, but again, they need more than just free medical treatment because there are physical demands of looking after children who need constant care.


text:
This post may contain affiliate links. Exploring new sights is a participant in the Amazon Services LLC Associates Program. As an Amazon Associate, we earn from qualifying purchases linking to Amazon.com and affiliated links.
First, I would like to mention how much thought went into this major life decision of ours. We have never bought a house, but I feel that we put just as much time, energy, and thought into the buying process of our home on wheels, as we would have if we were buying a brick and mortar home.
We chose to live full time in an RV for a combination of reasons, but one of the main reasons/goals was to save money and to become debt free.
Prior to moving into our RV, we were enjoying living together as newlyweds, in our first one-bedroom apartment. We were loving life with our two fur babies, a view of a gorgeous park from our balcony, close to family, and commuting even distances from our jobs.
However, those commutes were becoming monotonous. I was also becoming listless about my work and felt that we needed a change. I wanted to explore life outside of my hometown and begin a new adventure. Thankfully Matt was on the same page and just as eager to see what the next step would bring.
We discussed purchasing a house but ultimately felt that it wouldn't help us meet our goal of being debt free, not to mention that we didn't have a clue as to where we wanted to settle down. We also considered moving to Florida, where some of our family friends live. But that would mean we would have to completely start over, and let's face it, that is a big feat that we weren't quite ready for.
During the time we were contemplating our next step, my sister in law mentioned the idea of living full time in an RV. Without hesitation, I began researching the possibility. It intrigued me! Being an opportunist, I don't usually cast things aside without consideration and research. I scoured Pinterest, Instagram, Google, and even found Facebook groups dedicate to full-time RV living. After much research, I felt that this could be the change and adventure we were longing for! This could be the answer to us becoming debt free, giving us the ability to travel, and live life on our terms. So I mustered up the courage to talk to my husband about it, fully expecting some reservations on his part. To my surprise, Matthew was all for the idea!
Now that we had a goal and the next step was decided on, we had more research to do. The planning and preparation process took many months. I would be lying if I said that during that time we didn't question our decision and wonder if we were crazy. I would think,
"Are we crazy? Shouldn't we be purchasing a home, building equity, and having kids?"
Being in our mid/late twenties, and newly married, there seemed to be some social pressures about settling down in a house and starting a family. And even though it was easy to look at others our age and feel like maybe we were wrong to not follow the same path, we had this dream to do things a little differently. We reminded ourselves, and still do, that everyone's dreams and ideas of happiness are different. It is okay to take the road less traveled.
Even though we had overcome our own doubts, that didn't mean we wouldn't face doubt or disapproval from others about our choice. After deciding and announcing our decision to RV full time we were met with comments like "RV's depreciate." "You'll never get equity out of it." While those comments were true, those facts weren't factors for us. We weren't worried about building equity or depreciation. We dreamed of traveling and we were motivated to pay off those student loans and personal debts! To us, that was worth investing in.
Experiencing our beautiful country, with all of its magnificent wonders, without worrying about a ton of monthly loan payments is a dream! A dream that with a couple years of hard work, and budgeting could become a reality for us.
That brings me to another reason we chose to live in an RV, and that is Simplicity! The saying "less is more", rings true for us! A smaller space means fewer things. Less mess, less stress. Less money is spent on things to fill a big space and we don't buy things that will only be used once. We are more conscious of the things we bring into our RV since space is smaller. It allows for less cleaning time and more time enjoying life. We love the idea of living with only the things we need and just a few things we want. Living this minimalistic lifestyle affords us more money to put towards paying off our debt.
It's simple, and simple is Beautiful!
So, after 9 long months of research, hard work, and planning, the dream finally became a reality. We purchased our RV and began full-time RVing immediately. So far, so good. This lifestyle choice has allowed us to save and pay off our debt at a much faster rate than we were previously able to accomplish. The RV has brought our monthly expenses down from a $1000 rent payment for a 1-bedroom apartment down to a $278 RV payment. We are currently "fam-docking", meaning we live on land with our family. We pay for electricity and water, which brings our living expenses to $378 a month.
To streamline, even more, we sold our Jeep Grand Cherokee, I work remotely so this worked well for us. Selling the Jeep put back an extra $500 a month in our pockets. We now own one vehicle, our Dodge Ram 2500 Diesel that we purchased to pull our RV. By downsizing to one vehicle and living in the RV, we have been able to allocate an extra $1,122 a month towards our debt payments.
We are still making small changes and budgeting monthly expenses to make the most of our paychecks. We are determined to stick to our plan to be completely debt free! That to us sounds like Freedom!
Our long-term plan is to eventually purchase land, and live in our Rv while we build our home. Our goal and dream would be to build our home without taking on a loan. A big dream but very doable!
Until then, as much as we want to travel in the RV, we understand that circumstances may not allow us to do so fulltime, but we keep the option open, and hope to get to the point that we can travel! At this time we still rely on Matthews job that is stationary and requires a commute.
Every move we make is strategic, but we understand that not everything can be planned. Ultimately, we put our faith in God every day to guide us. For now, the lifestyle of living in an RV is going to catapult us to a debt-free life we dream about, and if we get to experience the wonders of this Nation like the Grand Canyon or Yellowstone along the way, bring it on!
That's is why we chose to live in an RV. To pay off debt, travel, and live a simple minimalistic lifestyle.
Why did you choose or why are you considering full-time RV life? Please, comment below! We would love to hear your story!
Stay up to date and get notified for new blog posts and much more! No spam, we promise!


text:
Shopping Cart 0
Salem Gold (EU-made)
Since 1956, Salem cigarettes have dominated the menthol category, working their way up to becoming one of the best-selling cigarettes in the world. Salem cigarettes have always been known for their supreme quality and special taste. In 2000-2002, the brand added a "New Fuller Flavor" which is labeled as "Black Slide Box" to their traditional "Green, Old Style." Enjoy the full menthol flavor of Salem cigarettes.
Salem Gold (EU-made)


text:
4FRNT Raven Ski ReviewThe Raven skis use a unique reverse camber design which enables the ski to get most of its bite from pressuring hard underfoot and taking advantage of the resulting enormous effective edge. As the ski arcs, the tips and tails engage providing a smooth and fluid carving motion from start to finish. In deep snow, the full reverse camber means the ski floats naturally and easily. Similarly, in variable snow conditions, this fully rockered shape is able to push through and over inconsistent snow conditions. The Ravens are simply able to handle whatever you throw at them, steeps, pow, groomers and crud.
Read the full review of 4FRNT's Raven Ski here.


text:
Internships in Shanghai
Join us on one of our one, two or three-month global internships in Shanghai, China's fashionable financial center.
Why intern in Shanghai?
- Forbes China chose Shanghai as the #1 city in China to live. Shanghai took the top spot for its relatively high income level and abundance of entertainment zones.
- Shanghai has its own deliciously unique cuisines, including – Xiaolongbao, Di Shui Dong Ribs, Chicken of the fields: aka Frogs and more.
- Cost of living – 50% lower than New York and London. Rent prices in New York are a whopping 65% higher than those of Shanghai.
- The city has rapidly grown over the past decade and is now a global city with international impact on finance, fashion, culture and technology.
- Shanghai Disneyland Park opened in 2016 and is the only Disney theme park in mainland China.
Shanghai's Internship Career Fields
High-tech communication and computer technology is a huge market in Shanghai that allows interns to participate firsthand in the companies innovating in their field. One of China's greatest boons, auto-manufacturing, is also represented as an integral industry. Particular to Shanghai is the raw chemical processing facilities that help contribute to various science, technology, and engineering fields across China. Students who want to experience both the technology and scientific intersection of industry will be pleased to see them meet in the many career fields available in Shanghai.
What's included in Shanghai
5 Key Learning Objectives
The wealth of skills and knowledge you will gain from your 5 Key Learning Objectives during your internship in Shanghai will greatly increase your future employability, enrich your resume and give you the edge you need to land your dream job.
For every Shanghai Internship Program intern
In addition to the above, your program will also include;
- High-quality, centrally located accommodation
- CareerBridge, our Professional Development Hub, which contains 12 professional development courses
- Welcome Pack on arrival (SIM & Travel card included)
- Airport Pickup and Accommodation Drop-off
- Orientation Weekend including city tour
- First Day Company Drop-off
- Business, Cultural, and Community outreach events
- 24/7 support from on the ground staff
- Exclusive Alumni Network and LinkedIn groups
The latest from our Shanghai Program
Could you be one of our next Intern Influencers? Click below to browse our vlogs from former Shanghai interns.
Find out more about what an internship in Shanghai could offer you by reading our latest blogs.
A program to suit you
Do you have a flair for languages or a taste for adventure?
Whatever your interests, we have an option for you. We offer customized travel and intensive Mandarin study programs in addition to our one, two and three-month internship programs.
Take a look at our additional program options in Shanghai:
Internship Program
Complete a one, two or three-month internship in Shanghai.
Choose from a range of industries and gain international experience in your chosen sector.
Our Internship Program includes accommodation, networking events, cultural events and 24/7 on-the-ground support.
Travel Add-On
The adventure doesn't have to end with your internship placement.
Combine a one or two-month internship in Shanghai with a 21-day trip around China, travelling to some of the countries best and most famous landmarks. The Travel Add-On is fully-organized for your convenience with dedicated guides and pre-booked accommodation and transport.
Intensive Mandarin
Why not give your language skills a boost with an course in Intensive Mandarin?
Available for our China Program Locations, this Program offers 17 days of instruction with 4 classes per day. Each class is 45 minutes followed by a 15 minute break during which you can study independently. After your classes conclude, you will begin a 1 month internship placement.
Program dates
Places are limited and allocated on a first-come, first-served basis. Be sure to apply at least 6-10 weeks prior to your preferred start date.
Shanghai Placement-Only Dates
We also offer a Placement-Only Program for 30, 60, 90 days all year around.
You can decide a start date that is convenient for you.
Placement-Only Programs include guaranteed internship placement & emergency support, but exclude accommodation, visas, and events.
Program Fees
INTERNSHIP PROGRAM – 'Our award-winning flagship program'
PLACEMENT ONLY – 'Our value option'
Visa Requirements
Obtaining the appropriate visa can be challenging for those unfamiliar with the process, therefore we will handle the entire process, and your visa and processing costs are included in your Program Fee if you are based in the United States, Canada, United Kingdom, Italy, Australia, and New Zealand.
Depending on your location, you will be asked to either send your passport and visa form to our office, or complete an online form and send your passport to our partner agencies. Your passport must be available at least 4 weeks prior to your Program Start Date. If you have separate travel plans during this period you must notify us well in advance, otherwise we cannot guarantee your visa will processed on time for your Program Start Date.
If you are not based in a country on the above list, we will provide guidance on the visa application process, however your visa and processing costs are not included in the program fee. It is recommended you submit the visa application at least 4 weeks prior to your Program Start Date.
All our China programs (including Placement-Only) include beginner or intermediate Mandarin lessons as it is a mandatory requirement for your visa.
2019 update: If you are based in the UK, you are now required to visit the Chinese Embassy/Consulate in London, Manchester, Edinburgh, or Belfast to submit biometric information. This is a mandatory requirement for all Chinese visas processed from the UK.
Explore more programs in
"Through CRCC, I was able to gain experience in a Chinese IT company. The company itself has seen huge success offering blockchain and cryptocurrency related services, and the department that I was placed in offered me the opportunity to gain meaningful development experience in this dynamic new field!As a result, I'm walking away from this experience able to come back to live and work in China, and utilize the skills in data science and machine learning that I continued to develop this summer!"


text:
Our final step in breaking the logic into layers is ensuring all database, network, translation concerns are housed only within the specific layers. When an application is created with Core Data, XCode adds the Persistent Container in the app Delegate. This type of implementation detail needs to be isolated within the Core Data layer only. Translation to and from Core Data, as well as JSON form the web server needs to be isolated into a Translation Layer. The Translation Layer is then further broken into supporting classes the deal with specific Entities and forms of data (JSON, Core Data, SQLite, etc.). The important part is to break apart the logic into single responsibilities.
- [Instructor] So let's go down into this data layer…and there's a couple things that we need…to resolve within here.…If you go to the App Delegate,…when we initially create this project…Xcode puts the persistent container within the App Delegate.…It is definitely a data concern…so a great thing to do is to move that…down into your data layers as soon as you have them.…So we will go to our data layer,…and the first thing we will do instead…of having a pointer to the App Delegate…or this persistent container.…
We'll just create that persistent container inside of here.…And then we said, in the save method…that we were going to hem that translator.…So we're saying translation layer,…and it's a translation layer,…let's see if we can get it to…code hint for us, translation layer.…And then we are going to, go ahead and collapse this panel,…and we'll say just translation layer to unsaved core data.…
And all of that translation layer is responsible for…is translating from the DTO objects,…and creating these new core data objects with that context.…
- Moving pieces of architecture
- Designing an MVA app
- Walking through a demo application
- Converting to MVP
- Moving non-view logic to a presenter
- Breaking logic into layers
- Using entities
- Setting up dependency injection
- Implementing the coordination pattern
- Adding data binding with RxSwift


text:
The flurry of activity on social media, the frantic reports from outside the training grounds, the hope and despair riding on every comment from those 'in the know' all converge to not only produce one of the most exciting days in media, but a glimpse into the future of media relations itself.
Today's news cycle is not 24 hours or even 12 hours; it's 140 characters. The power of a tweet on deadline day is amplified because at the stroke of midnight, there is no tomorrow for teams to buy and sell. Twitter has become the central marketplace for wild speculation and actual breaking news, even shaping the way outlets such as The Guardian and BBC showcase the latest news by offering a 'Twitter-like' feed on their football homepage.
Teams also see Twitter as their primary direct outlet to supporters. For example, Spurs have gone so far as to produce a video announcing the signing of a long-expected player by showcasing tweets from anxious Spurs supporters demanding he be announced.
Once upon a time... pic.twitter.com/zmO5acV797— Tottenham Hotspur (@SpursOfficial) August 31, 2016
This interaction goes beyond pubs in London, Liverpool, or Lisbon. Football is a truly global game with a local focus, which means that nail-biting supporters are reading every piece of news they can get their hands on in fan sites from New York to New Delhi about events in Madrid and Munich.
So what does this mean for the other 364 days of the year (let's face it, the January window isn't as fun)? What can corporate chief commercial officers and chief marketing officers learn from football managers?
First and foremost, the once steady stream of news consumed is now a raging river. It's a white water rapid that can pick anything up and in a matter of moments turn it on its head. This means we have less control over where a story goes and less time to ride the waves forward.
It means nearly every story is global, but we can never forget the local impact. Whether you are launching a brand or announcing a new signing, our audiences are more diverse, and like Spurs supporters, more demanding than ever.
Finally, deadline day is a reminder that the democratisation of information is a double-edged sword, and one that every communicator must wield and be wary of. False rumours may be the lifeblood of football transfer banter, but they can be poison if left unchecked by businesses and other public organisations.
There are no 'international breaks' in business. There's no off-season in the real world. Every day is a race against the clock, and a chance to strengthen your 'team' the way the pros do.
Anthony DeAngelo is media relations manager, global marketing and communication, at APCO Worldwide


text:
rolling the dome
Originally uploaded by colormuse
For Love of Yurts, building your own yurt-home for under $1000, book by Bruce Sargent is at the printers! www.forloveofyurts.blogspot.com. I took this photo while Bruce was positioning the plexi dome and considering how he would make a scaffolding to help get it lifted to center before it held the rafters. He was thinking hard and that serious face shows the concentration. This photo was blurry so I took it through some processes in photoshop and turned it into a painting! Acceptable now. This couch art has some merits.


text:
Lala Boghzi
DRE License: 02075442
- 818.246.1099 - Office
- 818.491.8630 - Direct
- 888.965.6161 - Fax
- Email Me
Designations & Awards
About Lala Boghzi
Coming from a successful entrepreneurial background, Lala has grown and proven to be a very independent, strong-minded young woman. She always fights the fight and gets the job done right for her clients while making sure everyone involved has a smile on their face with a satisfied appetite. Lala has been a successful Real Estate Developer for over 3 years and also has vast knowledge and experience in ground-up constructions, building and flipping. Her key distinguishing traits are her discerning eye, her expansive network, and her enduring work ethic; but most importantly her genuine passion and contagious enthusiasm for the Real Estate industry. As a full time licensed Real Estate agent she loves to help her clients find their dream home and make the transaction as smooth as possible. What inspires Lala to do Real Estate is seeing the smiles on the faces of the family moving into their new home.
My Experience
My Credentials
My JohnHart Support Team
Every agent is supported by a team of real estate specialists allowing them to focus on what's important... our client's needs and closing deals.
My Active Listings
Check out our listings here!
My Sold Listings
|Property Address
19219 Schoenborn Street
|Sold for


text:
This Sunday, I'll be running the New York City Marathon while knitting a scarf. I'm doing it to raise funds and awareness for Alzheimer's. While training for the New York City Marathon, I was faced with a problem. Due to security concerns I was told that I would not be allowed to bring knitting needles or a crochet hook with me on the run. I respect the great service that the New York Police Department provides and want to support their efforts. So I had to come up with a way to knit on the run without needles.
:: Learn David's amazing finger knitting technique! ::
I have been a reader all my life. My favorite reads are Urban Fantasy, Paranormal and Suspense, especially when they feature strong female characters and action. I still get into a lot of other genres, but everyone has a favorite child, even if they don't want to admit it, right?
As an Indie Editor I am here to help writers reach their goals by helping them develop books that are clean, well edited and a pleasure to read. If you would like for me to look over your book, please drop me an email at email@example.com. My schedule if flexible, and my rates are quite reasonable!
I have been a quilter for years, and absolutely love doing home renovation – not something I can do very well any more, but hey, at least I got that stupid fan up! I love animals, the environment and food. I have a big garden to supplement my organic purchases, and eat a lot of greens!
Technically, I have a Masters Degree in Forensics and a Bachelors in Math (neither of which I utilize, fancy that) as well as a Bachelors in English Literature from long ago in a land far, far away. But hey, if I can get this editing and reviewing off the ground, at least I will be using that one!
Fund Raiser!
David Babcock, Guinness World Record holder, Knitting, Lion Brand Yarns, New York City, New York Police Department, the Running Knitter
Fill in your details below or click an icon to log in:
You are commenting using your WordPress.com account.
( Log Out /
Change )
You are commenting using your Google account.
( Log Out /
Change )
You are commenting using your Twitter account.
( Log Out /
Change )
You are commenting using your Facebook account.
( Log Out /
Change )
Connecting to %s
Notify me of new comments via email.
Notify me of new posts via email.
Blog at WordPress.com.
Up ↑


text:
Family Woodpeckers (Picidae)
Speckle-chested Piculet (Picumnus steindachneri)
French: Picumne perlé German: Perlenbrust-Zwergspecht Spanish: Carpinterito perlado
Picumnus steindachneri
Taczanowski, 1882,
Chirimoto, Peru.
Andes of NW Peru in SE Amazonas and NW San Martín (region of R Huallaga and its tributaries).
Descriptive notes
10 cm; 9–11 g. Very distinctive piculet. Male has top of head black, feathers of forecrown broadly tipped red, rest of crown and hindneck spotted white; creamy lores... read more
High-pitched trill, lasting several seconds; fledged young beg noisily.
Inhabits humid tropical and subtropical montane forest with many epiphytes and tall second growth;... read more
Food and feeding
No data available on diet. Forages singly, in pairs or in small family groups; also joins mixed-species flocks, moving with them through... read more
No information available.
Status and conservation
ENDANGERED. Restricted-range species: present in Ecuador-Peru East Andes EBA. Tiny range covers c. 7100 km² in central Huallaga valley and very locally in Utcubamba... read more
Only subscribers are able to see the bibliography. Login or Subscribe to get access to a lot of extra features!
Public comments
No comments yet
Only members are able to post public comments. To make the most of all of HBW's features, discover our subscriptions now!
HBW Alive Plans & Pricing Why subscribe
or sign in if you already have a membership


text:
Home > 8 x 10 Art Prints & Pictures > Canoe Destiny Poster 8x10
Canoe Destiny Poster 8x10
Small Inspirational Believe in Yourself Poster
Inspirational Destiny Quote: "The future belongs to those who believe in the beauty of their dreams".
Small Inspirational Destiny Believe in Yourself Poster Size 8" x 10" When choosing a Discount Picture Frame, you will also need to choose "Plexiglass" or "Lamanart". Lamanart is a process we do to small framed inspirational destiny wall art pictures,giving it a canvas-type texture, replacing the glass covering. It is UV Ray Protected and Non-Glare, providing you with very aesthetic small framed corporate inspirational believe in yourself art print pictures & educational posters ...and you never have to clean it! View ordering options below.
Stock # N8-786


text:
Online CE by a Wisconsin agent
for Wisconsin agents. How can I help you?
Online CE Classes
Pay For
My Credits
About/Contact Me!
In an effort to provide the best
possible prelicensing experience, I have partnered with ExamFX to provide
prelicensing education to WI prosepctive agents.
ExamFX is recognized as a leader
in prelicensing education. Hundreds of carriers and agencies have made
ExamFX their exclusive online education provider, and so have I.
Use this link to access their
service. The link is coded to provide a 19%-36% discount on their public rates.
You must use the link to access their site and get the discount.
Discount link.
You can learn more about their
program through this
video. Make sure you only use the above
link to access their site and
receive preferred pricing.


text:
DANCE CLASSES NEAR Barangaroo NSW 2000
Private & Group Dance Lessons near Barangaroo NSW 2000
Are you looking for private or group dance lessons in Barangaroo? Then look no further, CareToDance services the entire Barangaroo area from its local studio centrally located in Sydney CBD.ENQUIRE NOW GET YOUR FREE DANCE LESSON
WE ALSO LIVE IN Barangaroo
At CareToDance we are not just proud to provide our valued students in the Barangaroo with professional dance classes and lessons, many of our teachers also live in the area and are part of the local Barangaroo community.
We invite you to discover why our Sydney CBD Studio has become Barangaroo's favourite destination for group and private dance classes. Get in touch today to get your first lesson free.
Useful Links:
About Barangaroo:
Barangaroo's Council: