News for hackers. Stuff that matters.

chrisoakman

Re:Tetris Is Forty Years Old on Wednesday June 05, 2024 @11:41AM (#40586283)
For the 30th anniversary I worked with some friends on an implementation using ClojureScript: https://github.com/imalooney/t3tr0s

You can play online here: http://t3tr0s.com/

Battle Mode is especially fun with a group :) You can see everyone's board in real-time on this page: http://t3tr0s.com/#/spectate

Re:Vercel announces Turbopack, the successor to Webpack on Tuesday October 25, 2022 @03:37PM (#33335155)
Build tooling stability is one of the great undersold benefits of the ClojureScript ecosystem IMO.

The build process is defined by the compiler (using Google Closure tooling under the hood) and has not significantly changed since the introduction of ClojureScript in 2011.

Since all CLJS projects use the same compiler, the build process works the same everywhere, regardless of which actual build program is being used (Leiningen, shadow-cljs, etc).

Re:Entity Resolution: The most common data science challenge on Wednesday June 01, 2022 @04:30PM (#31587640)
I gave a talk about Record Linking at Clojure/conj 2019: https://www.youtube.com/watch?v=rGKEOMUtJfE

I opened a PR to add it to your list

Re:Tetris in ClojureScript on Monday June 14, 2021 @12:19PM (#27504474)
I maintain an updated fork: https://github.com/oakmac/parinfer
Re:ClojureScript 1.10.866 Release on Tuesday May 25, 2021 @12:31PM (#27278938)
ClojureScript is self-hosted and thus can be compiled in a browser (see https://clojurescript.io/ for an example).

For most serious usage and projects you will want to use the JVM though.

Re:Why Clojure? (2018) on Monday January 04, 2021 @04:54PM (#25638744)
The Parinfer core algorithm is mostly "complete", with the remaining work being various editor integrations (which can be quite tricky).

I maintain an up-to-date fork of Parinfer JS here: https://github.com/oakmac/parinfer

The Rust implementation is also popular and actively maintained: https://github.com/eraserhd/parinfer-rust

This is very similar to https://CheckForCorona.com

The team at Luminare (https://luminaremed.com) has been working with epidemiologists and doctors from Harris County and the City of Houston to build out a screening tool to help prioritize public testing. We are doing about ~10k screenings per day and ready to ramp up as more testing becomes available: https://checkforcorona.com/harris-county

We are providing this tool free for any hospital or public health organization that needs it. Please reach out if you have any connections!

Re:Show HN: Tetris Implemented in ClojureScript on Saturday April 20, 2019 @02:34PM (#19708126)
Nice work! :)

A few years ago some friends and I wrote a tetris clone to celebrate the 30th anniversary of tetris and learn ClojureScript in the process. Really fun group project.

Playable here: http://t3tr0s.com/

Repo: https://github.com/imalooney/t3tr0s

Re:Parinfer – Simpler Lisp Editing on Saturday July 28, 2018 @07:24PM (#17635582)
I did a quick project around this idea a while ago:

http://oakmac.com/lisp-3d-1.gif

http://oakmac.com/lisp-3d-2.gif

Re:Parinfer – Simpler Lisp Editing on Saturday July 28, 2018 @07:15PM (#17635550)
I'm glad you like Parinfer!

The only problem is working on a shared code base where people don't bother to indent code properly.

Parlinter was designed for this purpose. Maybe you could suggest it to your team? https://github.com/shaunlebron/parlinter

Re:A Chess Novice Challenged Magnus Carlsen on Friday November 17, 2017 @04:50PM (#15726283)
I was casually reading this article when I noticed a familiar bug when quickly moving the pieces. A quick "Inspect" reveals they are using one of my JavaScript components :)

https://chessboardjs.com/

Re:Why I'm Productive in Clojure (2013) on Sunday October 22, 2017 @10:48AM (#15527054)
I'm sorry your original question has been downvoted. I think it's a perfectly reasonable experience report and question. I replied here: https://news.ycombinator.com/item?id=15527041
Re:Why I'm Productive in Clojure (2013) on Sunday October 22, 2017 @10:44AM (#15527041)
Hi :)

I feel your pain here and just wanted to let you know how common this is for programmers who initially try out Lisp for the first time. As others have alluded to, I promise this initial "parenthesis shock" goes away rather quickly as you read and write Lisp code. In my direct experience, I have hired junior developers straight out of a coding bootcamp who were able to pick up ClojureScript in their first week using Sublime Text with no editor extensions. In other words: you can definitely do this; it's not magic.

I would strongly encourage you to check out Parinfer [1]. Parinfer makes indentation "significant" so you never have to worry about "closing the parens". Basically, if you can handle Python or CoffeeScript indentation, you can handle Lisp. There are no hotkeys to learn and it is available in most common editors today.

For a first project I would recommend rewriting something you have already written and are familiar with. That way you can focus on just the language and not worry about the problem domain or "how to solve it". Just do a 1-to-1 port of something you've already done and compare how the two solutions are the same or different.

I'm sorry you are being downvoted and being told to "just use emacs" or "use the REPL more". IMO, these are not helpful suggestions for someone new to the language.

Good luck. You won't regret learning Clojure. One of the best things I have ever done for my career.

[1]:https://shaunlebron.github.io/parinfer/

Re:State of Clojure 2016 – Results and Analysis on Tuesday February 07, 2017 @11:02PM (#13595631)
Hi - I'm the author of the Parinfer Vimscript port.

If you've found a bug with the port, please report it here: https://github.com/oakmac/parinfer-viml/issues/new

Thanks :)

Re:Clojure for the Brave and True (2015) on Friday January 06, 2017 @11:40PM (#13342398)
I totally agree the overhead of learning Emacs is orthogonal from learning Lisp. IMO, it's a shame that there is such a strong association between that tooling ecosystem and Lisp languages. I think it pushes a lot of newcomers away from the learning process.

One of the design goals of Parinfer[1] is to help reduce the cognitive load of Lisp syntax for newcomers. Hopefully more introductory texts adopt it as part of their environment setup.

[1]:https://shaunlebron.github.io/parinfer/

Re:Clojure for the Brave and True (2015) on Friday January 06, 2017 @11:27PM (#13342362)
I'm not sure when your last exposure to the ClojureScript ecosystem was, but almost nothing you mention is a problem as of 2016: debugging, hot reloading, large JS deps, etc.

I'm biased, but I think ClojureScript is the best way to use the JavaScript platform today. Awesome core library, consistent build process, best of breed tooling, persistent data structures, flexible syntax (JSX is madness compared to hiccups); I could go on.

JavaScript the platform may have it's warts, but ClojureScript is all beauty :)

Re:The Next Five Years of ClojureScript on Saturday December 17, 2016 @01:43PM (#13201810)
Re:The Controversial State of JavaScript Tooling on Tuesday February 02, 2016 @04:22PM (#11022743)
FYI - the JavaScript output of the ClojureScript compiler is designed to be compatible with the Google Closure Compiler in Advanced mode.

In other words, CLJS users don't have to do anything special to benefit from the power of Google Closure. It just works :)

Re:ClojureScript Year in Review on Thursday December 24, 2015 @07:24PM (#10789998)
Thank you for the kind comment :) I'm glad you like atom-parinfer!
Re:Show HN: Parinfer – a simpler way to write Lisp on Wednesday November 11, 2015 @06:47PM (#10550272)
You could also just put a "[" in front of "4" and "7".

Parinfer will infer the closing brackets.

Re:Show HN: Parinfer – a simpler way to write Lisp on Wednesday November 11, 2015 @05:44PM (#10549938)
Not really due to the fundamental difference between Lisp and JavaScript syntax.

You could borrow the idea of indentation inferring function scope structure and make a plugin that would modify JavaScript syntax accordingly, but I'm not sure that would even be desirable when writing JavaScript.

Parinfer is made possible by Lisp's unique syntax.

Re:Show HN: Parinfer – a simpler way to write Lisp on Wednesday November 11, 2015 @05:26PM (#10549823)

  they have to make the indentation part of the syntax
The syntax remains unchanged. Parinfer only "infers" the structure of your code based on the same indentation that you typically would do anyway as part of formatting your code to be readable.

  shifts cognitive load from managing parenthesis to managing indentation
Yes, exactly :)
Re:Show HN: Parinfer – a simpler way to write Lisp on Wednesday November 11, 2015 @01:52PM (#10548410)
This comment makes me so happy; thank you :)

I'm glad it "just works"!

Re:Show HN: Parinfer – a simpler way to write Lisp on Wednesday November 11, 2015 @01:48PM (#10548386)
I can speak to this as I've been using Parinfer on existing code for the last week or so.

There can potentially be a "big diff" when you run Paren Mode on a file for the first time, but that's typically a one-time event. The beauty of Parinfer is that most Lisp code already uses these conventions.

Once you start using Parinfer's Indent Mode regularly it feels crazy to write or edit lisp without it.

One of my plans for atom-parinfer[0] is to have a comment flag in a file that will automatically signal "use Parinfer on this file". Similar to JSHint inline configurations [1].

[0] https://github.com/oakmac/atom-parinfer [1] http://jshint.com/docs/#inline-configuration

Re:Show HN: Parinfer – a simpler way to write Lisp on Wednesday November 11, 2015 @01:21PM (#10548192)
I can assure you the author of Parinfer is aware of this distinction ;)

That sentence is an oversimplification to give context to the rest of the content in that section. Should probably have an asterisk to clarify.

Re:Show HN: Parinfer – a simpler way to write Lisp on Wednesday November 11, 2015 @12:44PM (#10547903)
Hi folks -- I've been working with Shaun on the tail end of this project.

Have an early prototype of Parinfer working with the Atom editor here: https://github.com/oakmac/atom-parinfer

It's pretty early software, but feedback appreciated :)

FYI - I'm fairly certain that CLJS does not use Google Closure because it is "already in java", but rather because of it's maturity and awesome features like DCE.

https://github.com/clojure/clojurescript/wiki/Rationale#goog...

Never thought this comment would end up on HN when I wrote it ;)

I remember writing this example and being mesmerized watching the games progress. I think I made an alternate version that speed up the time and opened a handful of browser tabs to watch the games. Most of them do end up in insufficient piece draws or the 50-move rule.

Glad to see others are enjoying it :)

Re:TypeScript and the Road to 1.0 on Thursday October 17, 2013 @11:36AM (#6566049)
Not a huge fan of the class keyword in ES6 either...

I do not use statically typed languages and I have nothing against MSFT; I was solely commenting on TypeScript as a language.

Older »