HNHacker News
TopNewBestAskShowJobs

simongray

2,057 karma · joined December 8, 2014

submissionscomments
simongray··on Saving Energy: Home Server That Automatically Suspends to RAM and Wakes Up Again
Raspberry Pis (and similar devices) already work great as low-power servers.

The big issue is the home server community being overly focused on creating "battle stations" that look cool and run 40 different Docker containers rather than simple low-power solutions.

simongray··on Clojure Turns 15 panel discussion video
I have onboarded developers coming directly from university and it went fine?

In fact, at my old job, the entire team learned Clojure on the job. I was the only hire who had learned it prior to being hired. Our codebase was fine and very maintainable.

The other teams were similarly new to Clojure. Most people spent a few months doing increasingly more advanced things until they were comfortable with the language and the codebase.

The main issue for complete beginners is learning to grapple with the different development setup compared to what they might be used to, i.e. interactive development on a live system using an editor-integrated REPL. We basically set everyone up with IntelliJ and parinfer. Paredit was optional, as was alternative editors such as emacs.

IntelliJ + parinfer is a similar development experience to Python. The only part that is foreign in that case is the interactive development of a live system which the new devs quickly come around to seeing the benefits of. It helps having seniors who point out the new concepts.

simongray··on Clojure Turns 15 panel discussion video
He's speaking again this year at Clojure Conj, so maybe there will soon be something again.
simongray··on Clojure Turns 15 panel discussion video
That's what originally attracted me to Clojure back in 2017 when I was ~30.
simongray··on Clojure Turns 15 panel discussion video
No one uses Boot.

The choice is between Leiningen and deps.edn AKA the official Clojure CLI. Personally, I switched to deps.edn back in 2020 and haven't looked back. I like that it's simpler/does less out of the box and I also use the Git dependency feature all the time (you can reference a git sha as a dependency, not just Maven coordinates).

