HNHacker News
TopNewBestAskShowJobs

AdieuToLogic

3,750 karma · joined June 16, 2015

submissionscomments
AdieuToLogic··on The asteroid currently hitting front end web development
> A separate document explaining how a system works can go out of date.

Good documentation does not explain "the how", it captures "the why."

AdieuToLogic··on Apple caught off guard by AI demand for Mac Mini and Mac Studio
> I am convinced that there are paid posters on here.

Maybe. More likely is there are AI bots used to proliferate messages much cheaper than "paid posters."

> Why would anyone defend a billion dollar corporation so vehemently and not earn a single dime?

Because some like the products made by said billion dollar corporation?

Because others like to be contrarian?

Because not everyone is motivated by being paid?

Maybe, just maybe, people are different and have differing motivations not easily reduced into being "am I getting paid for this or not."

AdieuToLogic··on Run macOS Software on Linux
>> Apple's business model regarding macOS is to sell as many devices as possible capable of running that operating system.

> I don't agree that this particular trait of macOS makes an implementation at the layer WINE implements (full API+ABI) any harder or easier.

Here is my corroboration. Apple publishes XNU to the world in this repository:

  https://github.com/apple-oss-distributions/xnu
There is no such publication of the GUI frameworks required by macOS programs.

> I do think there is an argument to be made that Win32 was more straightforward ...

I did not make that argument. Instead, the position I hold regarding Windows is:

  ... an independently derived emulation layer is
  possible (not easy, just possible) ...
When an organizational goal is to sell devices, instead of operating system licenses, there is no need to engineer portability within the OS as the target hardware is well-known. This is a luxury MS-Windows never had, as its goal has been to run on as many disparate devices as plausible. Thus the "intrinsic portability" I referenced.

In fact, you have made my point for me:

> ... while slow change is useful, backwards compatibility expands the Win32 API surface area, since each API also needs to continue to support every way it was ever wrongly used.

AdieuToLogic··on Run macOS Software on Linux
Microsoft's business model regarding Windows is to sell an operating system capable of running on as many devices as possible.

Apple's business model regarding macOS is to sell as many devices as possible capable of running that operating system.

The former lends itself to intrinsic portability such that an independently derived emulation layer is possible (not easy, just possible), whereas the latter has the freedom of assuming device capabilities/features always present for any given release.

AdieuToLogic··on The safest job from AI may be writing
This is because understanding is an intrinsically personal experience. To convey it to others is to choose words, phrasing, and sentences which best express what is in one's mind.

Call it "intention", call it "understanding", call it "effective communication." The lack thereof is obvious and easily identified.

> Most success stories of LLM coding are ports. Because someone already did most of the job with the original code, sometime even twice if we count the tests.

Another way to phrase this is:

  Because someone already thought about the problem and what 
  needs to exist in order to solve it.
AdieuToLogic··on Run macOS Software on Linux
> What allows Wine to run so many Windows apps that there's not an equivalent for MacOS? Is it lack of interest? Is it a technical thing?

It is a technical thing.

The XNU[0] kernel, which underpins macOS and is detailed by the exceptional book "Mac OS X internals"[1], can theoretically run on many x86 and/or ARM machines. However, the issue with running macOS apps via other operating systems is not the OS, but instead are the GUI frameworks expected (i.e., Carbon[2], Quartz[3], etc.). These frameworks are intentionally written for Apple hardware/macOS distros. Which makes sense when viewing macOS as a selling point for selling Mac's.

0 - https://en.wikipedia.org/wiki/XNU

1 - https://openlibrary.org/books/OL17205558M/Mac_OS_X_internals

2 - https://en.wikipedia.org/wiki/Carbon_(API)

3 - https://en.wikipedia.org/wiki/Quartz_(graphics_layer)

AdieuToLogic··on Python's pre-declared constants are kinda weird
There's no doubt that hand-written language adapter libraries are less noisy than those generated by a tool such as SWIG. The thing is, debugging tool-generated adapter code is typically more category-based than individual use-case based.

IMHO, both approaches have merit depending on the situation. I lean towards using SWIG until and unless the situation warrants a hand-written solution due to the boilerplate nature of these types of libraries.

AdieuToLogic··on Python's pre-declared constants are kinda weird
> There are reasons all those Py libraries with C code didn't just do it in SWIG.

And those reasons are?

AdieuToLogic··on Python's pre-declared constants are kinda weird
> Python's strength is that it's easy to make C libs work in it.

SWIG[0] makes working with C libraries trivial for over a dozen programming languages; Perl, Python, and Ruby included.

0 - https://www.swig.org/

AdieuToLogic··on HelloAssembly: The smallest possible complete Windows application (2021)
>> The smallest meaningful program for MS-DOS was exactly 2 bytes ...

> Somewhat more meaningful was "INT 19h" (CD 19) ...

