text:
0:15 technomancy: hugod: what about that function specifically?
0:15 just see that it makes sense?
0:17 hugod: ok, slime-autodoc works for me in slime head without the patch
0:18 technomancy: so it was just a temporary bug in an older slime head?
0:18 the hackiness that's evident when looking at slime code makes me feel a little better about the hackiness of swank-clojure
0:20 hugod: gotta take off; will sync up with you later.
0:20 hugod: technomancy: I'm making mistakes - time to sleep - it's hanging for me
0:20 technomancy: a fresh brain often helps =)
0:20 bye
0:57 vIkSiT: hello all
0:58 i was wondering - on a normal emacs-slime-clojure installation - how do you send a buffer where i'm writing code, to the repl for execution?
0:58 i'm using aquamacs, but C-c C-k shows up as "not bound" for me.
0:58 tomoj: what mode are you in
0:59 i.e. what's in parentheses in the modeline near the bottom
1:00 polypus: vIkSiT: try M-x slime-eval-buffer
1:01 vIkSiT: tomoj, ah - i've got a repl running in a split screen mode. the bottom contains [[(REPL)]] and the top has a clj file open which says [[(fundamental)]]
1:01 hiredman: should be clojure-mode
1:01 or just clojuire
1:02 tomoj: did you install the clojure emacs stuff before or after opening the clj file?
1:02 vIkSiT: oh got it. clojure mode seems to send CcCk to the REPL.
1:02 tomoj, ah, what i did was - typed in (println "foo") and then saved it as /tmp/foo.clj
1:03 tomoj: try C-x C-f /tmp/bar.clj
1:03 if that buffer opens in fundamental mode, something's wrong with your installation
1:03 vIkSiT: looks like just M-xc lojure-mode will enable the mode, and I can then use Cc Ck
1:03 tomoj, nope, its working now, I overlooked the clojure-mode!
1:04 tomoj: clj files should automatically turn clojure-mode on, though
1:04 vIkSiT: tomoj, indeed. just looking at me .emacs
1:04 my*
1:05 does anyone here use clojure for concurrency/parallel programming btw?
1:06 (in the sense, they switched to it take advantage of agents, et al)
1:07 hiredman: omg
1:07 incanter.latex
1:09 vIkSiT: sounds cool
2:49 zkim: ,(conj [1 2] 3)
2:49 clojurebot: [1 2 3]
3:51 LauJensen: Morning crew
4:11 vIkSiT: hmm, I'm running clojure-mode on a file named 2.clj in emacs - but I don't seem to be getting auto indentation anywhere
4:11 any ideas on what I can check?
4:14 LauJensen: (global-set-key "\r" 'newline-and-indent)
4:17 @ vIkSiT
4:17 vIkSiT: LauJensen, ah this in my .emacs file?
4:17 LauJensen: Yup - Put it in there and eval the expression
4:20 vIkSiT: LauJensen, awesome, thanks!
4:22 LauJensen: np :)
4:22 npoektop: how to compare sets by their content? i have #{{:id 1} {:id 2}} and #{id1 id2}, (= for them should say true.
4:26 LauJensen: npoektop: Why should it be true?
4:27 You could do something like
4:27 ,(map = (vals {:id1 1 :id2 2}) #{1 2})
4:27 clojurebot: (true true)
4:27 LauJensen: And that would make a little more sense, but you compare a set of hashmaps to a set of symbols should not be true
4:30 npoektop: LauJensen, i'd like to dereference those symbols so this comparison would give true
4:31 LauJensen: Then you need to convert them. You want to compare a keyword and an integer, in a concatenated form, to a symbol.
4:32 npoektop: LauJensen, ok. How to convert them?
4:34 LauJensen, id1 = {:id 1}, id2 = {:id 2}. How to compare #{id1 id2} and #{{:id 1} {:id 2}}?
4:34 LauJensen: Is the actual comparison (= 2 2) or (= 'id2 'id2) ?
4:34 does {:id 1} => id1 or 1
4:36 @ npoektop
4:38 npoektop: LauJensen, i do not understand what you mean(
4:38 LauJensen: I'm just trying to understand your data
4:39 Is this what you're trying to do
4:39 ,(= (set (mapcat vals #{{:id 1} {:id 2}})) #{1 2})
4:39 clojurebot: true
4:39 npoektop: ,(let [id1 {:id 1}] (= id1 {:id 1}))
4:39 clojurebot: true
4:42 npoektop: LauJensen, ok, another way. I have a function profiles-by-ids wich returns a vector of maps. I want to write a test that would check if '(id1 id2) = '({:id 1} {:id 2}). I thought coercing to set would work.
4:43 LauJensen: Ok, so you have a vector of maps ala {:id 1} {:id 2} and you want some way of testing if an id is represented somewhere in that vector?
4:44 (let [id2 {:id 2}] (contains? #{{:id 1} {:id 2} {:id 3}} id2))
4:44 ...true
4:44 :)
4:46 npoektop: LauJensen, ok. But what if there are hundreds of ids? (contains? ... id1) ... (contains? ... idn)?
4:47 LauJensen: Then perhaps you'd want to filter out those ids
4:47 ,(filter #{{:id 2}} #{{:id 1} {:id 2} {:id 3}})
4:47 clojurebot: ({:id 2})
4:47 LauJensen: The predicate in that case, is just a set containing the relevant keys
4:53 npoektop: LauJensen, what should i do now with that vector?
4:53 ,(let [id1 {:id 1} id2 {:id 2}] (filter #{id1 id2} #{{:id 1} {:id 2} {:id 3}}))
4:53 clojurebot: ({:id 1} {:id 2})
4:53 npoektop: s/vector/list. count it's members?
4:56 LauJensen: Factor it out into a predicate
4:56 (defn contains-ids? [ids coll] (not (empty? (filter ids coll))))
4:56 So if there are no hits, the filter returns empty (true) which we reverse with not.
5:01 npoektop: LauJensen, i don't know why it didn't work ten minutes ago. I tryed smth like this: (= (set (profiles-by-ids [...]) (set (list id1 id2)))
5:01 now it works
5:02 LauJensen: Try it with real data on Clojurebot
5:04 npoektop: ,(let [id1 {:id 1} id2 {:id 2}] (= (set '({:id 1} {:id 2})) (set (list id1 id2))))
5:04 clojurebot: true
5:07 npoektop: LauJensen, my question was a little tangled, i know) thank you for help
5:09 LauJensen: npoektop: Ah ok. This will fail if the number of arguments differ, I thought you needed to avoid that, ie
5:09 ,(let [id1 {:id 1} id2 {:id 2} id3 {:id 3}] (= (set '({:id 1} {:id 2})) (set (list id1 id2 id3))))
5:09 clojurebot: false
5:09 LauJensen: But I'm glad you worked it out
5:15 npoektop: is there a way to make a variable global, but for one file?
5:15 LauJensen: The file concept is tricky, think in namespaces
5:16 npoektop: ok. how to make non-public def?
5:17 LauJensen: ,doc defn-
5:17 clojurebot: java.lang.Exception: Can't take value of a macro: #'clojure.core/doc
5:17 LauJensen: ,(doc defn-)
5:17 clojurebot: "([name & decls]); same as defn, yielding non-public def"
5:18 npoektop: i'd like to def a variable
5:21 hoeck: (def #^{:private true} foo 10)
5:21 or (clojure.contrib.def/defvar- foo 100)
5:22 LauJensen: Yea I was just about to say, check out contrib.def
5:37 _invis: guys could you help me to write this Graphics2D g2 = (Graphics2D) img.getGraphics(); on clojure in let ?
5:39 raek: (let [g2 (.getGraphics img)] (do-stuff g2))
5:41 _invis: rhickey does some graphics in the example in the end of this talk: http://
5:42 _invis: thank you
5:43 raek: (the "ants example" is available here: http://
5:52 LauJensen: Also my blog has more than a few examples of graphics sims
6:05 npoektop: hoeck, LauJensen, thank you.
6:06 hoeck: npoektop: np :)
6:21 vegai: do the authors of The Joy of Clojure visit here?
6:21 LauJensen: they practically live here
6:21 vegai: ah :)
6:22 I was about to ask where to send corrections, but now I see that every single page has a like to a forum...
6:22 like/link
6:39 LauJensen: For the european (or travel happy) people in here: http://
6:54 esj: LauJensen: nice choice - good beer.
6:54 LauJensen: esj: You should talk to cgrand, that was his argument as well :)
6:55 esj: i tried to sell him on Cambridge, but no dice.
8:12 Raynes: LauJensen: European training sessions huh? :p
8:13 LauJensen: Thats right - You flying in ?
8:13 Raynes: LauJensen: For 1200€ sessions? I think not. :p
8:13 LauJensen: I'll throw in a free cheese burger :)
8:14 Raynes: I'm sold.
8:14 ;p
8:15 LauJensen: Perfect
8:15 Raynes: I think the Rubylearning Clojure course guys like me.
8:16 LauJensen: Why wouldnt they ?
8:16 Raynes: Just sayin'. Stuff like this: http://
8:17 Sure know how to make a fella' feel warm and fuzzy inside. :p
8:17 LauJensen: AWwwww :)
8:18 AWizzArd: Is there already an idiomatic way to serialize (print + read) deftypes?
8:18 Raynes: That was after I made the comment that I'm a "teacher undercover as a student".
8:20 AWizzArd: Best way is to add a print-dup method for user defined types?
8:36 chouser: You implemented the printing for deftypes yes?
8:41 Raynes: We need a Clojure window manager. ._.
8:41 I want a window manager I can configure in Clojure.
8:51 LeNsTR: =)
8:52 chouser: Raynes: yes. abrooks is working on it. :-)
8:52 AWizzArd: yeah, the current (unreadable) format.
8:55 AWizzArd: chouser: who calls print-deftype in http://
8:55 in core_print.clj i didn't find the caller
8:57 rhickey: name game again
8:57 AWizzArd: uh oh ^_^
8:58 rhickey: I am trying to support stable names for deftype/defrecord even when used dynamically, using the same technique that definterface does
8:58 this means that it will be useful to auto-import the class name, and thus would conflict with the current factory fns
8:58 AWizzArd: rhickey: you wrote about stable nam.. ah, this is what I wanted to ask
8:59 rhickey: in addition, there *may* be a facility for providing bodies for the factory fn(s), if so these wil end up as static method(s) of the generated class
8:59 AWizzArd: Stable names means: (defrecord Foo [a b c]), (class (Foo 10 20 30)) <--- will keep the same name even after restarting JVM?
9:00 rhickey: thus we need name for static factory method, and possble wrapper fn for same
9:00 I like Foo/create
9:01 AWizzArd: yes, better than make-instance
9:01 rhickey: not sure about wrapper fn, could be create-Foo
9:02 AWizzArd: In what situations would the wrapper be used?
9:04 rhickey: AWizzArd: hopefully most - it gives you some encapsulation of the host-iness of it. Also would be a first class fn (e.g. mappable)
9:04 AWizzArd: Foo/create and create-Foo sound good and clear.
9:05 Instead of create maybe "new" or "make" could be used, but I like create more.
9:05 rhickey: "new" can't be used as static method name - Java keyword
9:05 AWizzArd: ok
9:05 liwp: assuming we want to use the same name in both cases, new is out of the question
9:06 and Foo.make sounds weird in Java land
9:06 so I too would vote for create
9:06 AWizzArd: yes
9:07 Also interesting is this new question from the Wiki: "record equality: basic map rules, or incorporate type?".
9:08 rhickey: AWizzArd: one question at a time :)
9:08 jfields: what's the easiest way to create a seq of lines from a file?
9:08 AWizzArd: io/read-lines returns a lazy seq
9:09 jfields: This means your jvm memory will not explode even for 10gb files, but it also means that you have to completely consume the file to have it closed again.
9:09 jfields: AWizzArd, thanks.
9:10 rhickey: jfields: or you can use with-open and line-seq for more control
9:10 AWizzArd: make, create, instantiate, create!, produce... "create" seems to be the best option
9:12 gen / generate
9:13 chouser: AWizzArd: 5 lines before that, in the deftype macro. (defmethod print-method ~tag ...)
9:14 AWizzArd: create seems nice for the static method name, but I'm tending to agree with whoever it was that suggested against generating vars with computed names.
9:14 sorry, that wasn't specifically for AWizzArd
9:15 (defrecord Foo [a b]) (create Foo 1 2) (create-rec Foo :b 2, :a 1)
9:15 rhickey: chouser: well, we were generating computed names with the factory fn before, with conflict now on class name
9:15 AWizzArd: chouser: okay, thanks for the hint with the 5 lines in the deftype macro.
9:16 rhickey: (record Foo ...) means records are more verbose than new sugar
9:16 and don't have single mappable fn
9:16 will we get a lot of (comp record Foo) ?
9:16 chouser: AWizzArd: It's ((var print-deftype) ...) to allow the macro expansion to call a private fn
9:16 rhickey: Hm, I suppose. But Foo-create feels like such a hack
9:16 AWizzArd: I think for such an important mechanism like defrecord it is okay to auto gen Foo/create and create-Foo
9:17 rhickey: chouser: Foo/create works tough?
9:17 chouser: :-) yeah
9:17 rhickey: hrm
9:17 * chouser starts to feel a little silly
9:18 chouser: Foo is a thing that Foo/create is a part of
9:18 rhickey: there still might be (record Foo k1 v1 k2 v2 ...)
9:18 chouser: You can ask Foo for its methods and find create. This doesn't feel like a hack.
9:19 rhickey: but any data-driven (maker Tag ...) is going to have overhead vs a dedicated fn
9:19 chouser: But Foo-create is not a part of Foo, it's this other thing that was produced as a side-effect of defining the type.
9:19 rhickey: chouser: it would never be F00-create, more like create-Foo
9:19 AWizzArd: How would we like to create instances of Foos? (Foo/create 1 2 3) or (create-Foo 1 2 3) or (create-rec Foo 1 2 3)?
9:20 rhickey: AWizzArd: are you just restating the question?
9:20 chouser: so a separate create fn will be: slower, compilcate usage of ->, probably produce a lots of (partial create Foo), ... all in exchange for "feeling" a little less like a hack.
9:20 rhickey: Foo/create will be there, is hosty, and non-mappable (at present)
9:21 create Tag ... has overhead, needs comp/partial to map
9:22 also, there will still need to be a separate keyvals factory
9:22 in my mind that was (record Foo ...)
9:23 chouser: they might as well have the same shape, right? create-Foo and record-Foo ?
9:23 or (create Foo v1 v2) and (record Foo k1 v1 k2 v2)
9:24 there's got to be some third way
9:24 rhickey: you have to also consider what Foo designates in (create Foo ...)
9:25 Foo will be a class name
9:25 thus as an ordinary arg will designate a class
9:26 chouser: Is the only strike against just using Foo/create that it's not a proper function?
9:26 rhickey: chouser: and hosty
9:27 chouser: I can easily pretend its namespacy instead
9:27 wthidden: rhickey: Was/is there a problem with the way CLOS does this sort of thing that Clojure want's to avoid?
9:28 rhickey: note that falling out of this will be the ability to define deftypes of all static methods
9:28 AWizzArd: wthidden: the proposed way is more like CL structs I find
9:29 hoeck: what about generating a Foo/create static method and a Foo/create static field, where the latter contians the wrapper fn?
9:31 wthidden: AWizzard: now that I think more about it I agree its closer to CL structs.
9:31 rhickey: wthidden: CLOS does the data-driven approach, will not compete perf-wise with direct fns
9:31 hoeck: sounds confusing
9:32 wthidden: rhickey: Ah yes, the seventeen levels of indirection before we actually do some work. Now I rememeber some of the CLOS pain.
9:34 AWizzArd: So far it sounds that for technical reasons create-foo has advantages over (create-rec Foo ...).
9:34 wthidden: well if I had my druthers I'd go more towards CL structs way of doing things, but then I'm a lisp weeny at heart.
9:35 kzar: So I built Compojure and put the compojure.jar inside ~/.swank-clojure/ directory, restarted Clojure but (use 'compojure) isn't working. What should I do?
9:37 rhickey: wthidden: I think the data-driven approach is not the best foundation - since each ctor is really unique code, forcing them to live behind a generic data driven interface means you can't ever reach that code directly, whereas if you have the direct fn, you can always build a generic data-driven thingy
9:39 npoektop: if i do (assoc map key val), it returns a new map. Is there a way to destructively assoc?
9:39 chouser: npoektop: not really -- why do you think you want to?
9:40 npoektop: chouser, i want to insert a new key/val pair into map
9:40 into existing map
9:40 chouser: npoektop: part of the promise of Clojure's persistent maps is that if you have one, you can rely on the fact that it *will not change* on you. It is immutable.
9:41 npoektop: why not create a new map and just start using that one instead of the old one?
9:42 hoeck: kzar: class-not-found exception?
9:43 kzar: try (->> (System/getProperty "java.class.path") (.split #":") seq (map println) dorun) and look wether your .swank-clojure/compojure.jar is actually on the classpath
9:44 npoektop: chouser, how to bind (assoc my-map ...) to my-map?
9:44 AWizzArd: if my-map is state then it could be a ref
9:45 npoektop: AWizzArd, it's a variable
9:46 hoeck: kzar: maybe you have to restart emacs too (after putting jars into .swank-clojure or .clojure)
9:46 AWizzArd: npoektop: when it needs to get accessed from several parts of your program and is something that could in principle get stored in a db, then you can say (def my-map (ref {})) and assoc into it within dosync
9:47 kzar: hoeck: Yea when I do it says it couldn't find anything like clojure.clj etc. Doing that command does list compojure.jar as one of the items. I have restarted emacs
9:48 npoektop: AWizzArd, yeah. I've just read that section. But i need smth simpler. I know it's a lame question, but i can't find how to do (_bind_ my-map (assoc my-map ...))
9:48 chouser: npoektop: it depends on your context. AWizzArd is correct, but often the "rebinding" can be done locally and so no reference type is needed.
9:49 ,(loop [m {}, i 0] (if (> i 5) m (recur (assoc m i (str i)) (inc i))))
9:49 clojurebot: {5 "5", 4 "4", 3 "3", 2 "2", 1 "1", 0 "0"}
9:49 hoeck: kzar: can you paste your error to lisppaste or gist.github.com?
9:49 AWizzArd: npoektop: for transient data you should follow chouser advice and rebind it locally, or use reduce or recursion.
9:50 chouser: npoektop: there, each time through the loop, m and i are bound to a new value, even though the values themselves (a map and an integer respectively) never change.
9:51 hoeck: kzar: compojure has also some more dependencies in the deps/ directory, maybe you have to add them to .swank-clojure too
9:54 kzar: hoeck: hmm OK, here's the paste http://
9:54 sexpbot: Execution Timed Out!
9:57 kzar: hoeck: brb, trying again now that the deps are there
9:59 jfields: is there a good example of using (-> ) anywhere?
10:01 kzar: hoeck: hey that worked, copied everything from compojure/lib into ./swank-clojure, restarted and it works :)
10:01 hoeck: kzar: great :)
10:01 Raynes: $(-> 3 (+ 4) (+ 1) (quot 3))
10:01 sexpbot: 2
10:02 Raynes: jfields: Are you having trouble understanding it?
10:03 jfields: would prefer one example with each function, to help with understanding, I think I get it tho.
10:04 Raynes: My previous example would end up as (quot (+ (+ 3 4) 1) 3)
10:04 kzar: ah crap it didn't work I typed (use :compojure) by mistake which returned nil
10:05 * Raynes wonders why sexpbot timed out a moment ago.
10:06 Raynes: It's ignoring that link kzar posted, because it has "paste" in it, so it's odd that it just randomly timed out.
10:06 kzar: Think you could drop in #clojure-causal for a moment and mention that link again?
10:07 hoeck: kzar: mhh, maybe your compojure.jar is corrupt? can you open it in midnight-commander and examine its contents?
10:11 kzar: (or use jar -t compojure.jar on the commandline)
10:12 kzar: hoeck: Should that command take a long time?
10:13 hoeck: kzar: maybe, the jar command is slow, thats why I'm always using mc :)
10:14 kzar: hoeck: Heh ok, all this is new to me anyway. brb going to make some tea. Thanks for the help
10:14 so far
10:14 hoeck: kzar: unzip -l compojure.jar will also work, and its faster :)
10:37 kzar: still going heh
10:38 wlangstroth: jfields: http://
10:38 do a find for "(->"
10:38 that's the clearest example I've found
10:38 hoeck: kzar: the jar -t ?
10:39 sexpbot: Execution Timed Out!
10:39 Raynes: Aha!
10:39 Oh wait.
10:39 Never mind. :|
10:39 wlangstroth: ie (-> x f3 f2 f1) is the same as (f1 (f2 (f3 x)))
10:40 kzar: hoeck: Yea, just tried the other command on a different machine and that was instat. Pasted an annotation to my paste with the output
10:40 AWizzArd: ((comp f1 f2 f3) x) is also an alternative
10:40 kzar: isntant*
10:40 ahh can't type
10:40 Raynes: That last one was because that article is huge and it didn't find a title in time.
10:41 * Raynes considers making timeouts quiet.
10:41 Raynes: At least for URL grabbing.
10:41 * Raynes does that.
10:41 hoeck: kzar: oh, there is something missing in your compojure.jar!
10:42 wlangstroth: AWizzArd: comp doesn't sit well with me, but maybe I have to warm up to it
10:42 kzar: hoeck: ah bugger, at least that 'splains it
10:42 Raynes: You don't like function composition?
10:42 You'd hate Haskell.
10:43 wlangstroth: Raynes: no, it's the format - I prefer -> to comp
10:43 AWizzArd: wlangstroth: I also like -> because it lets us list the jobs in the order we think about them, while comp reverses this but reads like (f1 (f2 (f3 x))) === (comp f1 f2 f3)
10:43 hoeck: kzar: it should be about 0.5M in size, containing around 400 files
10:43 Raynes: Oh. I agree.
10:43 hoeck: kzar: maybe download it again or run ant/lein whatever to rebuild it
10:43 Chousuke: comp creates a new function though
10:43 kzar: hoeck: Yea I'll get a proper version, I know how to test it's good now as well
10:44 hoeck: Thanks for helping me
10:44 Chousuke: so ((comp x1 x2 x3) foo) is more wasteful than (-> foo x1 x2 x3)
10:44 hoeck: kzar: youre welcome :)
10:44 wlangstroth: Chousuke: haha - exactly
10:45 AWizzArd: Is something like reflection planned for defrecords? (defrecord Foo [a b c]), (reflect (create-Foo 1 2 3)) ==> {:class Foo, :create-fn #<ns$_create-Foo___36@e3ed>, :fields [a b c], :options {}}
10:46 Chousuke: you can always use the java reflection APIs :P
10:46 * AWizzArd cheers
10:47 Chousuke: but hm.
10:47 I accidentally pressed Cmd-Q in emacs, and it then asked whether I want to quit, as there are processes running
10:48 I answered no, the dialog went away, and... emacs quit.
10:49 that's a wierd bug to have :P
10:49 weird*
10:50 rhickey: question #2 for the day - record equality can have either straight map semantics or include same-type check - preferences?
10:50 hoeck: Chousuke: mhh, doesn't he ask "there are active processes, still want to quit" yes/no?
10:50 AWizzArd: include same-type check please
10:50 Chousuke: hoeck: yes, it did. and I answered no, and it still quit :P
10:51 AWizzArd: rhickey: please allow me to ask if for Q#1 there is a descision yet.
10:51 Licenser_: lein search has now update (which updates used libraries :)
10:52 rhickey: AWizzArd: no
10:52 Chousuke: rhickey: would there be a way to compare records with map-semantics too then?
10:53 rhickey: Chousuke: dunno, but there is only one =
10:53 AWizzArd: I just see that there will be more usecases for included types.
10:55 cemerick: rhickey: map semantics please.
10:56 rhickey: cemerick: current deftype uses type tag
10:57 cemerick: yeah, I noticed :-)
10:59 Mixing the type tag into equality seems decidedly contrary to the general approach; records are just bags of slots (expandable, even), protocols cut across all hierarchies as necessary, etc.
11:00 rhickey: cemerick: I don't get your point re: protocols
11:01 AWizzArd: the name defrecord already implies for me that type information is an important one
11:01 first of all it is a specific kind of data collection, and only secondary it is a map
11:03 (into {} (create-Foo 1 2 3)) ==> {:a 1, :b 2, :c 3}
11:03 Chousuke: I'm more inclined to think that a record is just a map that has been given a name
11:03 AWizzArd: if that were possible then it would be easy to compare with map semantics
11:03 sattvik: rhickey: Is there a significant performance penalty for one approach over the other? To a certain extent, I think that type checking vs. general seems somewhat analogous to equals vs. equalsIgnoreCase.
11:04 AWizzArd: Chousuke: (def x {:a 1, :b 2}) is in my opinion a named map, while (defrecord Foo ..) is more general, it categorizes maps of a specific kind.
11:04 rhickey: sattvik: perf shouldn't matter for this decision
11:04 AWizzArd: Leaving out the the type in comparisons would miss the point.
11:04 cemerick: rhickey: my point (hardly made) was that IMO, records are their slots, for which the type tag is merely a shorthand, and it seems that protocols take the same stance.
11:05 rhickey: cemerick: protocols don't seem subject to meaningful equality
11:05 cemerick: hrm, now I'm arguing with myself in my head
11:06 sattvik: cemerick: So would two types with equivalent content be equivalent?
11:06 cemerick: sattvik: that's what I've been suggesting, yes.
11:06 wait, I'm going to go get a Snapple, and then be back with an astonishingly convincing argument.
11:07 rhickey: or recant :)
11:07 * cemerick apologizes to those who don't get the joke
11:08 AWizzArd: In principle we would have to see how people are using it. If the place is scattered with (and (instance? Foo obj1) (instance Foo obj2) (= obj1 obj2)) something is wrong.
11:08 But (= (into {} obj1) random-map) is not bad for the case without the type.
11:08 sattvik: Hmm.. should (= (create-Type1 1 false) (create-Type2 1 false))? From a Java perspective, this generally is not the case, but this is not Java...
11:09 wlangstroth: I'm going to avoid toolshedding entirely, but is there anywhere the defrecord issue is laid out in detail?
11:12 AWizzArd: Not implicating the type means in principle that a programmer is forced to manually check for the types explicitly in every single comparison, if he/she wants clean and self-documenting code.
11:13 sattvik: More specifically, should (= (create-RadialPoint 0.4 1.0) (create-CartesianPont 0.4 1.0))?
11:13 AWizzArd: type errors may get detected much later without implicit type checking
11:14 cemerick: sattvik: presumably, the names of the slots are different for those objects.
11:15 rhickey: cemerick: that's a weak standard
11:15 cemerick: yeah, I know
11:16 AWizzArd: cemerick: now that defrecords will possibly get a stable name we can get even more useful serialization (long-term that is, and over the network)
11:16 seths: rhickey: OT: how likely are breaking changes to deftype before Apr 22? I'm presenting labrepl then and want to be ready to update the code
11:16 cemerick: Once concern I have w.r.t. including the tag is it potentially makes interop between two established, related libraries more difficult.
11:16 rhickey: AWizzArd: they always got a stable name when AOTed
11:16 cemerick: how so?
11:17 sattvik: cemerick: That's true. Or, at least, one should hope so. I am not sure I have a preference. The more general approach does seem more in line with how clojure handles value in general. After all (= [1.0] '(1)).
11:17 AWizzArd: rhickey: I mean more the "even dynamically" part of your update today :)
11:18 rhickey: AWizzArd: that won't hold since while the names might be the same, the classes won't necessarily, and thus the serialization won't be dynamically viable
11:19 AWizzArd: rhickey: ok, i see. And what about this example case: I don't aot my code and serialize instances of (defrecord Foo [x]), then restart the jvm and reload the code and try to deserialize. Would that work, if the fields of the class didn't change?
11:20 cemerick: rhickey: well, consider ring and compojure -- for some time, the latter produced "ring-compliant" objects (requests, responses, etc). In such a situation, where one wants to produce records that are functionally equivalent to another lib's records, one would have to use that other lib's defrecord types. That seems like an unnecessary barrier.
11:20 rhickey: cemerick: your extending this equality limitation to a greater extent, other than equality, they will be substantially interoperable
11:21 you're
11:21 cemerick: I suppose it's largely irrelevant in a world where everyone's using protocols.
11:21 AWizzArd: cemerick: even when you use Protocols?
11:22 what if in this scenario my defrecord is incompatible? Then this would go unnoticed, because for a short moment some other ring defrecord may contain the same data/fields, but generally is incompatible.
11:22 cemerick: also if (= your-map (into {} some-ring-record)) worked or something similar it would still be fine.
11:23 cemerick: sure, but I'd like to be sure we don't need/want that wart :-)
11:23 AWizzArd: When I vote for "please include the type check" I don't want to *forbid* map-like comparisons.
11:23 Just getting the default right.
11:23 cemerick: OK, let's get into stupid question territory: what are the types *for*? (a) protocol dispatch, (b) construction of an object matching the type's declaration, (c) ....?
11:24 AWizzArd: program correctness
11:24 cemerick: AWizzArd: meaning what?
11:24 rhickey: (c) interface implementation, (d) primitive fields, (e) fast accessors
11:24 AWizzArd: or filtering specific objects out of a vector of records
11:24 cemerick: rhickey: yeah, I was (perhaps foolishly) trying to stay away from impl details
11:25 AWizzArd: cemerick: I have no concrete case for that, I just think that objects may slip through comparisons as equal and produce some problems later on
11:26 sattvik: cemerick: Perhaps interop with host libraries? If I understand it correctly, you could deftype an EJB.
11:27 AWizzArd: Btw, will the newdeftype be able to do (deftype clojure.lang.PersistentVector ...)?
11:27 cemerick: sattvik: sure -- and in that case, you're sort of opting into the host type hierarchy.
11:27 AWizzArd: OK; say you have type A with slots :start and :end, and type B with slots :start and :end -- if your operations are protocols, where does an "erroneous" equality check lead you astray?
11:27 * cemerick honestly playing devil's advocate
11:28 rhickey: cemerick: I'd flip it around, doesn't the fact that protocols won't match a same-shaped thing already create a difference?
11:29 i.e. equality alone doesn't break interop
11:29 cemerick: rhickey: yeah, that was what I was getting at with the ring/compojure interop thing not really being germane given protocols.
11:30 rhickey: cemerick: there is a huge amount of data manipulating stuff around maps that will still work, but I'm not sure entire-map-equality is that important an operation
11:31 when manipulating things like records
11:31 cemerick: yeah, neither am I
11:31 rhickey: and when it is, you don't ever want apples = oranges
11:32 maybe a-map-literal = an-orange
11:32 but I'm hoping for a convenient literal form for orange
11:32 #Orange{:a 1 :b 2} or something
11:33 cemerick: I'm just trying to ferret out what it means for types to be involved in equality in general, i.e. why (= #Bar{:a 5 :b 6} #Foo{:a 5 :b 5}) would be bad
11:33 rhickey: cemerick: when Foos and Bars are used as keys in a map?
11:33 AWizzArd: Although there exists one case where it would be comfortable to have a map-like comparison: we don't need to create artificial Foos just for comparisons, or otherwise hack some verbose code. (= some-foo {:a 1, :b2}) vs (= some-foo (create-Foo 1 2))
11:34 rhickey: cemerick: when Foos and Bars are placed in a set
11:34 oops, some disappear
11:34 cemerick: rhickey: well, whether that's good or bad depends on one's preference w.r.t. equality semantics
11:35 AWizzArd: I already stumbled upon this with sorted-set-bys or sorted maps, don't remember, but I think it were sets. To get objects out of a set with subseq I had to artificially create deftype instances so that the comparator would work.
11:35 rhickey: cemerick: so, no oranges for me when I send you to buy groceries? :)
11:35 * cemerick has never liked citrus *that* much ;-)
11:35 AWizzArd: I think rhickey got a point here, because that position is more safe. One may want another semantics, but then one should really write ones own comparator.
11:36 rhickey: cemerick: a common complaint when people were using metadata for types was that it *didn't* participate in equality
11:37 cemerick: the other side will be coming for you shortly :-P
11:37 rhickey: cemerick: likely
11:37 cemerick: Having to consider types at all is an odd-feeling reversion after a long time with just maps and multimethods.
11:37 rhickey: cemerick: but what were you using to distinguish your multimethods?
11:39 AWizzArd: I always added a :type slot *sigh*
11:39 cemerick: sometimes class or type, oftentimes existence of slots necessary to support the methods being dispatched to.
11:39 Some would say the latter is "manifest typing". 0.0
11:39 hrm, wrong emoticon
11:41 so, given protocol dispatch, I'm now flipping to include type in equality.
11:41 But there has to be a better solution for untyped equality than (= some-map (into {} foo-record))
11:41 * rhickey predicted recant at 11:06
11:41 AWizzArd: (:
11:41 cemerick: rhickey: the journey is the reward :-)
11:42 rhickey: cemerick: I agree, and it ends up type-including equality can be built on type-ignoring but not vice-versa
11:42 cemerick: plus, I got to scare AWizzArd a little ;-)
11:43 rhickey: are we talking about anything fancier than a map-level = plus an instanceof?
11:44 Licenser_: Is the (theoretical Foo) here a java object or something else? Idnd
11:44 rhickey: cemerick: I appreciate the push-back. Now with defrecord distinct from deftype it would be possible to do something slightly less efficient with defrecord, if the flexibility was there
11:44 cemerick: nope, just that
11:44 Licenser_: 't joined early enough sadly
11:44 rhickey: cemerick: actually identical? classes
11:44 not instanceof
11:44 cemerick: oh, right
11:45 rhickey: one nice thing about types as metadata was that it was easy to spoof a type on the fly
11:47 otoh, there's no way to get the perf that deftype + protocols can deliver
11:47 moshisushi: hello tehre
11:47 noob question: http://
11:48 cemerick: moshisushi: you need to use clojure.contrib.duck-streams before you can invoke reader directly
11:48 or, better yet, (require '[clojure.contrib.duck-streams :as io]) and then use io/reader
11:48 Licenser_: moshisushi: you - okay cem was faster
11:48 moshisushi: :>
11:50 cemerick: Could not locate clojure/contrib/duck_streams__init.class or clojure/contrib/duck_streams.clj on classpath
11:50 bsteuber: rhickey: I'm currently working on docstring-support for def - will there be a chance you accept the patch once I sent you the contributor agreement?
11:50 moshisushi: hmm
11:50 cemerick: moshisushi: what does your classpath look like?
11:50 moshisushi: just clojure.jar right now
11:51 Licenser_: ah you need clojure-contrib.jar too
11:51 cemerick: make sure it's the same corresponding version, though.
11:51 moshisushi: Licenser_: makes sense! sorry for bothering y'all with these lamey questions
11:52 Licenser_: moshisushi: you are not bothering at all
11:53 moshisushi: oh by they way... anyone knows of a "quotable" paper/article on clojure STM? i'm writing a bachelors essay on STM (in Haskell specifically), and would love to add a short comparison to the clojure dito
11:59 cemerick: rhickey: you replied "not yet" to Stu's question re: protocol dispatch precedence on the list last month. Should I read that as "coming soon" or "should be possible, but it's not on the table", or something in between? :-)
12:00 rhickey: cemerick: I really don't want to repeat "prefers"
12:01 cemerick: rhickey: what was wrong with prefers?
12:03 rhickey: cemerick: less a problem with prefers than with the situation it addresses (MI of interfaces and the ability to hook protocols up to interfaces). I don't have another solution at present
12:08 * rhickey waits for problem to go away
12:08 cemerick: good luck on that one :-)
12:08 Licenser_: rhickey: I'd watch out this practice is patented by Siemens
12:11 cemerick: Could just dispatch based on lexicographic order when there's ambiguity. Would make interface names a lot more amusing.
12:12 Licenser_: a0001Cow a0002Sheep a0003Dog
12:12 weeh for class names :P
12:12 rhickey: cemerick: but the problem is always pre-existing interfaces
12:12 cemerick: rhickey: sure
12:12 that was a joke, there, son! :-P
12:12 Licenser_: can't you give the multi method a kind of 'compare' function?
12:13 cemerick: Licenser_: you can declare dispatch value priority.
12:14 Licenser_: so where is the problem?
12:20 rhickey: Licenser_: no similar capability for protocols yet
12:22 Licenser_: oh okay
13:39 borkdude: Guys, whenever I start swank-clojure-project in Emacs, it keeps polling forever
13:39 what could be wrong?
13:41 bsteuber: Borkdude: check your *inferior-lisp* buffer
13:44 Borkdude: bsteuber: it starts a server
13:44 (do (.. java.net.InetAddress getLocalHost getHostAddress) nil)(swank.swank/start-server "/tmp/slime.2347" :encoding "iso-latin-1-unix")
13:45 And then this happens... Exception in thread "main" java.lang.NoClassDefFoundError: clojure/main
13:47 bsteuber: does swank-clojure-project use clojure+clojure.contrib from the project's lib directory?
13:47 polypus: Borkdude: yes it does
13:47 Borkdude: I have the lib directory at war/WEB-INF/lib
13:47 polypus: i don't think it'll find it there
13:47 cemerick: rhickey: Not sure if you're watching this, but this issue is a combination of mundane and really important: https://
13:48 sexpbot: #281 - Make more datastructures serializable (Test) | Clojure | Assembla
13:48 Borkdude: I am trying to run this project here http://
13:49 ah.. so swank-clojure-project doesn't really 'read' project.clj, it just supposes you use the same structure always?
13:49 that would explain
13:49 polypus: yep. that got me once too
13:54 s450r1: Borkdude: since you have a project.clj, I'm guessing you're using lein? If so, you can run "lein swank" and then connect from emacs with M-x slime-connect. Then you can use the jars in war/WEB-INF/lib, I think.
13:55 bsteuber: Borkdude: so maybe you should go with lein swank then
13:55 s450r1: oh, didn't see your post
13:55 Borkdude: s450r1, ah that sounds helpful
13:56 I now made a symbolic link from lib to the war dir which also works
13:56 but lein swank sounds cleaner
13:57 s450r1: borkdude@Ubuntu-VM:~/temp/beget$ lein swank
13:57 swank is not a task. Use "help" to list all tasks.
13:58 ah I see I need a plugin, sorry
13:58 bsteuber: yeah, they changed this
13:59 technomancy: no, it's always been a separate plugin
14:00 s450r1: Borkdude: oops, sorry, should have included that information
14:00 http://
14:00 bsteuber: technomancy: oh - then I guess I used the plugin without realizing :)
14:01 Borkdude: s450r1: yup, it works, thanks!
14:06 s450r1: np, technomancy did all the work :-)
14:07 technomancy: thanks for all your projects, I'm using a good number of them... oh wow, relax.el, I think I can use that right now. Sweet!
14:07 technomancy: s450r1: that makes one of us
14:08 I haven't used it since I wrote it =)
14:09 wlangstroth: technomancy: lein is gold, though
14:10 technomancy: I'm not trying to embarrass you or anything, but if I had to start with maven instead of being eased into the process with leiningen, that would have been painful
14:11 so thanks from me, too
14:15 technomancy: great =)
14:33 * LauJensen pats technomancy on the shoulder - keep up the good work ol' pal :)
15:20 Borkdude: How do I specify the namespaces to compile in a project.clj?
15:20 :namespaces [beget beget.templates] ??
15:22 I changed the beget/templates.clj file lein says all :namespaces already compiled
15:23 jweiss: is there a fn, maybe in contrib that will automatically (use 'blah.blorg :reload-all) when i save blah/blorg.clj?
15:28 LauJensen: jweiss: You aren't that PHP blogger by any chance, are you?
15:28 jweiss: LauJensen: PHP? good lord, no
15:28 LauJensen: Ok, then I'll be happy to help
15:28 jweiss: hehe
15:29 LauJensen: Clojure doesn't know when you're saving files, you if you want that kind of functionality, you need to work it into Emacs
15:29 (just kidding, I have no hate for PHP bloggers)
15:29 jweiss: LauJensen: yeah i figured it'd either have to run as a thread or agent from the repl
15:29 but your emacs suggestion sounds interesting as well
15:40 programble: wow
15:40 * programble <3 #clojure
15:40 programble: you guys arent pricks
15:41 heejp: hey
15:41 can anybody help me with something, please?
15:41 programble: fuckin #python pricks
15:41 heejp: just ask :)
15:41 heejp: I'm having trouble with multimethod dispatch functions
15:42 I'm working on an object system called Fenrir
15:42 and here's my instance making function:
15:42 (defmulti new-obj #(:_fenrir_class-name %))
15:42 (defmethod new-obj ::fObject [fclass & kvals]
15:42 (with-meta (apply struct-map (conj kvals (:_fenrir_struct fclass)))
15:42 {:_fenrir_class (:_fenrir_class-name fclass)}))
15:42 kotarak: heejp: please paste somewhere and post the link here
15:42 LauJensen: ~paste
15:42 clojurebot: lisppaste8, url
15:42 kotarak: eg. paste.lisp.org
15:43 heejp: sorry
15:43 LauJensen: programble: One of the tricks of keeping a calm and friendly community, is to avoid from foul language and dissing other groups - So appologize and move on :)
15:43 heejp: I'll take that into account next time
15:43 anyway
15:43 with that code snippet I pasted
15:43 when I do something like this:
15:44 (new-obj fGameObject :location 1 :sprite 2)
15:44 I get this error:
15:44 java.lang.IllegalArgumentException: Wrong number of args passed to: core$fn (repl-1:17)
15:44 kotarak: heejp: you dispatch function must take the same number of arguments. Try: #(:_fenrir_class-nam (first %&))
15:45 heejp: um...
15:45 I see
15:45 let me try it
15:45 hiredman: (comp :_fenrir_class-nam first list)
15:46 heejp: hey
15:46 it worked!
15:46 hehehehe
15:46 thanks, guys
15:58 dakrone: ,(.replaceAll "foo\bar" "\\" "SLASH")
15:58 clojurebot: java.util.regex.PatternSyntaxException: Unexpected internal error near index 1 \ ^
15:58 dakrone: ,(.replaceAll "foo\\bar" "\\" "SLASH")
15:58 clojurebot: java.util.regex.PatternSyntaxException: Unexpected internal error near index 1 \ ^
15:58 dakrone: ,(.replaceAll "foo\bar" "\\\" "SLASH")
15:58 clojurebot: EOF while reading string
15:58 dakrone: ,(.replaceAll "foo\bar" "\\\\" "SLASH")
15:58 clojurebot: "foo\bar"
15:58 dakrone: can someone tell me how to get the backslash replaced?
15:59 kotarak: ,(.replaceAll "foo\\bar" "\\\\" "SLASH")
15:59 clojurebot: "fooSLASHbar"
15:59 kotarak: I think "\b" is bell, no?
15:59 programble: it is
15:59 no wait
15:59 isnt that \a?
16:00 kotarak: backspace, maybe?
16:00 programble: yes
16:00 dakrone: okay, why the 4 slashes for 1 regular slash?
16:00 kotarak: 2 for the string, 2 for the regex
16:01 regex requires \\, but \\ in a String is only one \.
16:01 opqdonut: the string "\\\\" is really the string "\\" which corresponds to the regex "\"
16:01 dakrone: ahh, so escaping for the reader, then escaping again for the regex
16:01 hiredman: ,(->> #"" class .getMethods (map #(.getName %)))
16:01 clojurebot: ("toString" "matches" "split" "split" "compile" "compile" "matcher" "quote" "pattern" "flags" "wait" "wait" "wait" "hashCode" "getClass" "equals" "notify" "notifyAll")
16:02 hiredman: split but no replace
16:02 opqdonut: dakrone: yeah, basically
16:02 kotarak: ,(.toString #"\\")
16:02 clojurebot: "\\\\"
16:03 kotarak: ,(str #"\\")
16:03 clojurebot: "\\\\"
16:03 Borkdude: And then suddenly 'lein swank' stopped working, no idea what happened
16:03 kotarak: ,(.replaceAll "foo\\bar" (str #"\\") "SLASH")
16:03 clojurebot: "fooSLASHbar"
16:03 dakrone: how does http://
16:03 am I missing any?
16:04 Borkdude: still have this in my project.clj: :dev-dependencies [[swank-clojure "1.1.0"]
16:04 [leiningen/lein-swank "1.1.0"]]
16:04 then it should just work, right?
16:04 LauJensen: dakrone: ^ ?
16:05 hiredman: dakrone: http://
16:05 kotarak: ^ is deprecated
16:05 hiredman: oh
16:05 LauJensen: I vote for undeprecating it!
16:05 hiredman: reader macros
16:05 LauJensen: Oh wait, we're not voting :)
16:05 hiredman: it's going to be used for type hinting
16:06 kotarak: "clojure is not designed by public voting" rhickey (or something like that) (and that's good, IMHO)
16:06 dakrone: LauJensen: thanks, I'll add that one
16:06 hiredman: cool, thanks
16:07 LauJensen: kotarak: Of course its good
16:08 StartsWithK: there should be a secret voting then :)
16:08 LauJensen: StartsWithK: oh there is...
16:08 I'm pretty sure :)
16:09 hiredman: clojurebot: secrets?
16:09 clojurebot: I don't understand.
16:09 StartsWithK: hmm.. is there a secret handshake too.. we may never know
16:09 hiredman: I think polls have been on the todo list for clojurebot forever now
16:11 kotarak: StartsWithK: #^'~@ (<- secret reader macro)
16:12 StartsWithK: kotarak, hehehe
16:12 LauJensen: The secret is, that when you see the Clojure Logo in a mirror, it reads "PERL" in swirly 3d letters
16:13 StartsWithK: repl is a hidden clue :)
16:13 kotarak: I use Clojure as my secret weapon at work. Maybe we'll be able to hide clojure in perl programs to perfect this technique.
16:20 raek: what is recommended for signaling exceptions? deftype'd java exceptions? c.c.error-kit? c.c.condition?
16:23 StartsWithK: raek, gen-class is your only option if you want new exception name (or java)
16:23 raek: I want the ability do distinguish different kinds of errors
16:24 hiredman: condition has a niggling little bug that I don't think is fixed upstream yet
16:24 raek: ...but not neccerarily by having a java class for each one
16:24 hiredman: the various java.lang exceptions aren't good enough?
16:24 Borkdude: Any idea why my 'lein swank' is not working anymore?
16:24 hiredman: clojurebot: exceptions!
16:24 clojurebot: http://
16:25 Borkdude: It worked an hour or so ago...
16:25 hiredman: clojurebot: botsnack
16:25 clojurebot: thanks; that was delicious. (nom nom nom)
16:25 bsteuber: Borkdude: what's the exact problem?
16:25 Borkdude: it says 'swank is not a task'
16:26 hiredman: have you run lien deps?
16:26 Borkdude: hiredman, yes, but I will do it now to be sure
16:26 hiredman: the swank plugin needs to be a dev dependency
16:26 and deps will fetch it
16:28 Borkdude: ah I now get it
16:28 also with lein swank it doesn't support the lib directory to be something other than <proj-dir>/lib
16:29 even if specified otherwise in project.clj
16:29 even if > although I mean
16:39 slyphon: anyone else have slime sort of mysteriously change back to the 'user' namespace occasionally?
16:41 tomoj: when I tell it to switch into a namespace that doesn't exist, it goes back to 'user'
16:41 that's the only time I've noticed it
16:41 slyphon: hmm
16:41 oh, maybe it's when i open a namespace i haven't previously required
16:41 or compiled
16:41 tomoj: yeah, that would do it
16:42 slyphon: ok, as long as i'm not just losing it :)
16:48 ztellman: ,(assoc {} :octaves 3)
16:48 clojurebot: {:octaves 3}
16:48 ztellman: hmm, in 1.2.0 that throws an exception for that particular keyword
16:48 anyone know why?
16:51 chouser: ztellman: seems to work fine here
16:52 dakrone: yea, same here
16:52 ztellman: hmm, when I open a fresh repl it works fine for me too
16:53 weird, dunno how I got into this state
16:53 tomoj: what's the exception??
16:53 ztellman: (class: example/opengl/marble$eval__70767, method: <clinit> signature: ()V) Incompatible argument to function
17:19 Licenser: is there a function to test if something is a map?
17:19 aka hashmap
17:20 remleduff: associative? maybe
17:21 tomoj: well, there's map?
17:22 Raynes: $(map {})
17:22 sexpbot: Wrong number of args passed to: core$map
17:22 Raynes: $(map? {})
17:22 sexpbot: DENIED!
17:22 Raynes: Orly
17:22 Must not have map? whitelisted.
17:22 remleduff: $(associative? {})
17:22 sexpbot: false
17:22 remleduff: Color me surprised
17:22 $(associative? [])
17:22 sexpbot: true
17:23 Raynes: Whoda thunk it?
17:23 remleduff: $(doc associative?)
17:23 sexpbot: ------------------------- clojure.core/associative? ([coll]) Returns true if coll implements Associative
17:23 tomoj: uhh
17:23 here, (associative? {}) is true
17:23 Raynes: ,(associative? {})
17:23 clojurebot: true
17:24 Raynes: Licenser: ^ That's kind of weird.
17:24 * Raynes checks to see if this is some sort of weird clj-sandbox thing.
17:24 Licenser: no that my friend is a bug
17:24 Raynes: Oh.
17:24 I thought so.
17:30 Licenser: thanks for the help and night people
18:00 maacl: Why would I get a null pointer exception if I try to do M-. (using emacs/SLIME) on a the name of a var in the same file as it is defined, while it works perfectly well if doing the same from within another file?
18:08 dnolen: maacl: that will only work if you ran compile file (C-c C-k) on that file, if you eval'ed a secpr with C-x C-e, M-. will not work
18:09 maacl: dnolen: ah, thanks
20:27 rhickey: it's alive! - first cut of defrecord is up
20:33 arohner: http://
20:33 sexpbot: /dev/rohner: Writing JQuery code with Scriptjure
22:27 vIkSiT: hi all
22:27 can anyone point me to some documentation on settings up slime / swank for a specific project started using lein?
22:30 slyphon: http://
22:30 sexpbot: in which are found tricks of the trade concerning clojure authorship - Technomancy
22:35 vIkSiT: slyphon, ah my problem is that once I do M-x swank-clojure-mode .. and point it to the proejct dir..
22:36 I'm still stuck with a "Polling /var/folders.." message and slime never starts up.
22:36 slyphon: does "lein repl" work in your project dir?
22:36 clojurebot: http://
22:37 vIkSiT: hmm
22:37 yes it does - but looks like it takes 1.1.0 rather than 1.2.0-master that I have otherwise
22:38 slyphon: 1.2.0 hasn't been released officially yet, afaik
22:39 Raynes: 1.2.0 master works with it.
22:39 vIkSiT: slyphon, ah yes, I mean that 1.2.0 is the JAR I'm using in my CP
22:39 so I guess there are 2 issues : 1) lein repl picks up a 1.1.0 jar; and 2) swank doesn't connect to anything at all.
22:40 so 1) can i specify a version of clojure for lein to use, and 2) is there a way to see the output of the swank-polling process to see where it hangs?
22:40 arohner: vIkSiT: the released version of lein starts the clojure version it's built with
22:40 sorry, the stable version of lein
22:40 vIkSiT: arohner, ohh I see.
22:41 arohner: that's fixed on lein HEAD
22:41 vIkSiT: that sucks
22:41 do you recommend using the version of lein that runs 1.2.0?
22:41 arohner: I haven't tried it, but I think other people are using it successfully
22:42 vIkSiT: ah ok.
22:42 and any ideas about question 2) ?
22:43 slyphon: *slime-events* buffer?
22:43 i usually do lein swank
22:43 arohner: also check *inferior-lisp*
22:43 slyphon: and then connect using M-x slime-connect
22:43 that way if there's a narsty stack trace i see it
22:43 * arohner also uses slime-connect
22:43 slyphon: (it also lets you set properties on the command line)
22:44 (more easily than the other way)
22:45 vIkSiT: wait, you do lein swank from the command line?
22:45 is that a valid option?
22:45 slyphon: yes
22:45 vIkSiT: weird. It doesn't seem so in my case
22:45 slyphon: are you using a recent lein
22:45 wait, hang on
22:46 vIkSiT: "swank is not a task. Use "help" to list all tasks."
22:46 slyphon: lein version?
22:47 liebke: make sure you have [leiningen/lein-swank "1.1.0"] in your project file in :dev-dependencies
22:47 slyphon: ah, that too
22:47 it's a plugin
22:51 vIkSiT: one sec, checkingversion
22:51 its 1.1.0
22:51 I've added :dev-dependencies [[leiningen/lein-swank "1.1.0"]] to my project.clj now
22:53 and now doing a lein deps.
23:07 arohner: so if I have a deftype/defrecord, and I get its constructor, java claims the constructor takes n+2 arguments, where 2 is the number of fields I have
23:07 lisppaste8: url?
23:08 hiredman: arohner: I imagine it also takes a map of metadata and maybe other stuff
23:08 arohner: hiredman: oh right, there are two
23:24 hiredman: btw, props again on naming c.c.java-utils/wallhack
23:24 I have a legitimate use for it now, and I smile each time I see the name
23:34 timcharper: Is there a way to map a collection of values across a function that has a side effect and still get the return value?
23:34 Actually using the return value (somewhere down the line) is optional.
23:34 (I'm mapping over a collection of hash maps and inserting records in a database, returning the results from those inserts)
23:35 However, doseq, while successfully causing the side effects to occur, returns nil
23:36 arohner: timcharper: you can (doall (for [] ...))
23:36 or (doall (map...))
23:37 timcharper: Excellent! That's exactly what I'm looking for :-) thank you!


