HNHacker News
TopNewBestAskShowJobs

ainar-g

3,756 karma · joined June 7, 2015

submissionscomments
ainar-g··on Extra Big Ass Intelligence
Saudi-Supported, for 7S.
ainar-g··on Tcl/Tk 9.1
It's in decent company in the Redmonk graphs[1], in the vicinity of Smalltalk, Mathematica, D, and Haxe.

[1]: https://redmonk.com/sogrady/2026/04/14/language-rankings-1-2...

ainar-g··on Microsoft patches Windows and Excel – breaks audio, remote access, and paste
> This constant slide in quality over the past few years has me looking to Linux as an option.

Just out of curiosity, what's holding you back? I'm not trying to evangelize or something, it's more of a personal collection of reasons various people have provided that I have.

ainar-g··on Go 1.27
Re unions:

https://github.com/golang/go/issues/76920

You might want to follow this proposal, if you aren't already. It's the most recent one, and it's supported by quite a few “core members” of the Go Team. I don't think it'll land in 1.28, but I like the fact that it's still a feature that's being actively discussed.

ainar-g··on Bun Rust rewrite: "codebase fails basic miri checks, allows for UB in safe rust"
https://doc.rust-lang.org/reference/behavior-considered-unde...
ainar-g··on Show HN: I speak 5 languages. Common apps taught me none. So I built lairner
Have you ever learned a language? Because that's what it is for a very large percentage of people.
ainar-g··on We're learning more about what Vitamin D does
Which is why the Soviet government used “ultraviolet baths” to make sure that children up North got their vitamin D.

https://www.nationalgeographic.com/photo-of-the-day/photo/ul...

ainar-g··on Microsoft is plugging more holes that let you use Windows 11 without MS account
There's always ReactOS[1], a project for a bug-for-bug compatible Windows clone. It used to mostly aim at Windows 9x compatibility the last time I'd checked, though, but that could probably change. And if anyone wants to create a Win7 clone, at least some of the groundwork has already been made.

[1]: https://reactos.org/

ainar-g··on Russ Cox is stepping down as the Go tech lead
Thank you, rsc, for all your work. Development in Go has become much more enjoyable in these 12 years: race detector, standardized error wrapping, modules, generics, toolchain updates, and so on. And while there are still things to be desired (sum types, better enum/range types, immutability, and non-nilness in my personal wishlist), Go is still the most enjoyable ecosystem I've ever developed in.
ainar-g··on C23 is cancelled due to missing the publication deadline
Source on the reasons, from the editor: https://pony.social/@thephd/112791335889843647.
ainar-g··on gRPC: The Bad Parts
If I recall correctly, ProtoBuf has a reflection layer, and it's probably using that.
ainar-g··on gRPC: The Bad Parts
Re. bad tooling. grpcurl[1] is irreplaceable when working with gRPC APIs. It allows you to make requests even if you don't have the .proto around.

[1]: https://github.com/fullstorydev/grpcurl

ainar-g··on How GCC and Clang handle statically known undefined behaviour
> While the compiled programs stayed the same, we no longer get a warning (even with -Wall), even though both compilers can easily work out statically (e.g. via constant folding) that a division by zero occurs [4].

Are there any reasons why that is so? Do compilers not reuse the information they gather during compilation for diagnostics? Or is it a deliberate decision?

ainar-g··on Gio UI – Cross-platform GUI for Go
Ah, so extremely localized uses of pointers, got it, thanks.
ainar-g··on Gio UI – Cross-platform GUI for Go
That could be true, but I've done a few optimizations of allocations in Go code, and I don't recall pointers to stack values ever being optimized (unless the entire branch is removed, of course). If anyone could provide an example of the code that does pointer operations yet doesn't cause allocations, I'd appreciate it!
ainar-g··on Gio UI – Cross-platform GUI for Go
Whenever you do:

  v := interfaceType(concreteTypeValue)
in Go, what you're actually doing on a lower level is:

  dataPtr := &concreteTypeValue
  typePtr := typeData[concreteType]()
  v := interfaceData{
          data: dataPtr,
          typ: typePtr,
  }
The first line here is the allocation, since (at least, the way I recall the rule) in Go pointers never point to values on the stack, so concreteTypeValue must be allocated on the heap. The rule about pointers not pointing to the stack is there to make it easier for goroutine stacks to grow dynamically.

See https://go.dev/doc/faq#stack_or_heap.

ainar-g··on Demystifying the protobuf wire format
To be fair, if that's what you need ProtoBuf isn't the only option. Cap'n Proto[1], JSON Schema[2], or any other well supported message-definition language could probably achieve that as well, each with their own positives and negatives.

[1]: https://capnproto.org/

[2]: https://json-schema.org/

ainar-g··on Smart Pointers in (GNU) C
There is a proposal to get this using the "defer" keyword into either the next C revision or the one after that[1].

