HNHacker News
TopNewBestAskShowJobs

zelly

2,630 karma · joined October 31, 2018

lisp survivor
submissionscomments
zelly··on Q3 Linux touchpad update: Multitouch gesture test packages now ready
Yes, Synaptics produces closed-source drivers for Windows and ChromeOS. ChromeOS also uses its own low-level input/graphics stack, not X11, so even if you had the code to it you wouldn't be able to just compile it on GNU/Linux.
zelly··on Vapor – Decentralized Web over Bitcoinized HTTP
I like the research idea but please do this on a separate blockchain not on the Bitcoin network. Not only would it be so expensive to be unfeasible, it'd also be an egregious waste of a vital resource (block space). The Bitcoin network is virtually the only way to transfer money uncensorably and it's supported by volunteers like me. If I have to buy more hard drives, I'm less likely to keep my node online.
zelly··on Python 3.9
That's literally a different language though, but I get your point. CPython is the worst implementation.
zelly··on Python 3.9
Type hints don't help performance either because the interpreter discards them. The hints are not enforced by CPython, so you now need a build tool instead of just running the script. The whole point of PEP 484 seems to be to enable autocomplete in Visual Studio Code.
zelly··on FastCGI – The Forgotten Treasure (2002)
There is no difference between the two because they are the same thing, just architected differently. The networking is done by, say, nginx rather than a server that is part of the application.

fastcgi applications can "scale to 0" and cost nothing when they are not used. An application server must always have at least one open socket on a running machine.

fastcgi would probably do better over http/2 than other protocols not designed for multiplexing.

zelly··on FastCGI – The Forgotten Treasure (2002)
the original Heroku/AppEngine
zelly··on Rust 2021: GUI
I don't remember the last time I installed a GUI desktop application.

I think it might have been Zoom a couple years ago. If I install a desktop application that isn't some command line utility, it's a big deal, like a new girlfriend, feels like a committment. It better be a real appliance that actually requires access to hardware and would need to stay open most of the day.

I struggle to think of the audience for these kinds of concerns about "desktop GUI". If the customer is enterprise, government, etc., then they will want WinForms/C# or Java/Swing and you simply don't get to pick Rust, Go, etc.

If you just need a user interface, GUI nowadays means web or mobile (ideally SwiftUI).

Let's face it, in 10 years, there aren't going to be many people using desktops. The people that will be using desktops (like me) probably will be fine with and prefer curses interfaces that run in a terminal emulator. There you go, that's your cross-platform GUI.

zelly··on Nix × IPFS – Milestone 1
There are much more real-world use cases for reproducible builds than for IPFS. It saves time and money. It's not just academic.

Reproducible builds (as in bit-for-bit) means I can trust a (secure) checksum of a binary I downloaded somewhere, let's say from IPFS. This is defense-in-depth, adding another layer of security to prevent sabotage.

Reproducibility means the whole system can reliably be built from source and I don't need to manually make sure the system has the correct constellation of implicit dependencies and their version numbers. This saves time and money in deployment and will pay off in a very big way 10 years down the line when that code is still in use somewhere.

zelly··on Embedded PDF viewer in Firefox 81 supports filling forms
Firefox's sandboxing incomplete or nonexistent (e.g. GPU process is not sandboxed on Linux).
zelly··on Ruby 3.0 Preview 1
babel, typescript mostly and soon wasm
zelly··on Ruby 3.0 Preview 1
All of those offer static type checking. Python and Ruby's don't necessarily change how the code is compiled, but it might in the future. Common Lisp declare/declaim/proclaim changes the way the code is compiled; it's not just a linter. Clojure is definitely not dynamically typed, unless you consider Java to be dynamically typed.

Also dynamic typing is more productive (for application code, not talking bootloaders here). It's a measurable fact and apparent to anyone who has written code long enough. Writing out types for everything is mostly pointless clerical work which should be able to be done by computers.

