hoplon

The :hoplon: ClojureScript Web Framework - http://hoplon.io/
mdiin 2020-01-13T21:49:28.030Z

Nice!

2020-01-13T22:06:07.030300Z

belated happy new year, people of hoplon!

🦜 3
2020-01-13T22:07:31.030800Z

in december hoplon turned 7, pretty sweet

2020-01-13T22:07:56.031300Z

still the best way to make SPAs :)

👍 2
2020-01-13T22:08:17.031700Z

i've used a lot of other things now and i... can't disagree

2020-01-13T22:08:47.032300Z

however i'm close to having a common lisp implementation i can make SPAs with i'd be happy to discuss with anyone interested

💡 2
fiddlerwoaroof 2020-01-17T01:51:51.038600Z

Are you actually implementing Common Lisp from scratch? Or building on jscl?

2020-01-17T02:05:55.038800Z

from scratch, with some inspiration from jscl

Rohan Nicholls 2020-01-20T11:12:34.000300Z

The whole thing? That is some undertaking. Is there a particular reason you want to do this, or is it just very motivated curiosity. 🙂

2020-01-20T20:24:25.000500Z

awesomeness of CL + emphasis on delivery

Rohan Nicholls 2020-01-21T08:48:11.000700Z

I’ve worked with CL before and I liked it, but I’m wondering what are the things that make it stand out for you, so much so, that you want to build your own version? After all you put a fair time investment into clojure, so what do you miss? (disclaimer: I’m just curious, not some slavering, clojure-or-die junky. 😉 )

2020-01-21T16:13:23.000900Z

i like that is has a repl-friendly package system and not much else, runtime-wise. so libraries and frameworks can build up from a lower level than possible in clj

Rohan Nicholls 2020-01-21T16:15:45.001100Z

Thanks, and it has the pretty awesome condition/restart system. That is something I have missed.

2020-01-21T16:43:26.001300Z

yes. although i don't think i will implement that hehe

2020-01-21T16:44:10.001500Z

i'm aiming for a subset that aligns as closely as possible to JS, so that i can use JS minifiers to good effect (aligning with cljs philosophy here)

2020-01-21T17:05:03.001700Z

what kind of stuff did you do with CL previously?

Rohan Nicholls 2020-01-21T17:17:07.003700Z

Just playing around and learning it. Went through On Lisp and Land of Lisp. And implemented a toy http server to test a theory about speed.

Rohan Nicholls 2020-01-21T17:18:06.004900Z

So is closure more walled off as far as the internals go?

Rohan Nicholls 2020-01-21T17:23:59.010700Z

I found there were, what felt like kludges, in CL, and the lack of repl representation for anything except a list made it somewhat opaque. I was using python 🐍 for work at the time and it was very nice to be able to see the contents of your data at the repl. With Hash-map I overrode the printer which was a very cool thing to be able to do, but still seemed an unnecessary hack.

Rohan Nicholls 2020-01-21T17:27:27.014800Z

Clojure had solved some of those problems. I also found the available libraries were not moving with the times as much as with other languages, and found the community was often pretty defensive when asked about a solution for a, b, or c.

Rohan Nicholls 2020-01-21T17:28:27.015900Z

I’m sorry but foreign function interfaces are not the answer to everything.

Rohan Nicholls 2020-01-21T17:28:32.016200Z

😃

Rohan Nicholls 2020-01-21T17:29:49.017800Z

But CL was my first exposure to functional programming which was eye opening and macros. 🤯 wow!

Rohan Nicholls 2020-01-21T17:31:10.019500Z

will your implementation be running natively in js, ie. no external lisp needed to compile?

2020-01-21T17:42:14.019700Z

interesting, thanks for sharing your experiences

2020-01-21T17:42:22.019900Z

yes, no external lisp involved

2020-01-21T17:44:16.020100Z

https://gist.github.com/alandipert/cb5def6eec333926e50b672a407b25ab is the working README, to give you some add'l context