text:
Aqua Soft Multipurpose solution for Contact Lenses
Availability:In Stock
- 10000 or more Rs.0.00
- Brand: AQUASOFT
- Product Code: Aqua Soft Multipurpose solution for Contact Lenses
Complete solution pack contains all that is necessary to take care of your Lenses and eyes. Your eyes are a very important part of your system and need to be taken care of in the best possible manner. This kit will make sure that proper care is taken.
This pack contains 2 bottles containing 360 ml each and 1 lens case.

subset: commoncrawl


text:
The Linden Endowment for the Arts (LEA) will be premiering at the SL7B this year, featuring a build by Bryn Oh.
As Niko Linden states in his blog for Linden Lab, "The Linden Endowment for the Arts (LEA) program's goal is twofold: 1. To create an immersive space for artists to share their art, build connections, and prosper in the Second Life community; 2. To provide a new way for artwork to live on within our ever-changing virtual world."
With that in mind, Niko states in a later blog, "One of the main points we want to really drive home, is that we plan on working collaboratively with existing art communities, as well as creating a space for people to learn more about the art scene and get started themselves in SL."
The Endowment is pleased to present this piece of art by Bryn Oh as their first offering, titled "Hysteria."
This machinima shows the inworld presentation of LEA – Linden Endowment for the Arts – at SL7B, 2010.
Shot in Second Life by Chantal Harvey, build by Bryn Oh.
Come see this piece live at SL7B at the LEA.