I seem to remember the smallest MS-DOS program to be CD 20h saved as a `.com`.

AdieuToLogic··on LLMs could control their host machines by exploiting inference engines
> I'd guess that prompt injection is the biggest risk in this setup ...

LLM poisoning[0] would be a much greater risk in a locally executed LLM than prompt injection, given that the LLM would be in an entirely controlled environment.

0 - https://www.anthropic.com/research/small-samples-poison

AdieuToLogic··on I'm becoming AI-blind
Prompt an AI with:

  What is the best chicken noodle soup I can make?
And you will get at least one recipe which surely is tasty.

Ask a person the same question and you might be told:

  One you make for someone you love.
This is the difference between a statistically probable response and understanding.
AdieuToLogic··on I'm becoming AI-blind
> Something is deeply wrong with AI generated output, and I say this as someone who is typically very impressed by AI.

It is because GenAI output has no thought behind it, as you identified in your previous paragraph:

> And when I force myself to read AI-generated text I realize I'm making my brain do creative work to impart meaning to the words. It is exhausting because my brain is literally trying to do a just-in-time rewrite of the text into something valuable.

You are searching for meaning in something which was not created to convey meaning. The text was, instead, the result of an extremely clever statistically based algorithm.

Not contemplation. Not thought.

AdieuToLogic··on There's no reason for software to be slow anymore
> What's the public transport of software development?

Understanding.

AdieuToLogic··on Show HN: Rex, a parallel functional language for scientific workflows
It was for me and I intended to comment regarding same.
AdieuToLogic··on Rust Glancer: Rust LSP using 100x less RAM
> Not if an LLM writes your code. I get thousands of lines of high quality Rust per day without ever stepping into VScode.

LSPs are orthogonal to both LLMs and VSCode. For example, see Metals[0].

0 - https://metals-lsp.org/

AdieuToLogic··on HTML Can Do That
> I don't often have to write frontend code, but when I do, there is very little in terms of interactivity you cannot do with HTML these days, worst case a little sprinkle of something like HTMX.

And for some front-end form field validation in the spirit of htmx, ParsleyJS[0] is quite nice. Below is one way to enable the former to support the latter:

  htmx.defineExtension (
      'parsley-validation',
      {
          onEvent : function (name, evt) {
              var allow = true;
  
              if (name === 'htmx:load')
                  $(evt.target).parsley ();
              else if (name === 'htmx:confirm') {
                  var theForm = $(evt.target).parsley ();
  
                  theForm.validationResult = allow = theForm.isValid ();
  
                  if (!allow)
                      evt.preventDefault ();
              }
  
              return allow;
          }
      }
  )
0 - https://parsleyjs.org/
AdieuToLogic··on The little-known winstart.bat batch file
> Windows/386, and later 3.x and 9x, was a virtual machine monitor that could run 16-bit operating systems with 32-bit drivers.

Those were not "DOS-based Windows". If your position is Windows/386 et al were OSs which supported running MS-DOS programs, I agree. But that is not "DOS-based" so much as "can run DOS programs."

AdieuToLogic··on Go 1.27
A friend of mine years ago told me, "given enough time, every programming language will evolve into a LISP[0]."

I laughed at the thought in the moment and now understand the wisdom shared with me.

0 - https://en.wikipedia.org/wiki/Lisp_(programming_language)

AdieuToLogic··on Go 1.27
Regarding generics (a.k.a. "templates"):

> However, the original announcement makes the intent of the project clear: "Not yet", not "never". They were always planned to be accepted into Go.

This is an exceedingly charitable interpretation of the position held by at least one Go language designer (Rob Pike)[0]:

  Notice that Robert said C was the starting point, not C++.
  I'm not certain but I believe he meant C proper, especially
  because Ken was there. But it's also true that, in the end,
  we didn't really start from C. We built from scratch,
  borrowing only minor things like operators and brace
  brackets and a few common keywords.

  In the end of course it came out quite different from
  either C or C++. More different even than many realize. I
  made a list of significant simplifications in Go over C and
  C++:

  ...

  - no templates

  ...
0 - https://commandcenter.blogspot.com/2012/06/less-is-exponenti...
AdieuToLogic··on Go 1.27
> "May well be added at some point" it said and added they were at some point.

That is a very selective quote which does not reflect the context I provided. So I will extract a selective quote which negates the above:

  We haven't yet found a design that gives value
  proportionate to the complexity ...
AdieuToLogic··on PostgreSQL for Everything
> It can do that.

As the old saying goes; just because you can do something doesn't mean you should do it.

> I think that the "use Postgres for everything" messaging was a necessity, even if it is overstated. Use it until you can demonstrate it doesn't meet your near term needs. When that happens, shift.

The problem with this approach is, once "use PostgreSQL for everything" is identified as being no longer be feasible, it has already become an inextricable component underpinning system functionality. Thus making "[w]hen that happens, shift" extremely difficult.

