Fork me on GitHub
#hoplon
<
2016-04-13
>
leontalbot01:04:57

Hello! I'd like to gid rid of this warning

Implicit target dir is deprecated, please use the target task instead.
Set BOOT_EMIT_TARGET=no to disable implicit target dir.
by creating a target task. I've tried to add (target :dir #{"target"})in my dev task but I still see the warning running boot dev. Anyone? Thanks!!

leontalbot01:04:37

oh, I dont't know the dependency...

flyboarder01:04:46

@leontalbot: you will still see that warning, you need to change your boot properties

flyboarder01:04:26

for example….

leontalbot01:04:35

thanks! I thought we had the choice between please use the target task instead.and Set BOOT_EMIT_TARGET=no to disable implicit target dir.

leontalbot01:04:57

@alandipert @flyboarder Could we think of adding BOOT_EMIT_TARGET=no by default in the official lein boot template?

flyboarder01:04:29

im sure a PR would be ok simple_smile

leontalbot01:04:51

oh I might see a problem. I don't see boot.properties in the source. It seems to be added dynamically or smth...

leontalbot01:04:33

oh no ok, it's there

flyboarder01:04:34

it only exists as an optional settings file

flyboarder01:04:57

so it isnt required necessarily

leontalbot02:04:18

let's see 😉

leontalbot02:04:17

@jumblerg: I would be up for using hoplon/uifor a new project. Do you plan deploying to clojar anytime soon?

leontalbot02:04:24

I'd like to "port" a bootstrap template I bought to hoplon/ui and see how it goes.

flyboarder02:04:31

@jumblerg: i would also be interested in hoplon/ui

dm306:04:40

would be cool if we got a new alpha (or dare I say it - beta!) release simple_smile

jumblerg11:04:39

@leontalbot, @flyboarder: it would be great if you gave it a try! i’m using it for a project right now that i’m trying to pull together by monday so the amount of support i’m able to provide over the next few days may be limited. on the other hand, while i continue to uncover occasional cases i didn’t account for, this is the fastest i’ve ever built a client side application. i’m pleasantly surprised by how well the three-div box wrapper seems to be working for layouts.

jumblerg11:04:58

if you checkout and build-jar, then clone hoplon/ui and boot build or boot hoplon -m build-jar, you should be able to start using it.

jumblerg11:04:24

the biggest deficiencies right now are (1) the responsive layout logic leaks due to the fact i haven’t written the logic to detach the handlers, (2) responsive layouts initialize to the largest screen size, (3) the box model hasn’t been applied to the body element within the window element itself, so there has to be another elem within it to use certain attributes and (4) the component libraries themselves need to be built out.

jumblerg11:04:03

wrt #4, my next steps are to properly implement checkboxes and dropdowns

jumblerg11:04:10

help building out the individual component elements would also be much appreciated; i think the process is relatively straightforward at this point by emulating existing elements such as button or image.

thedavidmeister11:04:18

hey, can i give a little feedback about Set BOOT_EMIT_TARGET=no to disable implicit target dir.?

thedavidmeister11:04:33

it doesn’t say where I set this in the warning 😉

micha11:04:42

@thedavidmeister: that env var should be set by default

micha11:04:50

in the template

thedavidmeister11:04:55

yeah, i figured it out

thedavidmeister11:04:06

but at first I was like “where do I set that?"

micha11:04:34

i can make that message better in the next boot release which will happen soon

micha11:04:00

i'll make a new hoplon release this morning when i get to work

micha11:04:28

my internet is too flaky at home

micha11:04:43

makes corrupted deploys sometimes

thedavidmeister11:04:34

i’m still going to try and make a test for that weird bug with the inputs value

thedavidmeister11:04:45

just want to wrap up this PR first

thedavidmeister12:04:05

@alandipert: well it did work on version 39 of ff, but version 45 broke for me 😞

thedavidmeister12:04:22

@alandipert: i just pushed a newer version of selenium to the boot file

alandipert13:04:25

@thedavidmeister: worked great and this is an awesome PR, thank you! i squashed and edited the commit msg a little, let me know if you object to it

alandipert13:04:47

i dub you: hero of hoplon

thedavidmeister13:04:01

i’m definitely just picking some low hanging fruit 😛

dm313:04:39

then I'm just rolling around under the tree

thedavidmeister14:04:13

hah, you’ve taught me plenty of cool things

thedavidmeister14:04:07

@micha: is the thing we’re trying to avoid by not deleting and re-adding tags called “DOM churn”?