text:
Getting Started: Using the plugin (v1.x.x)
Using the OBS iOS Camera plugin is easy. Once you have the plugin installed and the iOS app installed:
- Download and install version 1.x.x of the OBS Studio iOS Camera Plugin
- Open OBS Studio on your computer.
- Add a new "iOS Camera" source to your scene.
- Open the OBS Stream App on your iPhone.
- Connect your iOS device to your computer.
- Use your iOS device as a webcam and stream your heart out! 😃
Plugging in your iOS device with the app running automatically connects to OBS Studio.
Back to details


text:
Evertonians may be feeling apathetic over their team's sorry season so far this term, but there's one positive aspect that plenty are certainly looking forward to.
The promising development of a new state-of-the-art stadium at Bramley-Moore Dock has set tongues wagging among the Toffees' faithful ever since it was announced midway through 2017.
Whilst everyone associated with Everton will be sad to see the club leave Goodison Park after 127 years, a bright new era in a ground on the banks of the River Mersey is an opportunity that many hope can ignite the glory days of the mid to late 1980s.
🔵 | We can share our 'Key Principles' for the development of a new stadium at Bramley-Moore Dock and an enduring legacy at Goodison Park.— Everton (@Everton) January 24, 2018
➡ https://t.co/ohmeDBUdvx pic.twitter.com/wMkS3GsTZk
Talk on the project had gone quiet until the club's Annual General Meeting earlier in January and, following those tentative plans, the Premier League side took to their official site on Wednesday to reveal their 'key principles' document that outlined what they hope to achieve from their currently slated 2022 stadium move.
The club's 11-point promise came with an added caveat that other teams in recent history haven't taken into account when deciding on how to take their dream move forward.
What would our fans like to see?
(You may also be interested in Everton Lay Out Key Principles Ahead of Proposed Switch From Goodison Park to Bramley-Moore Dock)
It's a simple query that has been overlooked by other clubs who have taken up residence in new grounds over the past 20 years and, whilst fellow top flight outfit Spurs conducted their own similar survey, it was small in comparison to Everton's.
Not only are Evertonians asked for their input on how the stadium should look, what facilities it could include and the chance to see any replica models of the proposed stadium in person, but the club's own 11-point promise has included the fanbase at its very heart too.
A long-lasting legacy in the L4 community once Goodison is torn down, a stadium whose stands are close to the pitch as humanly possible, improving transport links to and from the stadium and other fan-led initiatives are at the forefront of all of Everton's key principles for their new ground.
'Away fans are a key ingredient of every matchday. We will locate them in a position which enhances the matchday atmosphere' - NO! If you want the stadium to be a cauldron and of benefit to EFC, put the away fans up in the gods, away from having any influence on the game at all.— UpperGwladysBlue (@UpperGwladysBlu) January 24, 2018
Everton prides itself on being 'The People's Club' despite the man who helped coin the term - David Moyes - no longer being part of the set up on Merseyside.
It is this ethos which is serving the club as it ploughs ahead with plans to build and move into a new world-class stadium that all supporters of the Toffees can be proud of, and is going a long way to ensuring that they are as involved as anyone else connected to the club.
Players, managers, staff members and grounds will come and go but, as long as a club's fanbase remains, so too does a team.
Everton know this, and want to use their supporters to the best of their abilities heading into a new dawn for one of England's best known side