Contrast the above with only using PostgreSQL (or any other RDBMS) to manage data and their relationships, eschewing stored procedures as well, and the "when <insert condition> happens, shift" decision becomes much more feasible to entertain.

AdieuToLogic··on Go 1.27
> Generics were always planned, of course ...

This is provably incorrect.

The position held for many years by the language authors was[0]:

  Generics may well be added at some point. We don't feel an 
  urgency for them, although we understand some programmers 
  do.
  
  Generics are convenient but they come at a cost in 
  complexity in the type system and run-time. We haven't yet 
  found a design that gives value proportionate to the 
  complexity, although we continue to think about it. 
  Meanwhile, Go's built-in maps and slices, plus the ability 
  to use the empty interface to construct containers (with 
  explicit unboxing) mean in many cases it is possible to 
  write code that does what generics would enable, if less 
  smoothly. 
Once the community could no longer be held back, the golang FAQ presented a very different position[1]:

  The Go 1.18 release added type parameters to the language. 
  This permits a form of polymorphic or generic programming.
0 - https://web.archive.org/web/20170102202940/http://golang.org...

1 - https://go.dev/doc/faq#generics

AdieuToLogic··on PostgreSQL for Everything
Sometimes to scale is "continue to satisfy SLAs as service usage increases" and other times to scale is "successfully evolve functional capabilities over time."

While the GP may have been referencing the former, embracing "PostgreSQL for Everything" often prohibits the latter.

AdieuToLogic··on The little-known winstart.bat batch file
> I didn't mean to imply there was something "less" about the talent creating the DOS-based Windows OS. I think it's a marvel of engineering for economy and constraints.

"DOS-based Windows" was not an OS. It was effectively a program which provided a green thread[0] execution model for cooperative processes to execute within and had the reliability one would expect from same.

0 - https://en.wikipedia.org/wiki/Green_thread

AdieuToLogic··on Go 1.27
> Generic methods are a huge win for the language. I've been waiting on these kinds of improvements to the type system ...

It's funny that you and many others have found the introduction of "generics" in Go to be highly valuable, considering one of the motivations for Go's existence was:

  Its designers were primarily motivated by their shared dislike of C++[0]
One of the language features C++ provides, "templates", was explicitly rejected by the language authors as being antithetical to Go philosophy[1]. Thompson put it bluntly:

  DDJ: In the presentation before the awarding of the Japan 
  Prize today, you were quoted on the distinction between 
  reasearch and development. [The former, Thompson stated, 
  was directionless, whereas development had a specific goal 
  in mind.] So in that context, is Go experimental?
  
  KT: Yes. When the three of us [Thompson, Rob Pike, and 
  Robert Griesemer] got started, it was pure research. The 
  three of us got together and decided that we hated C++. 
  [laughter] [2]
And now, years later, generics are "a huge win."

0 - https://en.wikipedia.org/wiki/Go_(programming_language)#Hist...

1 - https://commandcenter.blogspot.com/2012/06/less-is-exponenti...

2 - https://web.archive.org/web/20110521080746/http://drdobbs.co...

AdieuToLogic··on How do functions like alloca allocate memory from the stack?
>> formerly known as OS-X

> It was never OS-X, it was OS X ...

If my worst sin is an introduction of a hyphen, then I can live with that.

AdieuToLogic··on How do functions like alloca allocate memory from the stack?
Speaking of debuggers...

I still twitch whenever someone says "use ddd" and they are not referring to Evans' seminal work.

:-D

AdieuToLogic··on How do functions like alloca allocate memory from the stack?
> One thing that scares me a little is whether there are younger developers, say, 25-40, who can and want to pick up the mantle of Windows internals gurus.

A similar "brain drain" has occurred in macOS (formerly known as OS-X) over the years, as evident in man page documentation for "newer" daemons shipped. An easy way to verify this is to run:

  ps -A | awk '{ print $4 }' | grep 'libexec/.*[a-z]d$'
And compare the man pages for the daemons running with the man page for `launchd`.

While this exercise is illuminating, it is also depressing IMHO.

AdieuToLogic··on Don't classify, hallucinate
> I've worked on expert systems.

I also have worked on/with expert systems.

> I don't agree that they achieve "simulated intelligence". They're preprogrammed with a set of domain-specific rules that are trivially simple by comparison to even relatively simple and small neural networks.

This position does not account for fuzzy logic[0] nor an expert system's ability to produce an answer of "I do not know and here is why", which neural networks are incapable of doing.

I am not saying expert systems are "better" than ANNs as both are algorithms having significant value for what they provide. What I am saying is neural networks are pattern-matching algorithms, quite useful in their own right, and do not possess the ability to identify the lack of existence.

0 - https://en.wikipedia.org/wiki/Fuzzy_logic

← PreviousPage 2 of 34Next →