[1]: https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3199.htm.

ainar-g··on OpenBSD – sshd(8) split into multiple binaries
Privilege separation[1], most likely. If your system needs to do three things, it could either just do all of them using a single executable requiring all three permissions (thus also theoretically allowing an attacker to use it to do all three things as well) or split your system into three executables, each only having the permission to do one thing (thus reducing the amount of potential damage).

[1]: https://en.wikipedia.org/wiki/Privilege_separation

ainar-g··on 'Anti-sex' beds have arrived at Paris Olympics
This makes me thing of the stories I've heard stories from those who lived in communal apartments back in the U.S.S.R. days. Couples who had a creaking bed and wanted to go at it at night would just do it on the floor instead of on the bed. Which in turn makes me think if those beds are just some kind of kickback scheme, because I can't be the only one who thinks of suck obvious solution, can I?

Edit: Seems to be fake news: https://www.snopes.com/fact-check/anti-sex-beds-2020-olympic....

ainar-g··on Vala Programming Language
Why the quotation marks? If I recall correctly, Vala compiles (by way of C) into native code.
ainar-g··on Layout of Rust's u128 and i128 changed
IPv6, too. (Unless you also need interface IDs for link-local addresses.)
ainar-g··on Prolog language for PostgreSQL proof of concept
On a related note, have there ever been extensions for PosgreSQL/SQLite/any other FOSS DBMS that would allow using Tutorial D[1] (the Third-Manifesto one, not to be confused with Walter Bright's D language) to define and query data? In particular, I feel like PostgreSQL's CREATE TYPE[2] feature would allow for easier bridging between SQL and Tutorial D.

Unfortunately, searches for “PostgreSQL Tutorial D” don't issue useful results for obvious reasons.

[1]: https://www.dcs.warwick.ac.uk/~hugh/TTM/index.html

[2]: https://www.postgresql.org/docs/current/sql-createtype.html

ainar-g··on Ada 95: The Craft of Object-Oriented Programming
A feature that combines well with range and enum types are typed indexes of arrays:

  TYPE
   TWeekday = (Monday, Tuesday, Wednesday, Thursday, Friday, Saturday,
    Sunday);
  VAR
   WeekdayNameIndex : ARRAY [TWeekday] OF ShortString = ('Mon', 'Tue',
    'Wed', 'Thu', 'Fri', 'Sat', 'Sun');
Now `WeekdayNameIndex` is a properly type- and range-checked look-up table.

It's really sad that these simple joys of Pascal are still lacking from a lot of mainstream languages.

ainar-g··on My Impressions of Hare
Re. the shape of the code, it's probably a matter of habit, as I have the complete opposite experience reading code in languages with exceptions. That is, I find that there is too much happening within a few lines, wondering which line can explode and in which ways, heh.
ainar-g··on My Impressions of Hare
Funny you mention Go, because it's my main language these days. And I have to be honest, I don't have the issues you're mentioning. 99 % of loops in the code I review is the plain for-range type, and whenever it's something more complex, I usually am/recommending splitting away the body. Also helps with complexity metrics (and having at least a maximum cyclomatic complexity checker for your code is a must, imo). And if your error handling is repetitive, there is a high chance you're not adding the important context to errors and/or not checking if the context is added in the reviewed code.

A thing I've discovered that helps me a lot that don't see mentioned at all is to always review code by checking it out on your machine and using your editor to inspect it. Maybe it's just me, but there is something about seeing the code in your own environment as well as having all of your tools to e.g. see where a method is used helps massively.

ainar-g··on My Impressions of Hare
I think one of the reasons might have something to do with the fact that with more experience—and thus, often, a higher position—comes the responsibility of reading more code. Often, you come to a point where you are reading more code than you are writing, i.e. when conducting code reviews or investigating an issue. And while the code in more complex languages can still obviously be readable, simple languages force the code to be at least somewhat readable even at its worst.
ainar-g··on NetSurf Web Browser
It does have optional support for JS thru Duktape[1] Engine, if I recall correctly, but that engine doesn't support a lot of modern JS stuff, mostly being limited to ECMAScript 5.

[1]: https://duktape.org/

ainar-g··on HTML hacks that shaped the Internet
I've looked up some JSSS code examples, and it seems like it's pretty much the only type of code where the "with" keyword makes sense:

  <style type="text/javascript">
  tags.H1.color = "red";
  tags.p.fontSize = "20pt";

  with (tags.H3) {
    color = "green";
  }
  with (tags.H2) {
    color = "red";
    fontSize = "16pt";
    marginTop = "4cm";
  }
  </style>
ainar-g··on Ubuntu 24.04 LTS Committing to Netplan for Network Configuration
I was hoping that Canonical has higher standards when it comes to server software, as opposed to something like Snapcraft, but reading this makes me think that maybe they both were developed by the same team.
Page 1 of 21Next →