HNHacker News
TopNewBestAskShowJobs

kamov

56 karma · joined May 20, 2022

submissionscomments
kamov··on Show HN: Ant – A JavaScript runtime and ecosystem
Okay, so would you say LuaJIT is slop, just because it is hand coded?
kamov··on SpaceX wants to launch 100k more Starlink satellites for 100x the bandwidth
100k satellites is kind of insane, why not a smaller number of satellites which are more powerful, like the satellites from AST Spacemobile? It should be possible to launch smaller number of satellites without sacrificing progress
kamov··on I don't maintain my homelab, it maintains itself
> I've approximated it somewhere around 15 minutes of maintenance per month, barring an emergency. If that's normal to you, congrats - you've peaked in life. However, that's absolutely absurd to me. I used to spend days on end building, maintaining, and debugging various aspects of my servers, databases, apps, etc.

It's been normal for me for the past 3 years thanks to using NixOS for all server infrastructure.

kamov··on One neat trick to end extreme poverty
This is an oversimplification, adopting "capitalism" wholesale as a developing nation without guardrails is incredibly risky because foreign capital will just buy out or crush native industries. The way China actually succeeded was by adopting state capitalism and implementing incredibly strong protectionist measures to ensure domestic growth, not by opening the floodgates to a pure free market.

> Anyone who disagrees should consider why you’re on a venture capitalist website.

Not limiting yourself to an ideological bubble is actually a good thing, regardless of what website you're on.

kamov··on Claude Code: connect to a local model when your quota runs out
What do you use local models for? I'm asking generally about possible applications of these smaller models
kamov··on Ask HN: Share your personal website
https://kamoshi.org/

I have written from scratch an SSG and used my website to dogfood it. A lot of it is/was experimenting and learning how web works bottom up, so it is rough around the edges nearly everywhere, but practically everything is my own work - both the website and the way it is built.

I have a lot of ideas on how the website can be made better, but there is always way more things to do than time to actually do the things...

kamov··on The Internet Is a Net Negative
> This isn't democratization. It's feudalism with better marketing.

It's not "feudalism", it's just capitalism. Everything will be commodified in the end including your feelings and thoughts.

kamov··on Eurydice: a Rust to C compiler
You can use both Nix and Cargo at the same time, and they accomplish different things. Nix's purpose is more like rustup, except it works for each program on your computer
kamov··on Node.js is able to execute TypeScript files without additional configuration
Except in Python you can easily access the type hints at runtime, which allowed people to build ergonomic libraries such as Pydantic
kamov··on OCaml Syntax Sucks (2016)
What were the main issues you came across? What language would you prefer if you had to start from scratch and had the choice to go with anything else?
kamov··on Claude AI to process secret government data through new Palantir deal
Is a city council unethical too? It is a form of government as well
kamov··on Swift – A great language strangled by governance?
Rust used to have a GC in the past, as well as green threads and a bigger runtime. All of this has been explicitly removed before Rust 1.0. The reasons are well documented in many pull requests and RFCs for the language.

The way the async feature works in Rust is that the asynchronous function is just a syntax sugar that gets desugared into a state machine struct during compilation. The way this state machine works is similar to how one could achieve async in a language like C. It's unfair to dismiss everything as excuses given that the fundamental aim of the language is different.

In Rust async functions are not really colored because again - the async function is just a syntax sugar for a struct you can create and use in a sync context. The colors analogy is only really applicable in a language like JavaScript, where there's no way to poll an async function in a sync context.

kamov··on Go is my hammer, and everything is a nail
The fundamental issue is that humans contrary to machines will never know for sure whether whatever they do write is in fact correct code. One can think they are writing good and readable code, but that doesn't mean anything if the code is incorrect. And if you write lots of boilerplate that means more possible bugs. That's also why no one sane writes assembly (or increasingly these days C) unless they have to. We generally prefer more complex languages which put a constraint on the amount of possible bugs.
kamov··on Go is my hammer, and everything is a nail
I personally think that writing so called "terse, clever" (misnomer) code, is not an issue with the language, rather the user. Do we really want to have worse tools, just because some people are writing bad code? Clearly it's an issue with the software engineering process rather than language itself. A good language should allow a skilled user to write code as clear as day, while properly modelling the problem domain and making incorrect states logically unrepresentable. We have a tool for that, type system and a compiler.
kamov··on Go is my hammer, and everything is a nail
Sum types allow for more robust modeling of the API boundary in libraries, so in fact having a better type system is desirable even when "just gluing libraries", because it can make incorrect program states physically unrepresentable.
kamov··on Breakthrough a step toward revealing hidden structure of prime numbers
Elliptic curve cryptography can be broken by Shor's algorithm as well