text:
Check back regularly here for White Kitchen Cabinets and home improvement tips and tricks to make sure you get the most out of your next White Kitchen Cabinets!
Learning the process
If you're considering White Kitchen Cabinets in Knightdale, NC, you have to be informed to come up with the very best judgments. You should not go in without knowing it properly, and you will need to learn what to prepare for. This is why we try to make every effort to ensure you are aware of the process and are not confronted by any kind of unexpected surprises. Start off by calling 844-329-5869 to talk about your job. We are going to answer all your questions and set up your first meeting. Our team will show up at the scheduled time with all the required materials, and can work together with you throughout the job.
Consider Star White Kitchen Cabinets for White Kitchen Cabinets in Knightdale, Wyoming
You've got many reasons to rely on Star White Kitchen Cabinets for your needs regarding White Kitchen Cabinets in Knightdale, NC. We have got the best customer service scores, the best equipment, and the most effective and productive money saving techniques. We have got the experience you will want to fulfill all your goals. If you want White Kitchen Cabinets in Knightdale, choose Star White Kitchen Cabinets by dialing 844-329-5869, and we are going to be happy to help you.


text:
It's that time of year again. NaNo is just around the corner. And I'm just as, if not more, nervous for this year as I was last year.
Some of you may remember that I didn't win my first year. I'm still okay with that because I still wrote more that month than I ever had before. But this year, I feel even more pressure to win. Now that I've gone through it once, I feel like I should be more prepare.
I think it's safe to say that's not how I feel. At all.
Since NaNo last year, I have learned a few things about myself as a writer. One, I'm not a wing it kind of girl. I always thought I was, but after the fail that CFW turned into and the success that VDGP is turning into, I've been proven wrong. So I've been outlining The Freshman Affair, but there is something missing. The "Magic Feather" as Lori (Between Brothers out now. Read it.((Unless you're like me and are still waiting for the paperback to come out))) and Scarlett have deemed it.
I've got a little more than a week to discover that magic. Keep your fingers crossed for me!
On a side note- My birthday was two days ago. Which still hasn't really hit me. I feel like I just hit 18. What happened to 2009?
To apologize for my absent, I present to you:
Men who could murder your cat and you'd forgive them without hesitation.
Forget about my blatant neglection yet? Not quite? Well this should do it then....
Enjoy. =]
Wednesday, October 21, 2009
5 comments:
- Amna said...
You are most definitely forgiven...
- October 21, 2009 at 11:46 AM
- Adam said...
Happy birthday, and I agree; towels are evil. :-(
- October 21, 2009 at 12:33 PM
- Tara said...
Good luck finding the magic feather.
- October 21, 2009 at 7:38 PM
- Amanda said...
Adam- Thank you very much =]. And yes they are. If you click on the picture there are actually two evil towels ;]
Tara- Thanks! I'm trying!
- October 21, 2009 at 8:53 PM
- Scarlett Parrish said...
Oh dear god.
Words, words, words, blah blah blah...MCAVOY!
I love this blog.
- October 28, 2009 at 12:44 PM
Subscribe to: Post Comments (Atom)


