HN user

netbioserror

1,468 karma
Posts2
Comments464
View on HN

I know the link is by the creator of Odin, but I can speak personally for my passion for seamless tools. I have ever had as seamless, high-flow of a development environment as I do now using Nim with Sublime on Mint at work. Every one of these tools is intended to slide out of the way of your thoughts, and they do so deftly. I'm never fighting the tools; instead, the tools are facilitating me transforming my thoughts into compiled programs. All of my time and energy is spent formulating a sound model rather than fiddling with configs or fighting obtuse features.

Calisthenics is a really easy way to push intensity at basically 0 risk of injury. They're all compound and depending on the variation could require high reps, but between push ups, pull-ups, squats, their numerous variations, and accessory work, I would challenge anyone to actually injure themselves while also being able to push to true technical failure.

I recently learned, through visual intuition, how the relative perception of time between two subjects changes as relative speed between them changes. It's because they are observing each other from an "angle" in the time dimension. And in that time dimension, angles do not trace circles, they trace paraboloids.

If I'm remembering correctly, this is also why the energy required to "reach" the speed of light for subjects with mass parabolically goes to infinity. I'm also guessing it can directly trace a proof down to why kinetic energy increases quadratically.

Man, all of the confusion and gnashing of teeth in the C++ world really makes me grateful for my job. Smaller company, I solo develop a central module on the product stack, and I was able to evaluate languages for the project.

Nim became the obvious choice, and I wasn't a fanboy before. Simple semantics, in a very functional style oriented around data's value. References and identity have to be trapdoored. Everything is single-owner unique lifetimes by default, no annotations or best-practices required. You end up writing extraordinarily functional/procedural code that produces very fast and memory-safe binaries, it fits right into C++'s niche.

The only objection I could steel man was that the standard library and most packages are composed of relatively pure functions that return new values, so allocations are happening there. But when types as complex as data frames can be semantically used as just values, and you know they have scoped lifetimes by default, the benefits are obvious.

With all of C++'s insanely specific, subtle, implicit, compiler- and platform-dependent behaviors, I've often wondered when the industry will finally consider its dominance an artifact of first-mover inertia and simply move on. There are vastly better ways to do all of the things it does, while easily exposing levers for the the things it's considered to do exceptionally well.

Why Janet? (2023) 2 months ago

Janet is ALMOST an incredible tool...but what I want is a very clear bifurcation between the standard library's stateful mutating procedures, and stateless value-returning functions. I ran into that wall hard trying to make something non-trivial.

It also turns out that the mix is due to the standard library leaning on raw C loop iterations underneath whenever it can. Which is great! But it confuses the library's interface paradigms.

The most fun I have playing Magic is a "Reasonable Cube" sealed draft:

Buy or make a cube with a very normal distribution of cards, nothing crazy (I bought a cube made by Card Kingdom some time ago). There will be 90 spells per each of 4 players. Shuffle the whole deck, and deal out the 90 per player. Now you simply make 40 card decks, typically with ~25 spells each. There will be lots of wiggle room for sideboards or even side decks. Then run a little tournament.

The games are usually that ideal Magic scenario: Nail-biting back and forth gameplay, where anything powerful has a cost and games come down to the wire.

O(x)Caml in Space 2 months ago

Nim does much the same. It prefers the stack, wraps dynamic heap types in value-semantic unique pointers by default, and avoids implicit copies wherever it can. I could see compiled languages trending in the stack-managed direction long term.

A creative's best work is born from constraints. It's why PICO-8 exists for people nostalgic for that specific olden era. I think the PSP could make a fantastic target for meatier handheld-focused games that put design first, as many of its second-tier games did. Lots of great strategy, platforming, and racing. A beautiful wide-screen with just enough resolution, just enough horsepower to drive it with rich, saturated 2D and some 3D, and a basic enough control scheme to rule out the lame tech-demo category of 3D action games. I cannot describe how much WipeOut, Namco Museum, and Tactics Ogre time I had on my PSP.

Are you seriously suggesting an encyclopedia should be packed with crackpot conspiracy theories, academic charlatanry, quackery, and agitprop? Or does that not defeat the point? Keep the author's biography, but his "theories" are best left for a footnote in the biography, or websites that explicitly serve as a museum for failed ideas.

I've produced a staggering variety of documents with Typst. Books, booklets, slides, cards, documentation, everything. In most cases I only need a minimum of custom styles and behaviors at the top, and very occasionally a whole styling module. Blows the rest of these tools out of the water full stop.

If you use Nim, it's value semantics by default. Everything (and I do mean everything, all types primitive to composite) is managed by the stack, including stuff that needs to hold a heap pointer. All lifetimes are scoped. You only get ref counted types when you opt in.

It's astoundingly easy to build software with that behavior set. Even if the occasional copy is necessary, you're paying a far lower cost for it than for an interpreted language. Slice off a couple important components into stateless executables built like this, and it's clean sailing.

My prolific Typst use, along with quickly improving side-by-side editors like Typesetter, are rapidly diminishing (in my eyes) the reasons for WYSIWYG to be. Sure, normies need it, yadda yadda. Is it worth the staggering cost? The file format and GUI complexity?

I really wish the FreeCiv team would focus on their SDL build instead of all these fiddly and very fickle UI toolkits. They have an incredibly cool hex-based hybridized Civ 2/3 ruleset that might be the best of all worlds, IF it could actually start consistently on all systems. Drop GTK and Qt, clean it up, add some modern quality of life keybinds and UI info, make it the universal target.

Speaking from personal experience, Godot has the sneakiest potential. It has all the UI components and flexible layout containers you could ask for, a signaling system that lets you put the methods from less relevant components in the scripts for more relevant ones (making for a more compact project), and you can also manually compile slim template builds for cleaner distribution. There's a future there.

The greatest failing of modernity is its refusal to accept an uncomfortable reality uncovered by biology and psychology: That certain strongly negative personality traits are built-in pathologies which nature tries out to explore what is possible. The neural pattern that is "Trevor Milton" is not him without those intensely compulsive lying behaviors.

The social taboos of cultures around the world are fighting a ceaseless battle to reign in these endemic outliers.

This resonates as true, as long as the fundamentals of your tools are there. Picking interpreted languages or browsers as targets shoots you in the foot and sets you magnitudes behind when performance starts to matter. But if you're using a native-compiled language with value- and move-semantics, immutable data, and a composable type system, it's shocking how easy it can be to write obvious, maintainable, fast programs that perform under pressure, even when you're not being clever.

Thankfully newer languages like Nim, Odin, and Swift lean hard into value semantics. They drastically reduce the cost of focusing on data structures and writing obvious algorithms. Then, when bottlenecks appear, you can choose to opt into fine-tuning.

Side-by-side, it's incredibly clear that the newest version is total UX garbage. Monochrome icons were a complete mistake, in basically all cases everywhere. A mix of the Lion color, shape/texture, and spacing, plus the Catalina sidebar, would be the best.

I really REALLY love the Lion icons. Colorful but subdued with only mild saturation, distinctive shapes, strong line borders with very slight halo, and mild gradients to make them pop.

I've recently made a dozen vastly different projects with Typst, ALL of which would have created dependency hell, syntax noise, and hours of extra pointless work in Latex. It's such a clear win at this point it's embarrassing.

Why Objective-C 5 months ago

I bounced off of Objective-C not because of its message-passing OO. That was the actual cool part. I bounced off because of the insane amount of boilerplate prototyping and headers required to use it.

I think every OO language should be using Smalltalk's message-passing style rather than holding hard references, and Objective-C is a great model. But discard the rest.