zelly··on Ruby 3.0 Preview 1
It won't be optional in Ruby 4, most likely.
zelly··on Ruby 3.0 Preview 1
So now there are basically no dynamically typed languages left. There's Scheme, JavaScript, what else? All languages nowadays are converging to TypeScript/Rust. It's kind of sad.
zelly··on The Era of Visual Studio Code
It's all open source. Is there anyone making money from VS Code plugins? Why does it matter if MS "steals" the code?
zelly··on The Era of Visual Studio Code
> In IntelliJ I can write a half baked statement like `new Foo()`, and then Alt + Enter my way to it being `foo = new Foo();` as a private member variable of the class in no time

This will be in VS Code one day, except when it's there it will be for all languages (some neural code completion engine) and do much more.

zelly··on Why Not Rust?
That is solved by using garbage collection.

There are times you need manual memory management. Then there are other times you don't (the vast majority of use cases). Rust forces you to constantly pretend that memory management matters, which gets quickly tiresome.

Not everyone is working on Chromium or Windows. The reality of the matter is that for most real-world software development security doesn't matter at all.

zelly··on Why Not Rust?
Memory errors are not as big of an issue in the real world as the designers of Rust seem to assume. Andrei Alexandrescu has this quote about how Rust skipped leg day. You should all look it up. Here's what actually matters, in the real world, for the type of programs I'd choose Rust or a Rust-adjacent language:

- Fast compile times

- Easy build system. Must be parallel, saturate all cores, and handle distributed builds as a built-in first-class feature. Should be able to produce static binaries or dynamically linked binaries. Should be able to consume binary dependencies (that means a stable ABI).

- Optimized, fuzzed, highly-tested, standards compliant web stack built-in

- Ability to compile CUDA kernels, built-in

- Automatic memory management with an escape hatch for where manual is necessary

- Rich metaprogramming and compile-time reflection

- Created by or funded by a large U.S. corporation so that PMs are likely to choose it.

- IDE/LSP language server/editor plugins maintained by the language designers

Failing this, you are an academic language, not a real world industry programming language in 2020.

zelly··on Why Not Rust?
No it's not. Research generational garbage collection.
zelly··on Why Not Rust?
Ada, Java, C#, Go, Python
zelly··on Pb-jelly – A Protobuf code generation framework for Rust, developed at Dropbox
R*st was designed to fragment the heap as much as possible. There's no way to fix it without major changes to the compiler or using "unsafe".
zelly··on Chuck Feeney Is Now Officially Broke
He gave away all his money and that's still not enough for you?
zelly··on JDK 15
> But it's funny how, for many features that were added later, people were rationalizing their absence with such lines too

There's nothing wrong with that. If string interpolation is really useful, then Java will add it some years down the line.

It's cheap to add features but literally impossible to remove them. There's no way to undo a mistake in language design. That's an asymmetry. I'd rather err on the side of caution than kitchen-sinking it.

zelly··on JDK 15
I'm glad Java is being conservative and not doing that. JS/Python f-strings have not proven themselves long-term. It also bloats the language with yet another mini-DSL. You can always add a proper templating engine on top.
zelly··on C++ vs. Rust: an async Thread-per-Core story

  #include <cstdio>
  int main() {
    auto square = [](double x) -> double { return x*x; };
    printf("%f\n", square(10));
    return 0;
  }
since 2011
zelly··on The lack of namespaces on crates.io is a feature
I'm sorry but a language that has data entropy and link rot built into its compiler is not appealing to me.

I prefer the Go approach which lets you host or import packages via a HTTP or git URI. If you have to have packaging built-in to the standard toolchain these days, then please use already well-known and existing protocols like DNS and git. Java also figured this out years ago (com.sun... etc).

zelly··on C++ vs. Rust: an async Thread-per-Core story
Lambdas are compiler friendly. They reliably inline unlike standalone functions. It's not laziness, it's an optimization.
zelly··on C++ vs. Rust: an async Thread-per-Core story
Or, you know, actual garbage collection (generational, JVM-style)
zelly··on LLVM merges machine function splitter for reduction in TLB misses
It doesn't work in Rust, only Clang
zelly··on C++20 has been approved
I'm looking forward to reflection and executors in 23. Then it will basically be the most powerful language. With compile-time reflection, you could add whatever language feature you want--almost as powerful as Common Lisp macros.
zelly··on What anarchy isn't (free eBook)
Political manifestos don't belong on HN.
← PreviousPage 7 of 34Next →