text: Orthopedics Hand & Wrist Carpal Tunnel Syndrome Prevention of Carpal Tunnel Syndrome Print By Mark Stibich, PhD | Medically reviewed by a board-certified physician Updated March 20, 2019 Read More Carpal Tunnel Syndrome Overview Symptoms Causes Diagnosis Treatment Prevention Show Article Table of Contents Health Factors Wrist Flexion and Repetitive Strain Sleeping Posture, Arm, and Hand Positioning Avoiding Repetitive Strain in Tasks Computer Workstation Positioning and Habits Exercises and Stretches Wrist Stretch Sequence Prevent Worsening View All You can reduce your risk of carpal tunnel syndrome in several ways by preventing repetitive strain and learning to keep your wrists in a safer neutral position. However, you may be more prone to carpal tunnel syndrome due to underlying health conditions, anatomic factors, or a wrist injury. Health Factors Being overweight is a major risk factor for carpal tunnel syndrome. If your body mass index (BMI) is 30 or above, you are at greater risk. It isn't known exactly why being overweight increases the risk. You will also reduce many other health risks if you can maintain a body weight below a BMI of 30. Rheumatoid arthritis, diabetes, and hypothyroidism increase your risks of carpal tunnel syndrome. These conditions and others that result in inflammation or water retention narrow the space in the carpal tunnel. High blood sugar in diabetes damages the nerves. Getting treatment for these conditions can reduce your risk for carpal tunnel syndrome. Age is a risk factor; the occurrence is highest in people over age 40 and is rarely seen in children. As you age, it's important to take more care to protect your wrists. Wrist Flexion and Repetitive Strain Being aware of your wrist position can reduce your risk of carpal tunnel syndrome. Neutral wrist position is the most protective. This is the position when your hand is in line with your wrist. A flexed position is palm down, with the palm and fingers bent towards the inner wrist. An extended position is with the palm up. Sleeping Sleeping on your hands, especially if they are in a flexed position, increases your risk. Pay attention to your hand position during the night. If you are already experiencing numbness or tingling in your hands at night or when you awaken, buy a wrist brace to wear while sleeping. This will keep your hand in a neutral position and help prevent progression of carpal tunnel syndrome. Posture, Arm, and Hand Positioning Keep your shoulders squared rather than rolled forward when sitting, standing, or walking. A hunched posture contributes to strain down your entire arm and to your wrists and hands. Any task you are doing, including checking your cell phone, should be done with your arms comfortably away from your body—not too close, not too far. If you find yourself gripping an object such as a pen or your cell phone tightly, learn to relax your grip or modify how you hold the object. Use a larger soft-grip pen and a cell phone stand or holder. Any tools should be the correct size for your hands as tools that are too large can result in strain. Avoiding Repetitive Strain in Tasks At any task or job, pay attention to how you are using your hands, especially when you are performing the same action repetitively. Avoid tasks that require bending or twisting motions with your hand for extended periods of time. If you must perform these movements, gradually increase your time spent doing them and take frequent breaks. If possible, switch hands during your tasks. On-the-job risk for carpal tunnel syndrome is seen mostly in assembly line occupations in manufacturing, cleaning, and food processing. In addition to redesigning these tasks to reduce strain, it would be helpful if your employer rotated jobs requiring these actions so you don't spend long hours doing the same movement. Computer Workstation Positioning and Habits The good news is that studies have not found a solid link between computer keyboard or mouse use and carpal tunnel syndrome. But there are some computer and typing habits that may increase the stress on your wrists. Changing these practices can reduce the day-to-day strain: Posture and positioning: Your keyboard and chair should be at a height where your forearms are level when using the keyboard and your wrists are not flexed when you type. Keep your monitor at eye level and your back supported. Your feet should be squarely on the floor (don't sit with crossed legs for any length of time). Position your screen at arm's length away from you. Assess your workstation and make all the changes you can.Keep wrists neutral: When typing, your wrists should not be bent outward toward your pinky nor inward toward your thumb. Keep your wrists straight.Don't rest your wrists: When typing, your hands should float above the keyboard, allowing your fingers to find the right keys by moving your whole arm. If your wrists rest in one place, you have to contort your hands to strike all the keys. Wrist rests can be confusing because you really should not rest your wrists while you type. Your wrists should serve as a reminder not to rest your hands on the edge of a desk or table; keep your wrists floating in the air when you type. Don't contort: There are certain combinations of keystrokes that contort your hands and wrists. For example, try pressing control-Y with your left hand only. Anytime you need to do a key combination that involves holding down one key and pressing another, use both hands. This will seem strange at first but it will keep you from twisting into strange positions. This applies to using the shift key too.Change hand positions often: Turning your hands over (knuckles on the table) when pausing at the keyboard is a great way to give your wrists a break from being in the same position all day long. Get in the habit of turning your wrists over when thinking of the next sentence to write, talking on the phone, or reading on the computer. Exercises and Stretches Stretching and conditioning for tasks that require the use of your hands and wrists are important for preventing injury and repetitive strain. If you already have some symptoms of carpal tunnel syndrome, discuss exercises with your doctor as they may or may not be recommended. Unfortunately, research has not shown nerve gliding and tendon gliding exercises to be effective in treating the condition once you have symptoms. Gliding exercises are hand motions aimed to keep the nerves and tendons sliding smoothly through the carpal tunnel, such as the wrist stretch below. Carpal Tunnel Syndrome Doctor Discussion Guide Get our printable guide for your next doctor's appointment to help you ask the right questions. Download PDF Email the Guide Send to yourself or a loved one. Email Address Send There was an error. Please try again. This Doctor Discussion Guide has been sent to . Wrist Stretch Sequence Stretch the tendons and muscles in your wrists daily. Do so in the morning, at lunchtime, and at the end of the day. While standing, hold your arms straight out in front of you with your fingers extended, palms facing the ground.Raise both hands in the "stop" position (palms facing the wall in front of you) while keeping your arms straight. Hold this position for five seconds.Return your hands to the starting position and make a fist. Hold for five seconds.Rotate your fist down so the back of your hand is facing the wall in front of you and you can see your knuckles. Hold for five seconds.Finally, return to the starting position and relax your hands and fingers. Hold for five seconds.Repeat the series 10 times. Add about two minutes of stretching for the rest of your body to your stretching routine. Loosen up your shoulders and straighten your back. Move your head from side to side. Stretch your back. You'll feel more energized and have much less tension and pain. Grip Strengthening: Squeeze a soft rubber ball. Hold the squeeze for five seconds. Repeat 15 times. Yoga: Yoga can help strengthen and condition your upper body and improve your posture and grip strength. It has been recommended for people with symptoms of carpal tunnel syndrome. On-the-Job Conditioning: If your job requires tasks that require twisting and bending your hands, especially if you must use forceful motions or carry a load, it is best to gradually increase the time you spend in these activities. Ask your employer for conditioning exercises. Prevent Worsening If you have hand or finger tingling, numbness, or pain, take steps to prevent the condition from worsening. See your doctor if you have had these symptoms for several weeks. If they remain untreated and progress, you are at risk of muscle and nerve damage that can be irreversible. Was this page helpful? Thanks for your feedback! Dealing with joint pain can cause major disruptions to your day. Sign up and learn how to better take care of your body. Click below and just hit send! Email Address Sign Up There was an error. Please try again. Thank you, , for signing up. What are your concerns? Other Inaccurate Hard to Understand Submit Article Sources Carlson H, Colbert A, Frydl J, Arnall E, Elliot M, Carlson N. Current Options for Nonsurgical Management of Carpal Tunnel Syndrome. International Journal of Clinical Rheumatology. 2010;5(1):129-142. doi:10.2217/IJR.09.63. Carpal Tunnel Syndrome. Arthritis Research UK. http://www.csp.org.uk/sites/files/csp/secure/2_carpal_tunnel.pdf. Carpal Tunnel Syndrome Fact Sheet. National Institute of Neurological Disorders and Stroke. https://www.ninds.nih.gov/Disorders/Patient-Caregiver-Education/Fact-Sheets/Carpal-Tunnel-Syndrome-Fact-Sheet. Chammas M, Boretto J, Burmann LM, Ramos RM, dos Santos Neto FC, Silva JB. Carpal Tunnel Syndrome – Part I (Anatomy, Physiology, Etiology and Diagnosis). Revista Brasileira de Ortopedia. 2014;49(5):429-436. doi:10.1016/j.rboe.2014.08.001. Kozak A, Schedlbauer G, Wirth T, Euler U, Westermann C, Nienhaus A. Association Between Work-Related Biomechanical Risk Factors and the Occurrence of Carpal Tunnel Syndrome: An Overview of Systematic Reviews and a Meta-Analysis of Current Research. BMC Musculoskeletal Disorders. 2015;16:231. doi:10.1186/s12891-015-0685-0. Continue Reading