Something like 90% of it is just listing dependencies (the same packages as it's all just Maven anyway) and for the remaining 10% of configuration there's plenty of resources available for both. They can also interop to some extent.

Other ecosystems have it much worse than Clojure in this regard.

simongray··on Clojure Turns 15 panel discussion video
Shadow-cljs makes everything very easy these days.
simongray··on The program is the database is the interface
Clojure also has Clerk, which is like Jupyter, but more befitting Clojure's overall philosophy: https://clerk.vision/
simongray··on Most FOSDEM 2023 videos have been uploaded
I loved the one on Podcasting 2.0.

The one on Matrix 2.0 has some cool demos.

simongray··on Vestas unveils solution to end landfill disposal for wind turbine blades
Those comments are much dumber than I remember them being.
simongray··on DNS0: The European public DNS that makes your internet safer
I live in the EU and I agree with your first impression. They definitely tried to pass as a typical EU website.
simongray··on DNS0: The European public DNS that makes your internet safer
It seems like they went through enough trouble to ensure that the page is translated into the official languages of the EU which is usually only something you see on EU websites. For that reason, it does appear official'ish at first glance.
simongray··on Tell HN: Firefox Is an awesome browser right now
Would love to know this too! It's a bit confusing the amount of options available.
simongray··on History of Lisp Parentheses (2019)
I think you're describing the difference between being "simple" (objective, absolute) and being "easy" (subjective, relative).

Of course, I'm paraphrasing this classic: https://www.youtube.com/watch?v=SxdOUGdseq4

simongray··on History of Lisp Parentheses (2019)
First of all, that place is where the reader macros go, so the spot is already taken.

Second of all, notwithstanding interference with reader macros, then no, it isn't completely trivial unless what you're suggesting is just pointless string substitution, which would also make e.g. 1(2 3) be equal to (1 2 3).

If what you're suggesting is having an enforced hard split between lists and function/macro invocation, that pretty much just makes everything harder to do with no perceivable gain, other than looking a bit more like C-based languages. It's a bit like enforcing that any strings that are parsed as numbers somewhere in the source code must be defined using "..." while strings that aren't must use '...' instead.

The entire point is that you can manipulate code as data structures. You can rewrite the rules of the language by returning data structures. There's no reason to make this more complex.

simongray··on History of Lisp Parentheses (2019)
What it means is entirely contextual.

Often, it will be interpreted to be a function call or a macro invocation in the eval step (the E in REPL).

You can sidestep this behaviour using the ' reader macro (i.e. quote) as you mentioned yourself. Quoting disables this behaviour for the form that the reader macro applies to. Reader macros occur in the R step (i.e. before the E in REPL).

It is a list data structure. There are many examples of lists which are never interpreted as function calls in Lisp, since macros run before evaluation and can change the default behaviour, e.g. in

    (defun increment (x) (+ x 1))
the (x) is not a function invocation, it's a list of named function parameters.
simongray··on History of Lisp Parentheses (2019)
If it's +(1 2 3) then the language is no longer homoiconic and you will lose the primary leverage of being a Lisp. The fact that Lisp code consists entirely of Lisp data literals (code as data) is what enables Lisp macros and the superior REPL experience.
simongray··on EU chat control law will ban open source operating systems
And in addition to that, each new Commission also has to be approved by the European Parliament.
simongray··on EU chat control law will ban open source operating systems
Laws are proposed by the Commission, not the Council.

The Council and Parliament work like different chambers in the EU system, kinda like the Senate and the House in the US, but it's the prerogative of the Commission to propose new laws.

Elections work similarly in any European parliamentary system. Prime ministers are also indirectly elected in those systems.

The main difference is that the executive (the Commission) is the only one that can propose laws in the EU, but the other EU lawmakers can still amend legislation.

(just stating this for people reading the comments, not specifically for you)

simongray··on The magic of small databases
This post is an exercise in describing the motivation and features of the Semantic Web seemingly without realising the tech stack already exists.
simongray··on The UK is wasting a lot of wind power
The way it works in the EU—not sure if the UK participates in this market still?— is that every energy source is priced according to the most expensive energy source until demand is covered by supply.

So, for example, on particularly windy days here in Denmark, we pay almost nothing as our entire demand will be covered by wind energy. On other days we might pay a lot since we need to import energy produced from gas or other expensive sources.

simongray··on Tech companies are irrational pop cultures
He paraphrases a classic paper by Peter Naur which is worth reading in its entirety.
simongray··on Portugal’s digital nomad bubble
Europe is not one place with one single bureaucracy.
simongray··on Debugging Lisp: trace options, break on conditions
You can just use e.g. Intellij's debugger with Clojure? What exactly do you need ported?

Personally, I don't really see the value though. I prefer to create modules of mostly pure functions, testing them in the REPL using Rich comment blocks.

simongray··on U.S. moves to bar noncompete agreements in labor contracts
This is where you say the word GDPR (if you're in Europe). I've done it to some HR person and subsequently received a long email apology from the (very nervous) boss of the company the day after.
simongray··on Meta prohibited from using personal data for advertisement
If you work in a European company that has a web presence and/or collects data, you should be familiar with what is/isn't personal data by now.

I don't blame Americans or others for not knowing this, but the amount of bad takes about the GDPR by Silicon Valley people in particular is so ridiculous. Every single comment section about a GDPR topic on HN has a bunch of Americans talking about how Europe is some backwards, regulatory hellhole, always talking from a position of total ignorance.

simongray··on Meta prohibited from using personal data for advertisement
Why do you participate in discussion about the GDPR when you clearly know nothing about it? Of course a "like" or any kind of data that is core to the service doesn't infringe the GDPR. The illegal part is about processing or forwarding personal data of users to third parties, when users haven't agreed to that aspect of the "service".

You usually see the distinction between "functional" and "advertising" cookies in those annoying banners, where you of course can't disable the former as that data is core to the functionality of the website. And guess what, if you don't do any shady stuff with user data you don't even need to display any banner (the banner is for getting explicit permission from the user to potentially do shady stuff).

simongray··on In 2022, Web3 went just great
The original Web 3 was the Semantic Web.
simongray··on Petals: Run 100B+ language models at home bit-torrent style
Guarantees are not orthogonal to realtime feedback, they are essential. If I write a query, it is not irrelevant whether it takes 1 second or 1 minute to return at any given moment.

You write that speed can be inferred, but the analogy that was used here is BitTorrent—and my experience with BitTorrent tells me that it certainly cannot be inferred.

simongray··on Petals: Run 100B+ language models at home bit-torrent style
How would one make a reliable realtime system that depends entirely on unknown network conditions? Perhaps inside a closed network it is possible.
simongray··on Petals: Run 100B+ language models at home bit-torrent style
What an fascinating concept. I guess this won't be useful for any kind of realtime feedback system, though?
← PreviousPage 5 of 19Next →