dm314:04:38

Hoplon+Javelin is definitely the coolest thing in webdev world no one knows about simple_smile

thedavidmeister14:04:36

i’m working on sneaking it into work

thedavidmeister14:04:49

making some team KPI reports in boot

thedavidmeister14:04:00

then one day i’ll just magically make a dashboard 😉

dm314:04:55

what are you using across the board?

thedavidmeister14:04:08

ah we have a big Drupal CMS as our base system

thedavidmeister14:04:14

it’s getting on 5+ years now

thedavidmeister14:04:45

we got some custom Scala and Ruby stuff doing other stuff that plugs into it

thedavidmeister14:04:59

and does various project management automation stuff

thedavidmeister14:04:42

getting to the point where any large-ish new projects will probably be their “own thing"

thedavidmeister14:04:59

and we’ll probably start splitting things out from the main system if they become maintenance issues

thedavidmeister14:04:31

hoplon’s defelem is like the one bit I do like about Drupal, but modernised, and without all the complexity/baggage that comes with CMS systems simple_smile

dm314:04:37

does it have something to do cell-like things?

thedavidmeister14:04:33

nah, not that at all

thedavidmeister14:04:45

more the way that defelem works, like nested templating

thedavidmeister14:04:07

with attributes and children as data, etc.

thedavidmeister14:04:54

i kind of see the cell stuff and the defelem stuff as really useful together, but not necessarily part of the same thing

thedavidmeister14:04:14

i drew up a diagram of FRP based on my understanding, for the guys at work, and they were at different bits

dm314:04:36

if they're thinking of using React + Redux

dm314:04:44

then they'll be using a butchered version of Javelin

thedavidmeister14:04:54

nah, my understanding is that’s only one bit

thedavidmeister14:04:01

i’m going to see if i have a photo on my phone

thedavidmeister14:04:36

so, the context is that we were comparing hoplon stack to similar libraries in Scala

thedavidmeister14:04:46

and i was trying to think of all the “bits” you need

thedavidmeister14:04:56

so we could evaluate how well each solution does each bit

thedavidmeister14:04:20

and where dealbreakers and good things might be at each spot

dm314:04:26

I think having backend is a bit excessive here

dm314:04:40

as Hoplon works with any backend

thedavidmeister14:04:51

this isn’t a diagram of hoplon

thedavidmeister14:04:28

so, we have little docket printers that print out orders for our eCommerce stuff in restaurants

thedavidmeister14:04:39

we’re looking at building an app so we can embed some touch screens

thedavidmeister14:04:46

to talk to the existing scala stuff under the hood

thedavidmeister14:04:04

it’s also a scrappy diagram

dm314:04:23

ok, I see

thedavidmeister14:04:04

but basically, we ended up with things you would want:

thedavidmeister14:04:00

- data store = cells in hoplon, but could be anything that can be used by formulas

thedavidmeister14:04:47

- formulas = calculate stuff from data store (this bit rules out any raw JS solution for be because of type shenanigans)

thedavidmeister14:04:13

- DOM sync = a way to deterministically build a DOM based on formulas, obviously defelem in hoplon

thedavidmeister14:04:42

- events = a way to authorise changes

thedavidmeister14:04:05

and it all has to be values, because objects that mutate and have internal state aren’t friendly to formulas

thedavidmeister14:04:39

and the “backend” could just be persisting something to localStorage, it’s basically anything that falls outside this chart that you might push/pull to in order to get values from “over there"

thedavidmeister14:04:39

i would think all of this is pretty obvious to someone who has used Hoplon

thedavidmeister14:04:57

but say… I’m trying to talk to someone who hasn’t used it, and is asking about things like https://github.com/lihaoyi/scala.rx

thedavidmeister14:04:15

i found it useful to outline what we’re actually looking for, and what we’re not looking for too

alandipert14:04:16

one exercise you can do is implement event streams atop behaviors

alandipert14:04:20

to show that formulas are the One Thing

alandipert14:04:57

if you have a primitive that does value-based propagation, then you can turn it into an event system by introducing unique values

alandipert14:04:08

e.g. a formula with a counter in it is an "event stream"

alandipert14:04:37

this is in original FRP literature but i think mostly lost on the drones who implement Rx everywhere

alandipert14:04:08

i think maybe because what Rx people really want are queues since they want to coordinate IO, not values

alandipert14:04:48

i dunno, just my perspective on what i see people doing with Rx ideas. couldn't be sure if that way of looking at it is useful to your team/usecase