text:
Our mission is to provide a quality childcare experience that helps your child develop physically, socially, and emotionally.
A young child's learning takes place largely through play. Thus, a child must be provided ample opportunity to explore and discover their self. We also believe that in order for a child to learn and prepare for school there must be a structure with defined goals in mind. Therefore the Kid's Center program contains components of language art, math, science/nature, dramatic play, and sensory-motor development. We know that each child has different developmental needs and therefore we will believe that accommodations must be made to cater to each individual child.
We are excited to partake in the growth and development of your child. Thus, the Kid's Center staff is highly trained in the fields of child development and early childhood education. It is our intent to provide a happy, secure, clean and dependable environment for parents to leave their children on a regular or part-time basis. Our goal is to help your child develop into a well-adjusted individual through our daily programs and activities while they are entrusted in our care. Our daily programs will include mental and physical growth, social and emotional development, self-expression, and individual care with attention and love.
Parents should talk with their child's teacher about ongoing activities and check the bulletin boards for your child's classroom calendars. The boards will provide up to date information on what is happening at the center each month, list dates for holiday programs and open houses, and display weekly lunch and snack menus. Furthermore, parents should check their child's mailbox (located in their classroom) daily for papers to take home. Likewise, parents should visit their child's classroom regularly to see their child's art displays.
Quarterly reports will be sent home with children to inform parents of their child's progress and behavior. In addition to, teacher/parent conferences will be scheduled twice a year to discuss your child's developmental progress. However, if you have a concern about your child's progress, please feel free to talk to their teacher at anytime. Likewise, please feel free to share your skills and talents with us at anytime. We are always ready to listen to parents who are eager to get involved whenever possible.


