Hacker Newsnew | past | comments | ask | show | jobs | submit | mapcars's commentslogin

>Isn't the US building mass detention camps right now for all the brown people there?

No? Its for illegal people, regardless of color. Just so happened that most illegals come from specific places


kein Mensch ist illegal


Я не говорю по немецки


That would be fantastic! The standard keyboard design is extremely outdated, while for desktop there are some products pushing it with ortholinear layout and thumb clusters, for laptops its doesn't exist at all.

I don't know how much keyboard-design flexibility is available to you, but innovative keyboard could even be a killer feature.


How is ortholinear supposed to be better? I've never used a full-size ortholinear keyboard but every time I've had one on a portable keyboard or mobile device it has driven me nuts (and staggered keyboards of the same sizes have not).

I agree that offering more user choice here could be a unique and standout feature, though. One of the small things I love about their keyboard offerings is that they offer all blank key cap options.


Keys are aligned vertically, so your fingers move mostly straight up/down instead of diagonally.

The grid layout makes key positions more predictable and consistent.

Most ortholinear boards are 40–60% layouts.

Heavy use of layers (like Fn, but more advanced)


It would be helpful to show some clarification on what the benefits are compared to TypeScript


Or the plethora of languages compiling to WASM, for that matter


XL is a very interesting modern iteration on extensible languages, unfortunately it seems abandoned.


With Tauri you also get the freedom of choosing frontend frameworks and can reuse existing frontend code/skills. Yes React has issues, for example Svelte handles reactivity in a much better way. I don't see real benefits of re-implementing the whole thing in Rust.


A word to the wise: similar to how foam is mostly air, Tauri is mostly marketing. Most of those 15MB "lightweight" bundles expand to 2 GB+ RAM in practice. Of course, devs still shamelessly (ignorantly, in all likelihood) call the apps "lightweight", while taking up, say, 6 GB of RAM for a 5 button UI. Tauri have also proven reticent [0] to correct the record. One supposes the sole advantage of sharing memory with other Tauri apps is not a sufficient sell to overcome Electron's single-browser-engine advantage.

A pure Rust app takes up ~60 MB for the same UI, with a large portion of that going towards graphics (wgpu table stakes).

[0] https://github.com/tauri-apps/tauri/issues/5889


I admit I was not aware of memory consumption details, then Rust implementation does make a lot of sense!


Are there any interesting/uniq features present in it that are not in the alternatives? My understanding is that its just a client for the powerful llm


Doesn't look like just a thin wrapper to me. The interesting part seems to be the surrounding harness/workflow layer rather than only the model call itself.

I was trying to keep track of the better post-leak code-analysis links on exactly this question, so I collected them here: https://github.com/nblintao/awesome-claude-code-postleak-ins...


From the directory listing having a cost-tracker.ts, upstreamproxy, coordinator, buddy and a full vim directory, it doesn't look like just an API client to me.


> Pre-LLM world one would at least have had to search for this information, find the site, understand the license and acknowledge who the author is. Post LLM the tool will just blatantly plagiarize someone else work which you can then sign off on as your own

These don't contradict each other though, you could "blatantly plagiarize someone else work" before as well. LLMs just add another layer in between.


Copyright violation would happen before LLMs yes, but it would have to be done by a person who either didn’t understand copyright (which is not a valid defence in court), or intentionally chose to ignore it.

With LLMs, future generations are growing up with being handed code that may or not be a verbatim copy of something that someone else originally wrote with specific licensing terms, but with no mention of any license terms or origin being provided by the LLM.

It remains to be seen if there will be any lawsuits in the future specifically about source code that is substantially copied from someone else indirectly via LLM use. In any case I doubt that even if such lawsuits happen they will help small developers writing open source. It would probably be one of the big tech companies suing other companies or persons and any money resulting from such a lawsuit would go to the big tech company suing.

IANAL, TINLA.


Biggest problem is that AI companies are middlemen profiting from theft.

If you steal once or twice that’s bad and that’s on you maybe you will get away with it maybe not.

If you make it on scale and take cut from distribution of stolen goods that’s where normally you have doors kicked out at 6am.