thedavidmeister14:04:03

we’re not necessarily

thedavidmeister14:04:09

honestly, we’re just exploring lots of options

thedavidmeister14:04:26

I have someone say “why Hoplon, why not react? or this FRP Scala thing? or angular?"

thedavidmeister14:04:57

and these guys all have experience that is highly focussed on REST APIs and big, complex CMS systems

alandipert14:04:10

the place where micha and i work, and where micha invented most of hoplon settled on angular after we left and it worked out really well for them

thedavidmeister14:04:16

well, where we work, and also when i talk to other people i know in the industry locally

thedavidmeister14:04:44

it’s like, the model itself is novel to many people

thedavidmeister14:04:57

so, assessing what framework to use to achieve the model without figuring out what the model is, exactly, is kind of putting the cart before the horse

thedavidmeister14:04:12

if it works out well for you without doing that base research, it’s kind of co-incidental, no?

micha14:04:47

managing large projects requires mostly experience and artistic discretion i think

dm314:04:59

hehe, in my experience people choose whatever the most blogged about framework is at that point in time simple_smile

micha14:04:03

the actual technology won't magically help there really

micha14:04:17

like technology helps with hello world

flyboarder14:04:21

I tend to prototype for a couple weeks before deciding on anything

thedavidmeister14:04:31

but i don’t really want to manage large projects… i want to have small-medium projects that work well together

thedavidmeister14:04:54

because large projects end up being so big you can kind of do whatever and sheer effort will achieve pretty much anything

micha14:04:05

i kind of think that that's where the framework layer will help the most maybe

micha14:04:20

small to medium sized projects

micha14:04:47

it's easier to refactor and things when the scope isn't huge

thedavidmeister14:04:00

it’s also easier to make decisions that actually make a difference

micha14:04:19

yeah so having a framework that helps you there goes a long way i think

micha14:04:49

but with large projects you really need to have a clear vision that goes beyond anything a framework can provide

thedavidmeister14:04:13

i’ve found people to be very resourceful at wasting huge amounts of time to re-implement parts of frameworks in buggy ways, to avoid doing a much smaller amount of work to simply understand the framework better 😛

thedavidmeister14:04:41

the framework just gets undermined on so many levels at some point that it just becomes more of a guide than anything else >.<

micha14:04:17

we've tried to make hoplon as well factored as possible

thedavidmeister14:04:30

actually, there’s this guy at work we’re letting go tomorrow

thedavidmeister14:04:39

it’s mind boggling how good he is at making things complicated

thedavidmeister14:04:45

and then being smug about it

micha14:04:55

that's a shame yeah

micha14:04:31

we really tried hard to make hoplon as lisp-can-do-it as possible, providing orthogonal pieces that can be understood in isolation

micha14:04:41

and you can combine them in the ways that make sense to you

thedavidmeister14:04:51

hey, this problem that i’m talking about is part of the reason i’m here simple_smile

micha14:04:29

with the browser there are many unfortunate aspects of the platform that interfere with good factoring of code

micha14:04:53

so that's probably the most difficult part of understanding the big picture

thedavidmeister14:04:15

ah look, i know what you mean

micha14:04:34

like parts that are separate concerns in most ways have some weird edge case coupling that comes from some weird thing in the platform

thedavidmeister14:04:43

but at least i can choose to associate myself with people who see that there is a problem

micha14:04:11

like for example the fact that js doesn't have weak references

l1sp3r14:04:23

+1 for weak references

micha14:04:34

a lot of js developers don't even recognize that weak reference != weakmap

micha14:04:52

but the consequences are subtle and affect everything

l1sp3r14:04:04

do many browsers support weak maps now?

micha14:04:12

yeah all of them do

micha14:04:26

you can just add a property to the object

micha14:04:36

so when the object is GC the property is too

thedavidmeister14:04:40

yeah i think i saw you complaining about that somewhere a few weeks back

l1sp3r14:04:06

is there anything like a finialize method?

thedavidmeister14:04:25

do you guys want more people using Hoplon on projects?

micha14:04:29

never, they intentionally forbid anything like that

thedavidmeister14:04:30

is that a goal of the project?

micha14:04:56

it's great having a community of developers using it, we all benefit

alandipert14:04:19

