I think one of Clojure's main strengths for concurrency / parallelism is structural sharing of immutable data across threads, which you simply cannot do in Erlang.
HN user
djblue
[ my public key: https://keybase.io/djblue; my proof: https://keybase.io/djblue/sigs/nHZQ2Dcxl-FlmpuNvvKBdhy7bUdRNMKA2NcIqJky1c8 ]
I build and maintain Portal, which runs on multiple platforms including: Clojure, Babashka, ClojureCLR, ClojureScript, nbb, joyride, basilisp and soon jank. The main thing that's different per platform is the os/fs/http/ws libraries but the runtime state and serialization is all the same and reused across all platforms. Also, recently I was able to get most of Portal's reagent viewers, which were designed primarily to run in a browser via ClojureScript, running on the JVM for Server Side Rendering. Clojure is the most portable language I have ever used!
I think most programming communities experience fragmentation as they grow. I would say the javascript ecosystem has had an order of magnitude more fragmentation at every layer: package management, server, client, module specification. IMO this is the cost of progress.
I would say so, I have implemented a pwa https://djblue.github.io/portal/ hosted via github pages for people to browse through their data-structures. You can also connect the ui to a live host and send it data directly with tap> (kinda like console.log in js).
For me the real advantage is the shared information model with the backend that is trivial to serialize/de-serialize with something like transit-clj(s). It's like the benefit of js/node but with richer data structures: keywords, symbols, sets, maps with arbitrary keys, instants, uuids and extensibility via tagging. JSON is great, but EDN is so much better!
https://github.com/mfikes/esprit targets espruino from clojurescript.
Thanks!
Thanks!
https://github.com/djblue/portal - link to the source and usage instructions.
Sweet! Thanks for sharing. I see you're using pure-store to manage your game state. My implementation also uses a redux pattern for state management :)
Your project is substantially superior to mine. It looks so goooooood!
Thanks! I really enjoyed the data modeling aspect of this project. I also ended up modeling the board as a mapping of [row, column] -> color which might be different from the traditional 2D array representation.
https://github.com/djblue/tetris/blob/master/src/tetris/core... to update the mapping :)
I was following https://tetris.com/play-tetris, but I would be down to change it. It messes me up when I use the HJKL mapping.
Thanks!
The reason I want to be able to have different files for different machines was to make slight variations to some of my dotfiles. I used to use branches but it was too much error prone work keeping all my branches up-to-date. I switched to a system where I template my dotfiles, but now I have to expand those templates for them to actually work. I do have leverage when to expand the templates and how to install them. There are a bunch of different ways to do this depending on what you want but what I ended up doing was:
1. Template files using a syntax that was easy find / replace using a regex. You could use an existing one if you like.
2. Generate a bash install script with all the file variants embedded as base64 strings. I can build this script locally, but I also have a travis ci build that pushes up the install.sh script as a gh-pages like branch.
3. I can now curl the install.sh script from any machine I want and bootstrap my dotfiles. The only install time dependencies are bash, curl, git, base64, mkdir, and echo so it's a very portable self-contained script.
4. During install time, I use a case on hostname to determine which files to use and I use git to put them into my $HOME directory using a similar strategy described by the article.
github: https://github.com/djblue/dotfiles install.sh: https://git.io/vxQ4g
This is the biggest value of structured data, as soon as you convert something to a string you have lost all your leverage.
Same here :(
I think the consensus is that the site looks great... I have to agree :)
I don't think your link works. Sorry.
Thanks for the write up. I've been getting into docker lately and this is really useful.
agreed, but maybe easier without all the new.
This project is really cool! Well done.
That is freakin sweet!
The Vim Adventures games is actually pretty useful for getting use to sticking with the keyboard and laying off the mouse.