text:
Watch My Friend Dahmer Full Movie
My Friend Dahmer online movie in quality HD for Free at 123movies.
Jeffrey Dahmer struggles with a troublesome circle of relatives existence as a tender boy. All through his teenage years he slowly transforms, edging nearer to the serial killer he turns into.
Director: Marc Meyers
Actors: Alex Wolff, Anne Heche, Cameron McKendry, Dallas Roberts, Harrison Holzer, Katie Stottlemire, Miles Robbins, Ross Lynch, Tommy Nelson, Vincent Kartheiser
Country: USA
Duration: 107
Quality: HD
Release: 2017
IMDb: 6.4
Keywords:123movies Alex Wolff Anne Heche Cameron McKendry Dallas Roberts Harrison Holzer Katie Stottlemire Miles Robbins My Friend Dahmer full movie Ross Lynch Tommy Nelson Vincent Kartheiser watch movies Free Watch My Friend Dahmer


text: I am overwhelmed by the massive crowds in the Venetian Casino in Macau China on a Wednesday early afternoon. The casinos are literally bursting at the seams. The energy and excitement is literally immobilizing. I am glad to be visiting Macau again after so many years to enjoy the growth and success of this gambling Mecca.


text: Uncategorized KettleBar #4 By primalsfsd April 29, 2018 April 29, 2018 https://media.blubrry.com/kettlebar_podcast/p/content.blubrry.com/kettlebar_podcast/kettlebar_5-group_training_final_edit.m4aPodcast: Play in new window | DownloadSubscribe: Apple Podcasts | Android | RSS KettleBar #3 That One Podcast 4/6/18 Leave a Reply Cancel reply Your email address will not be published. Required fields are marked *CommentName* Email* Website Notify me of follow-up comments by email. Notify me of new posts by email.


text:
More than half of the homeowners in the United States have done their own home improvement. Home improvement projects generally have one of the following as their goals: comfort, increased salability, energy savings, and basic maintenance and repair. There are many resources out there for the homeowner looking to engage in their own home improvement projects.
Patch holes in drywall using mesh. First spread a layer of drywall mud into the hole and around its edges. Then press the patch into the mud so that it adheres evenly to the surface of the wall. Trowel the mud carefully over the patch, allow to dry, and then sand to smooth.
Buying fancy decorative pillows can be expensive and occasionally they may not all match. A great way to get around this problem is by buying some fabric and sewing your own pillow cases or pillow coverings. If you choose to make your own pillows, sew the outside of the case and then use stuffing from your old and unwanted pillows to fill the new ones.
It's easy to organize items in your garage using clear plastic totes. Just sort your items by type for quick and easy retrieval. Label these boxes for a professional look. The project is inexpensive and keeps pests out of your belongings.
Keep your toilet bowl clean by pouring bleach inside it. Bleaching the toilet bowl not only keeps it clean but also kills germs and bacteria. If you use scented bleach, it will reduce the objectionable odor.
Insulate your home for your next project. Place weather-stripping on all your doors and windows. Since you will stop a lot of air from coming in, your cooling and heating systems will work better. You will also end up saving quite a bit of money on your next energy bill.
If you are looking to install skylights or already have them in your home, it can be a costly item during summertime. In the summer months, the sun is shining overhead emitting lots of heat. The heat will require you to run your air conditioner at a higher level. However, in recent years, there has been high quality glazes developed that aid your windows in blocking out excessive heat and keeping it in during winter months. Talk to your local window dealer about the benefits of purchasing glazed windows.
When you can, use materials that are natural for your home improvement projects. Real building materials like stone, wood and ceramic are in virtually every case superior to their synthetic equivalents. They are more appealing to they eye, and also last longer. Even if natural materials are expensive, in the end they will be cheaper since synthetics will need replacing a lot more.
When looking for someone to help you with home improvements, do your research. This is important because you do not want an inexperienced or unskilled person working on your home. Ask around for a good worker from family and friends or go online and look for reviews on home contractors in your area.
If a slamming screen door has your nerves rattled, apply a pearl-sized dab of silicone caulking on the areas of the doorjamb where the door usually hits the hardest. After allowing the silicone to dry for about three or four hours, you will immediately notice a difference in the way the door shuts.
By redoing your driveway with a new method of surfacing or simply redoing the existing surfacing is a great home improvement job that will make your house look better. Not only will you be able to admire your house, but everyone in the neighborhood will as well.
Assess the condition of the paint on the exterior of your home. Old paint that is peeling can make a house look run down, driving down its value. In this case, it would be worth the investment to repaint. New exterior paint can give an old house new life and add value to the house so that you can justify a higher offer from the buyer.
If you are a pet owner make sure that there are no lingering pet hairs or pet odors in the home when you are giving a showing. This is especially true for people that have carpets because the buyers will worry about whether these issues will cause them to have to replace them.
Most apartments come with pre installed blinds or curtains. If you don't like these, check with the management to see if you are allowed to change them or not. Lots of management companies want to promote a uniform look and they don't allow you to change anything that alters the outside image of the building.
As the article states, there are many resources out there to assist with home improvement projects. A conscientious homeowner will do much research before beginning any type of home improvement project to insure that they have the correct materials and tools on hand to complete the project and ensure a successful improvement.