https://arxiv.org/pdf/1706.06752

kamov··on Ladybird Web Browser becomes a non-profit with $1M from GitHub Founder
Whatever language you end up choosing, I hope it will be a memory safe one. Browsers' main purpose is to interact with the outside world, and they even have to run third party code (JS) all the time, so minimizing attack surface would go a long way I think
kamov··on Ladybird Web Browser becomes a non-profit with $1M from GitHub Founder
I think that pioneering the work of reimplementing web standards in not strictly OOP language will make the implementation easier for anyone else in the future, surely many of the problems exist by virtue of being done for the first time
kamov··on The economics of writing technical books
Not paying for a book when you have the full ability to do so is just greed.

But there are also those who come from places where monthly wage is like $200, so they wouldn't be able to afford a $30 book even if they wanted to

kamov··on Imhex: A hex editor for reverse engineers
Sadly this program seems to segfault on Wayland.
kamov··on Why Rust cannot replace C++
> If your language only supports adding more complexity and never simplifies syntax, it's inevitably going to be replaced. The same thing will happen with Rust in 20 years, it's just how things go.

I feel like this won't necessarily happen with Rust, because Rust isn't locked down by any standard, breaking changes can happen and there are also Rust editions which help with the whole process of updating the language. The "better Rust" might just be another revised edition of Rust

kamov··on Google Quantum AI
Knowing the industry there's a bunch of people out there on the payroll continuously knocking out these assets all day long every day.
kamov··on Deep Bug
Sorry, I don't want to be that guy, but I'm curious why use Java and not something like Rust? Is it because of the Lucene ecosystem?
kamov··on Tonal.js: Functional music theory lib
This isn't quite right, linked lists and trees in functional languages can be represented extremely succintly, i.e.

  data List a = Nil | Node a (List a)
  data Tree a = Leaf a | Node (Tree a) (Tree a)
there is nothing stopping you from writing something like this in JS

  const list = { kind: 'node', val: 3, next: { kind: 'nil' } };
And then using a switch case to navigate the list/tree matching on the kind field.
kamov··on Linux Crosses 4% Market Share Worldwide
Right about now KDE is moving to Wayland. KDE Plasma 6 released a week ago will use Wayland by default, with X11 being an opt in mode. I think that X11 while it might exist for the next decade, it will at best be a second class citizen, at worst a buggy and unsupported mess
kamov··on Pragmatic Versioning – An Alternative to Semver
This is approximately how most Haskell libraries are versioned

  -- PVP summary:     +-+------- breaking API changes
  --                  | | +----- non-breaking API additions
  --                  | | | +--- code changes with no API change
  version:            0.0.0.1

[0]: https://pvp.haskell.org/

[1]: https://pvp.haskell.org/faq/

kamov··on Poland's Most Famous Dish: Pierogi
That only happened in the first few weeks/months following the invasion, and since then people returned to calling them "Ruskie". The general consensus is that the name refers to the historical area of Ruthenia

https://en.wikipedia.org/wiki/Ruthenia

kamov··on VectorDB: Vector Database Built by Kagi Search
> I think it's better than TypeScript - fight me

I used Python type hints and MyPy since long before I used TypeScript, and I have to say that TypeScript's take on types is just plain better (that doesn't mean it's good though).

1. More TypeScript packages are properly typed thanks to DefinitelyTyped. Some Python packages such as Numpy could not be properly typed last I checked, I think it might change with 3.11 though. Packages such as OpenCV didn't have any types last I checked.

2. TypeScript's type system is more complete, with better support for generics, this might change with 3.11/3.12 though.

3. TypeScript has more powerful type system than most languages, as it is Turing-complete and similar in functionality to a purely functional language (this could also be a con)