> “And anyway, the subject line presupposes that Lisp has not caught on. This is like saying that astrophysics or calculus or brain surgery has not caught on because in relative numbers, there might be more people doing other things. The success of Lisp is not measured in the number of people using it, it’s measured in the utility to those people who do use it. Turning it into C (or C++ or C#) to make it more popular would not be success. In the world’s menu of computer language options, we don’t need them all to be Taco Bell.”

alandipert14:04:52

not a huge kent pitman fan, but i appreciate this quote

micha14:04:42

like i think hoplon is mostly potential energy

l1sp3r14:04:44

less is often more, i was talking to a scala dev the other day, his point was that there werent so many libs for Clojure as scala

dm314:04:54

btw @alandipert, https://github.com/lihaoyi/scala.rx solved the nested cell (Rx) leaking using contexts. They have an implicit ctx running where the cells register themselves. Then a cell keeps a list of owned cells and kills them when recalculated. Although I think this means you can't get the nested cells out of the containing one.

micha14:04:56

i'd love to see more things like jumblerg's ui library

l1sp3r14:04:10

i asked him, would he rather 20+ mediocre libs or 1 good one

alandipert14:04:15

@dm3: we've talked about a reference counting scheme like that for javelin

alandipert14:04:39

@dm3: but decided ultimately it would introduce constraints that would make the model more complex in the general case

alandipert14:04:59

@dm3: vs like it is now, potentially complex in particular and rare-ish cases where cell leakage is a concern

l1sp3r14:04:19

where is jumblerg's ui library ?

micha14:04:54

maybe some explicit context thing, like cell domains could be good, give you a function you can call to do GC manually on cells created within the dynamic context

micha14:04:32

like only when you explicitly set a context

thedavidmeister14:04:09

yeah ok, so popularity is not really a goal at all then 😛

alandipert14:04:17

the goal is excellence

thedavidmeister14:04:23

although, if it was incidental, nobody would say that’s a bad thing either

alandipert14:04:39

the more people appreciate excellence, the better 😄

micha14:04:59

for me hoplon is a low level platform that lets you use lisp to solve the ui problem

micha15:04:14

the real work is built on top of it

micha15:04:39

like the main goal of hoplon was to facilitate powerful components

micha15:04:59

to achieve that you need a platform that does a really good job of separting concerns and not breaking how lisp works

micha15:04:14

the you can lisp your way to glory

micha15:04:26

the main goal is to support things like jumblerg's work

l1sp3r15:04:50

so design question… i’m thinking of building UI components which render server-side state. When the component is no longer visible in the client (scrolled out of view say) I want to release the server handle, any tricks hooks I could use in Hoplon?

thedavidmeister15:04:31

just cells with the window range?

micha15:04:10

yep you can attach :scroll event handler to the element maybe and check if it's in view

thedavidmeister15:04:29

i actually did this recently

thedavidmeister15:04:41

then deleted the whole thing because i solved my problem a different way

micha15:04:54

you can make a custom do! attribute to package this bahavior up into a nice api

micha15:04:05

or on! i mean

l1sp3r15:04:19

interesting

micha15:04:05

(div :visible #(if % (enter-view ...) (leave-view ...)) ...)

micha15:04:43

a macro with dynamic vars could be a nice way to do this also if you might have different handlers that run in nested components

micha15:04:06

you could have like

thedavidmeister15:04:09

one thing though

thedavidmeister15:04:14

do be careful of momentum scroll

l1sp3r15:04:45

so i’d trap scroll events, and work out component extends to work out visibility

l1sp3r15:04:51

and trigger updates on that

l1sp3r15:04:01

component extents

micha15:04:03

(with-visibility
   (div
     (some-component ...)
     (div
       (some-other-component ...))))

micha15:04:29

the with-visibility macro could bind a cell to a dynamic var

micha15:04:46

and the components could use the dynamic var to set a default attribute

micha15:04:08

that basically establishes a visibility context

micha15:04:22

and various components could be aware of this context if it exists

micha15:04:09

like if some-component and some-other-component have the logic internally for what they do when they enter and leave the visible portion of the page

l1sp3r15:04:32

so for instance if i’ve got a set of tickers updating

l1sp3r15:04:50

only worth the server sending updates to tickers which are visible

l1sp3r15:04:14

using this i could tell the server which tickers to send updates for

l1sp3r15:04:22

as the user scrolls around

l1sp3r15:04:43

(if you needed a use case) simple_smile

micha15:04:52

the :scroll-to do! method might be interesting to you

micha15:04:08

you kind of want the opposite, for an event handler

micha15:04:21

but you may be able to get some inspiration from that

micha15:04:03

that's used like this

micha15:04:13

(div :scroll-to some-cell ...)

thedavidmeister15:04:30

really i’d put the viewport top and bottom in a cell on scroll

micha15:04:38

whenever some-cell changes to be truthy the page scrolls such that the element with :scroll-to is at the top

micha15:04:16

yeah that's how i'd do it too, i think

thedavidmeister15:04:55

then you can have a cell for the top and bottom of the element

thedavidmeister15:04:03

and “is in viewport” just becomes a cell=

thedavidmeister15:04:59

(cell= (if (and (< viewport-top element-top) (< element-bottom viewport-bottom)) true))

thedavidmeister15:04:36

that would mean as soon as any part of the element leaves view, it’s “out of view"

thedavidmeister15:04:50

you could juggle the bits to make it so the whole element has to be out of view first

thedavidmeister15:04:33

but this stuff can be tricky

thedavidmeister15:04:43

like, what if the layout changes

thedavidmeister15:04:56

how do you know when element-top changes?

thedavidmeister15:04:17

unless you measure it on every scroll event

thedavidmeister15:04:28

but then what if it’s just due to a resize?

thedavidmeister15:04:40

what if your in-view ticker that received an update suddenly goes from spanning 5 lines to 3 lines and then the previously just-out-of-sight ticker is now visible?

micha15:04:08

the good part is that you only need to solve these problems in one place

micha15:04:20

then other things can just make formulas on that cell

thedavidmeister15:04:00

i obviously don’t know what you’re working on, but i’m going to say it might be easier to get the server to send data for all tickers when it pushes than deal with scrolling behaviour directly

thedavidmeister15:04:05

ooor, you could just have a looping timeout that keeps re-measuring your DOM positions every second

thedavidmeister15:04:47

aight, i’m off

micha15:04:13

later dude!

l1sp3r15:04:46

thanks for advice / pointers simple_smile

jouerose17:04:48

hello all. i am having a problem using boot. i did "lein new hoplon project-name" "cd project-name" and when i do "boot dev" i get Exception in thread "main" java.io.FileNotFoundException: https://github.com/boot-clj/boot/releases/download//boot.jar . any help please ? i think it used to work a few days ago.

roti17:04:06

@jouerose: hmm, it worked for me. could you post your build.boot file?

jouerose17:04:57

(set-env! :dependencies '[[adzerk/boot-cljs ""] [adzerk/boot-reload ""] [hoplon/boot-hoplon "0.1.13"] [hoplon/hoplon "6.0.0-alpha13"] [org.clojure/clojure "1.7.0"] [org.clojure/clojurescript ""] [tailrecursion/boot-jetty "0.1.3"]] :source-paths #{"src"} :asset-paths #{"assets"}) (require '[adzerk.boot-cljs :refer [cljs]] '[adzerk.boot-reload :refer [reload]] '[hoplon.boot-hoplon :refer [hoplon prerender]] '[tailrecursion.boot-jetty :refer [serve]]) (deftask dev "Build frontend for local development." [] (comp (watch) (speak) (hoplon) (reload) (cljs) (serve :port 8000))) (deftask prod "Build frontend for production deployment." [] (comp (hoplon) (cljs :optimizations :advanced) (prerender)))

dm317:04:38

can you run boot -v?

dm317:04:14

or rather boot --version

jouerose17:04:05

BOOT_CLOJURE_NAME=org.clojure/clojure BOOT_CLOJURE_VERSION=1.7.0 BOOT_VERSION=2.5.5 pc5:clojure Joues

roti17:04:13

then again, why not use boot to create the project instead of leiningen, if you are going to use it anyway?

jouerose17:04:22

i just did "lein new hoplon project" and "boot dev" in it and it worked

jouerose18:04:12

indeed @roti i am going to try this

roti18:04:16

I noticed some differences in your boot file, with the one leiningen generated for me: there are no version numbers for adzerk/boot-cljs adzerk/boot-reload org.clojure/clojurescript

roti18:04:45

mine looks like this:

:dependencies '[[adzerk/boot-cljs          "1.7.228-1"]
                  [adzerk/boot-reload        "0.4.7"]
                  [hoplon/boot-hoplon        "0.1.13"]
                  [hoplon/hoplon             "6.0.0-alpha13"]
                  [org.clojure/clojure       "1.7.0"]
                  [org.clojure/clojurescript "1.8.40"]
                  [tailrecursion/boot-jetty  "0.1.3"]]

roti18:04:11

I don't know if this is the cause though

jouerose18:04:53

could have been. i just recreated a new project with lein and it went fine

jouerose18:04:53

the version numbers are in too.

jouerose18:04:07

which indeed wasnt the case.

micha18:04:27

yes empty strings for version numbers will cause maven to crash

micha18:04:54

it resolves the latest versions, maybe you had a network hiccup or something

micha18:04:59

when you pulled the template

jouerose18:04:09

@micha i did have a network hiccup all day

micha18:04:21

that's one of the things the template will do, is find the latest versions to put in the build.boot it generates

micha18:04:42

so if that fails it could end up putting in empty strings

roti18:04:18

:fade-toggle doesn't work with cells, does it?

micha18:04:43

@roti: sure, it should

micha18:04:57

(div :fade-toggle some-cell ...)

micha18:04:17

any attribute should work with cells

roti18:04:40

it works, but not all the time simple_smile

roti18:04:26

there are two problems, one is that the visibility is not correct the first time. so my cell is "false" but the div is visible. then I swap the cell, and the div remains visible but with some fading effect, then I swap again and not is fades to invisibility, as expected

roti18:04:31

and from now on it's ok

roti18:04:50

so the first rendering does not seem right

roti18:04:13

second problem is my own I guess, it works in the simple case, but not in a complex case, and I can't see why 😡

micha19:04:42

well the first thing is solved by using :style "display:none" on the element

micha19:04:02

that will set the initial state to be hidden

roti19:04:03

I just figured out the second one, it's the same as the issue I just raised: when the cell state change comes within the dom subtree, it doesn't work

roti19:04:37

question: why isn't the initial state taken from the cell value?

roti19:04:49

is this intended behaviour?

micha19:04:49

how could that be done?

micha19:04:03

it would be complcated

micha19:04:13

like how would you do it?

roti19:04:16

I don't know, just asking.....

micha19:04:41

the jquery animations don't work until the element is in the dom

roti19:04:36

for my use case it would make sense to consider the initial state hidden, but it may not be everyone's case

roti19:04:18

ok, but the concept "in the dom" is not quite visible in hlisp

roti19:04:05

anyway, I just wanted to know whether it's intended behaviour or not

roti19:04:57

I'm still discovering hoplon, so I can't issue any such oppinions

micha19:04:56

it's not ideal, but it is at least simple

micha19:04:05

not using the jQuery animations, or maybe wrapping them with some smarter logic, would fix this

micha19:04:34

what i mean by "in the dom" is like this:

micha19:04:44

(div (span "foo"))

micha19:04:05

the way lisp works is that when you apply a function to some arguments the arguments are evaluated first

micha19:04:13

then the function is applied to them

micha19:04:29

this means that the span is created before the div that will be its parent is created

micha19:04:51

when the div is applied as a function to the span the span is added as a child of the div

micha19:04:11

but the div itself isn't the child of anything until it is applied as an argument to some other element

roti19:04:54

yes, it makes sense

roti19:04:23

is there any easy way to use the master branch, without copying it to my project?

micha19:04:52

we could set the "displat:none" automatically, but then that would clobber your own settings, like if you had "display:table-cell" or something on that element

micha19:04:24

the jQuery method preserves whatever display css property you set and restores it

micha19:04:40

sure you can just clone the hoplon repo

micha19:04:46

and do boot build-jar

micha19:04:51

that will install it locally

micha19:04:56

in your local maven repo

roti19:04:56

but then I would need to tell boot to take the latest hoplon version, not 6.0.0-alpha13

micha19:04:30

that is the latest version, so you're good

micha19:04:47

you can modify the hoplon build.boot if you want to change the version number or something

roti19:04:59

ok, got it

roti19:04:22

I agree with what you say about display:none

roti19:04:29

god I hate html. I had a similar problem recently: had a div with some unusual css display property, then fading in and out ruined it

micha19:04:21

yeah there must be a better way to do that

jouerose21:04:37

hi. how does multiline comment work in hoplon ?

micha21:04:33

@jouerose: how do you mean?

jouerose23:04:03

@micha sorry late reply. i mean this form "(comment "something") which comments out something. Does it work in hoplon?

micha23:04:49

oh sure, hoplon is just cljs

micha23:04:14

so any thing that works in cljs will work in hoplon

micha23:04:19

there is also $comment to make a html comment

jouerose23:04:31

ah may be this is the one i need

micha23:04:39

also you can do (<!-- "this is a html comment" -->) if you want

jouerose23:04:09

@micha is this valid hlisp ? (p "the ship has departed " (b "from the port ") ", sailing the seven seas.")