text:
20 October, 2017
Biogen rose $8.799, or 2.6 percent, to $344.47, while Anthem rose $3.50, or 1.9 percent, to $187.26.
The S&P 500 index rose 1.72 points, or 0.1 percent, to 2,559.36.
Over the past three months, the Dow has risen 13pc, with a slew of upbeat earnings driving it ever higher.
"You saw decent numbers from the banks but quirks here and there". Packaged food and beverage companies were also big laggards.
The Dow Jones Industrial Average has been on a bullish tear (climbing above 23,000) since early September (when it was below 22,000), and it doesn't show any signs of slowing down.
TalkSPORT 2 Champions League commentary on October 17, 2017
Maribor and Liverpool will play the reverse fixture on November 1, the next game of the group stage, at Anfield. Liverpool will hold a training session at Maribor's Stadion Ljudski vrt on Monday evening.
Ben Roethlisberger throws five interceptions in loss to the Jaguars
Yes, that happened Sunday - and because it did the Jaguars turned in their biggest, most memorable Sunday in a very long time . Lee is the Jaguars' second-leading receiver (13 catches for 159 yards) behind Allen Hurns (16 catches, 186 yards, two TDs).
Google Assistant Released on Play Store, But There's Nothing to Rejoice
The Assistant was first exclusive to Pixel devices but it, later on, was made available for other Android Nougat devices as well. You can still access your Assistant by pressing and holding down your home button or by simply saying, " Ok Google ".
Slight gains nudged the Dow and Standard & Poor's 500 indexes to new highs for the second-straight day this week.
Investors will keep a close eye on the Senate, which is trying this week to pass a partisan budget blueprint that would help guide federal spending. With only 30 component stocks, the Dow does its best to track the market at large - and it typically does a pretty good job - but because it doesn't cover 500 stocks like the S&P 500 does, it leaves itself open to a few stocks exerting an outsized influence on the index.
Declining issues outnumbered advancing ones on the NYSE by a 1.02-to-1 ratio; on Nasdaq, a 1.10-to-1 ratio favored decliners.
Benchmark U.S. crude gained a penny to settle at $51.88 a barrel on the New York Mercantile Exchange. That compares with the 5.9 billion daily average for the past 20 trading days, according to Thomson Reuters data.


text:
By Bert Bartlett
In 1973, former Saints head coach John North, who just passed away at 89 in his retirement home in Mandeville, basically inherited a mess. The Saints had not yet steered away from their early legacy of not properly building a team through the college player draft, instead mortgaging their future by banking on veterans whose names and reputations overshadowed their production. In that year's season opener, the Saints were drubbed by rival Atlanta, 62-7.
As time went on, it became apparent North was an improvement over his predecessor, former Avondale Shipyards foreman and minor league coach, J.D. Roberts, whose only notable accomplishment with the team was being skipper when kicker Tom Dempsey set a league record with a 63 yard, game ending, field goal in 1970. Ironically, North was then an assistant with opponent Detroit for that game, when that unlikely duck of a football flight barely cleared the crossbar. He was seen in a picture, standing on the visiting sideline, as if thinking, no way that clown is gonna' make this kick. Let's get this over with and get outta' here……
The next year, North joined Roberts' staff as a Saints assistant before eventually being promoted. If you can't beat 'em, join 'em.
North's apex as head coach with the team may have been later in '73, when the Saints held star O.J. Simpson to a meager 73 yards while The Juice was having a record breaking season, in a 13-0 upset of the Bills in Tulane Stadium. His first two squads finished only 5-9, but at the time it tied for the best in franchise history. How times have changed. North was let go midway through the '75 season.
Sean Tennison, who works in my office, shared some memories of his grandfather, of whom he was quite fond.
After leaving the Saints, North spent several years as an assistant with the Falcons, and one with the New Orleans Breakers of the USFL. From his Saints days, he was well known and liked by Superdome personnel upon his return. He became a real estate agent on the Northshore after football. As long as he was able, he stayed fit. He golfed, and he would often see Dale Stram, son of former Kansas City and New Orleans coach Hank Stram, who also settled here, at the gym. North lost his wife several years ago.
After his freshman year at Vanderbilt, where folklore has it he was fast enough to punt the ball and then run down the field to catch it before it hit the ground, North became a Marine in World War II, rising to Sergeant. He was shot in the leg on the Island of Tinian and was awarded a Purple Heart.
North did not discuss his experience as a veteran with much detail, though he kept his Purple Heart open, and prominently displayed in his home. The more people I have talked to about it, apparently veterans of the Second World War are predominantly a discrete fraternity. My father served along supply and railroad lines in Italy, and most all he remarked to me about it was, after a shake of the head, "war is a terrible thing". A friend of mine in downtown Covington just relayed that as an adult he had to wine and dine his dad at Antoine's to finally get some of the gist. Veterans have certainly earned the right to remain silent.


text:
To celebrate Celine's hattrick we throw her a little surprise party this afternoon. I think we were about 40 people in our little tack room 😀
It was so nice to see that this many came to celebrate Celine and it was great fun seeing some of the old girls!! Thank you for the amazing looking cake Lene (I was gooooood today and didn't touched the cake)!


text:
by Paris T.1 and Sevilla C. 2
1International Rice Research Institute (IRRI); 2University of the Philippines at Los Banos (UPLB)
in Global Agenda for livestock research. Proceedings of the Consultation for the South-East Asia Region held at IRRI Los Banos, Philippines on 10-13 May 1995. Edited by C. Davendra and P. Gardener. 107-116.
Experiments conducted on-station and on-farm for the alleviation of various constraints to animal production – such as acute shortage of animal fodder – indicated that most of these technologies were technically feasible, but that farmer adoption was relatively low due to socio-economic reasons. Some of the major socio-economic reasons were (a) declining trends in draft animal usage particularly because of mechanisation; (b) higher off-farm wage rates and opportunity costs of family labour; (c) unfavorable government agricultural policies for smallholder livestock development; (d) unavailability of required inputs and support services; (e) risk aversion; (f) inadequate training and extension for knowledge-intensive technology and lack of credit to the poor without collateral. Socio-economic research priorities in crop-animal research are (a) to review the past research conducted by NARS and identify priorities for further research; (b) farmer participatory research on dissemination of proven technologies in similar agro-climactic and socio-economic environments to increase research utilisation; (c) examination of the effects of macro-economic policies in relatin to adoption of improved livestock as well as the changing trends from subsistence to commercialisation; (d) study of farmers' practices, knowledge, attitudes, perception and decision-making processes and the incorporation of women's concerns in technology design, testing, and evaluation of technologies; (e) more emphasis on ex-ante analysis of technologies; (f) systems simulation and modelling of crop-animal systems and, (g) evaluation of the impact of crop-animal integrated technologies.
Read and download the book here.


text:
Give to Grow relies on support from foundations, business and individuals like you.
There are many ways to help. Please consider:
Donating funds in ANY amount
· $1 – buys an hour of Internet access in a village walking distance from Kopeyia. It means a chance for talented students to post their work online and have their music heard by others
· $50 - pays for sound system rentals for a closing performance at the end of Give to Grow's residency
· $100 – pays for an MTN wires Internet modem
· $500– pays for room and board for a week ofGive to Grow in Kopeyia
· $2000 - pays for room and board for a month of Give to Grow's stay in Kopeyia
· $2000– pays for Milica's airfare
· $6000 - pays for room and board for a full term of Give to Grow 's stay in Kopeyia
· $20.000 – pays for the entire residency for phase 3
Donating your functional, used (or new) equipment
· We need Apple laptop computers, microphones, audio interfaces, digital audio recorders, headphones, IPods and audio cables
Donating space
· Host the next Give to Grow benefit
Donating time and skills
·Help us with grant writing, spreading the word, expand the Give to Grow community, send out brochures, share marketing ideas
To make a tax- deductible donation write your checks to PARACADEMIA CENTER INC and write Give to Grow in the Memo Line and mail them to:
Milica Paranosic
281 West 119th Street #5A
New York NY 10026 USA
or use THIS link
You can also help us by purchasing:
- original art by Kopeyia students.
- Mensah fashions. Contact us for the catalogue.
- Give to Grow CD. buy here
- Artistic merchandise by Claduia Van Holt inspired by Give to Grow. Contact us for the catalogue.
Authentic Ewe Drums by Kobbi Klutse Contact us for the catalogue.
We give used computers you don't need new lives by putting them in hands of young music-makers who do!
Have you opened a new location, redesigned your shop, or added a new product or service? Don't keep it to yourself, let folks know.
We need to go back to Kopeya to help maintain the computers.
We'd also welcome an oportunity to recreate a similar program in YOUR area.
Contact us to discuss!


text:
Infosecurity Europe is the region's number one information security event featuring Europe's largest and most comprehensive conference programme and over 400 exhibitors showcasing the most relevant information security solutions and products to 19,500+ information security professionals.When: 05 - 07 June 2018
Where: Olympia LondonJoin Europe's largest information security community and be part of the future of the industry. In just three days, you can take advantage of a range of benefits:
- Choose from 240+ free to attend conference sessions led by industry influencers
- Meet both established vendors and new players all under one roof in three days of face-to-face business
- Network with your peers and discuss the issues that keep you awake at night
- Collect CPE/CPD points by attending the conference sessions.
More than ever, conferences are the way forward for security professionals to collaborate and share threat information tools for the infosecurity defender. By learning from and debating with one another, you have the greatest chance of protecting yourself and other users against the threats of tomorrow.The industry's leaders are attending. Are you?