2020-01-21T17:44:32.020300Z

basically this is an experiment to do as much development and tooling in the browser as possible

Rohan Nicholls 2020-01-21T17:46:15.021200Z

That is very nice to hear. And quite a challenge I imagine.

Rohan Nicholls 2020-01-21T17:46:23.021600Z

Thanks for the read me.

2020-01-21T17:47:32.021800Z

sure, no problem. less challenging than you'd think since everything's been thought of already, more like painting by numbers 😄

2020-01-21T17:47:59.022Z

i work on it in small chunks, to relax

Rohan Nicholls 2020-01-21T17:52:38.027200Z

Something I’ve been noticing in the spa world is that the big players seem to be ignoring the developments that have been happening in the browser and with native web components. Http2 seems to make the whole compile everything into a big blob idea unnecessary. And the native browser api’s have been developing enormously.

Rohan Nicholls 2020-01-21T17:57:10.031600Z

Oh and the other thing that most spa’s miss completely is any idea of resilient apps. One of the things I loved about enlive templates is that they took an HTML page and enhanced it. The js adaptation of it was even more useful because progressively enhancing the application was built in.

Rohan Nicholls 2020-01-21T18:00:24.033500Z

Both react and Angular just leave you with a div tag on a blank page if something goes wrong. Not at all resilient.

2020-01-21T18:17:44.033700Z

yeah, i think it's making more and more sense to move development workflows into the browser

2020-01-21T18:17:55.033900Z

to the extent that lisp shows us there's a gray area between app/development flows

2020-01-21T18:18:29.034100Z

i know there is an experimental File API now, plus there's workers and wasm. i will probably run gclosure in a web worker for my thing

2020-01-21T18:18:58.034300Z

currently source on disk is still a host dev machine concern though. i communicated with lisp over the browser's remote debug connection

2020-01-21T18:19:41.034500Z

https://www.snowpack.dev/, something in the browser dev vein i saw recently

Rohan Nicholls 2020-01-21T20:57:42.037500Z

Interesting :face_with_monocle:. Thanks for the snowpack link. Very interesting. Handles one of the problems with development at the moment. Getting back to the browser has become a theme for me recently as the current state of affairs is out of control.

Rohan Nicholls 2020-01-21T20:59:51.040Z

I’m assuming as this is your way of relaxing; hacking on your CL implementation you do not want any help, turning your hobby into the annoyance of managing people.

2020-01-21T21:50:53.040200Z

i think i'll be open to collaborating on it at some point, i just want to make sure it does what i need first

2020-01-21T21:51:12.040400Z

since it's also a speculative bet on my ability to use CL for SPAs commercially

2020-01-21T23:35:16.040600Z

anyway, if anyone is interested in a demo of what i have so far, i'd enjoy giving one. i have fun talking about it, and CL

Rohan Nicholls 2020-01-22T05:49:20.041400Z

I would be very interested, for one ☝️.

2020-01-13T22:08:58.032600Z

first order of business will be some kinda hoplon thing for it

2020-01-13T22:09:23.032900Z

cool

2020-01-13T22:11:55.033200Z

@jjttjj haven't chatted in a long time, what are you up to these days?

2020-01-13T22:16:29.034Z

Nothing too new, I've been endlessly working on a like a stock market charting/analysis web app, hoping to release something soonish

2020-01-13T22:16:39.034200Z

how about you?

2020-01-13T22:21:01.034900Z

living the abundant life dude, no complaints really

2020-01-13T22:21:10.035200Z

i do R and JS during the day but i've been plugging at CL for a couple years now

2020-01-13T22:21:46.035600Z

is your stock app something you made for yourself, or is it a startup/work kinda thing?

2020-01-13T22:23:26.036600Z

that's awesome! Just something I'm doing for myself for now. hoping to make it like a freemium thing I can make a bit of $ from

2020-01-13T22:28:12.037Z

very cool. definitely interested in trying it out when you release

👍 1