> That requires a high level of trust in your current government and whomever is in charge in the future.

Some entity has to be trusted with our data anyway, at least government supposed to have some accountability before the citizens, corporations have much higher incentives for profit.


Why is it a given that we need to trust an entity with our data? Most of human history got by without data collection, centralized or otherwise, there's no innate law of nature requiring it

It doesn't require only trusting the government (or another corporation) today, it requires trusting all future iterations of them as well. It may be a different story if the data was periodically purged, say after each administration for example.


> Some entity has to be trusted with our data anyway

Why?


Because the government needs to know who you are to do anything involving you. Taxes, drivers' licenses, passports, courts, etc.


There are still a lot of underlying assumptions here worth noting though. You're assuming we must have a government and what it must be able to do, like charge me taxes or gatekeep certain activities behind licensing systems.

I'm not arguing we don't need a government. But to silently take for granted that everything from income taxes to public roads and travel restrictions are a given jumps ahead here.

We could decide, for example, that the government shouldn't be allowed to centralize certain data and remove some of what we expect them to do instead.


> We could decide, for example, that the government shouldn't be allowed to centralize certain data and remove some of what we expect them to do instead.

How exactly government manages our data is a valid concern and in the modern world this needs to be reevaluated.


Yes, I think one ID, presented only as necessary for those interactions, is enough for them to do their job.

It would be good to clamp down on private companies collecting that data.


Does it? We can live without anyone knowing our age except the entities we tell it to.

Is it actually a crime to upload a fake ID photo to a private company for age verification?


Heh, why don't you do the opposite - recreate proprietary software with open source license


I expect that thousands of people are now doing just that. Most proprietary software is just a shiny UI in front of a crappy database schema.


I used a few different lisps for pet projects and honestly today for me the biggest problem of lisps is the typing. ADTs (and similar systems) are just super helpful when it comes to long term development, multiple people working on code, big projects or projects with multiple pieces (like frontend+backend) and it helps AI tools as well.

And this in not something lisps explored much (is there anything at all apart from Racket/typed dialect?), probably due to their dynamic nature. And this is why I dropped lisps in favour of Rust and Typescript.


+1 to explore Coalton. It's also talked about on this website and often by its authors.

Links to Coalton and related libraries and apps (included Lem editor's mode and a web playground): https://github.com/CodyReichert/awesome-cl/#typing


SBCL has fine type checking. Some is done at compile time -- you get warnings if something clearly can't be type correct -- but otherwise when compiled with safety 3 (which people tend to make the default) types are checked dynamically at run time. You don't get the program crashing from mistyping as one would in C.


> You don't get the program crashing from mistyping as one would in C.

Sorry but I don't compare to C anymore, I want the same safety as in Rust or Typescript: exhaustive checks, control-flow type narrowing, mapped types and so on. Some detection at compile time is not enough, since there is a way to eliminate all type errors I want to eliminate them all, not some.


Why stop there? Why not demand proof of correctness? After all, that's now within reach using LLMs producing the formal specification from a simple prompt, right?

SBCL does a fine job in detecting type mismatches within the frame of ANSI Common Lisp, not Haskell. While I would agree that a strict type system eases long term maintenance of large systems, for "explorative computing", proof-of-concepts, RAD or similar that tends to get in the way. And if such proof-of-concept looks promising, then there is no shame in rewriting it in a language more suitable for scale and maintenance.


Proof of correctness would be fantastic, but I have yet to see it in action. LLMs maybe could do it for simple program, but I'm pretty sure it will fail in large codebases (due to context limits), and types help a lot in that case.

> for "explorative computing", proof-of-concepts, RAD or similar that tends to get in the way

I would even argue that its better to have typed system even for POCs, because things change fast and it very often leads to type errors that need to be discovered. At least when I did that I often would do manual tests after changes just to check if things work, with typing in place this time can also be minimised.


> You don't get the program crashing from mistyping as one would in C.

Uh, isn't that exactly what happens with runtime type checking? Otherwise what can you do if you detect a type error at runtime other than crash?

In C the compiler tries to detect all type errors at compile time, and if you do manage to fool the compiler into compiling badly typed code, it won't necessarily crash, it'll be undefined behavior (which includes crashing but can also do worse).


> Uh, isn't that exactly what happens with runtime type checking?

No, it raises an exception, which you can handle. In some cases one can even resume via restarts. This is versus C, where a miscast pointer can cause memory corruption.


Again, a proper C compiler in combination with sensible coding standards should prevent "miscast pointers" at compile time / static analysis. Anyway, being better than C at typing / memory safety, is a very low bar to pass.

I'm curious in what situation catching a typing exception would be useful though. The practice of catching exceptions due to bugs seems silly to me. What's the point of restarting the app if it's buggy?

Likewise, trying to catch exceptions due to for example dividing by zero is a strange practice. Instead check your inputs and throw an "invalid input" exception, because exceptions are really only sensible for invalid user input, or external state being wrong (unreadable input file, network failures, etc.).


If "just don't do the bad things" is a valid argument, why do we need type checking at all?

Exceptions from type checking are useful because they tell you exactly where something has screwed up, making fixing the bug easier. It also means problems are reduced from RCEs to just denial of service. And I find (in my testing) that it enables such things as rapid automated reduction of inputs that stimulate such bugs. For example, the SBCL compiler is such that it should never throw an exception even on invalid code, so when it does so one can automatically prune down a lambda expession passed to the COMPILE function to find a minimal compiler bug causing input. This also greatly simplifies debugging.

A general reason I look down on static type checking is that it's inadequate. It finds only a subset, and arguably a not very interesting subset, of bugs in programs. The larger set of possible bugs still has to be tested for, and for a sufficient testing procedure for that larger set you'll stimulate the typing bugs as well.

So, yeah, if you're in an environment were you can't test adequately, static typing can act as a bit of a crutch. But your program will still suck, even if it compiles.

The best argument for static typing IMO is that it acts as a kind of documentation.


That's very silly, because in languages that do static type checking right, like Haskell, Rust, or to a lesser extent TypeScript, if you have a typing bug your program won't even compile. How's that "just don't do bad stuff"?

> It finds only a subset, and arguably a not very interesting subset, of bugs in programs. The larger set of possible bugs still has to be tested for, and for a sufficient testing procedure for that larger set you'll stimulate the typing bugs as well.

I agree that having your program be properly typed is a minumum requirement for it to even be possibly correct. So why would you not check that requirement statically? Skipping it is akin to not checking the syntax at compile time, instead preferring to crash at runtime due to invalid syntax. Or worse, throwing an exception. And then you're supposed to catch the "missing parenthesis exception"?

If you're building a bridge, presumably you'll calculate the forces and everything, before putting it together and verifying it actually holds for those forces. Likewise, if I specify that my function f returns a positive integer, why would I not let the compiler check that assumption statically? Are you really saying you'll write a test like (assert (> (f) 0)) or whatever? Seems like a huge waste of time building the app and starting up the test suite, when you could just as well just have stopped the build when the compiler saw you were returning the wrong type.

> For example, the SBCL compiler is such that it should never throw an exception even on invalid code

What does this even mean? What does it do if you run (/ 1 x) where x = 0?

> So, yeah, if you're in an environment were you can't test adequately, static typing can act as a bit of a crutch. But your program will still suck, even if it compiles.

This is a ridiculous argument, and is much closer to "just don't do the bad things" than what I said. Also note that I never said "don't write tests". You're making a complete strawman by pitting type checking against testing. It's two complimentary methods of verifying correctness, and the type system is a quicker and more accurate way of catching bugs, so moving all logic that you possibly can to the type system and away from tests is a huge win in efficiency and correctness. That doesn't mean skip testing, just like checking the syntax of your program statically doesn't mean skip testing.

Just because I'm wearing a seat belt (type checking) doesn't mean I'll drive recklessly (skip testing). Likewise, just being a careful driver (writing tests) doesn't mean you should stop wearing your seat belt (type checking).


You can run Coalton on Common Lisp. It has a type system similar to Haskell’s. And interops very well with pure Common Lisp. It also modernizes function and type names in the process so it makes Lisp more familiar to modern developers. I tried it in a small project and was impressed.


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: