HNHacker News
TopNewBestAskShowJobs

HellsMaddy

3,099 karma · joined October 24, 2016

Founder, Sodium AI. https://na.ai

https://github.com/b0o

submissionscomments
HellsMaddy··on Essence: Desktop operating system built from scratch
I wasn't really that interested in this project from the website, but this video sold me. Super cool, wow!
HellsMaddy··on dwm
What’s a pager in the context of a window manager? I’m aware of CLI pagers like less but I’ve never heard the term used with WMs.
HellsMaddy··on OCaml Multicore merged upstream
+1 for CS 3110 (OCaml Programming: Correct + Efficient + Beautiful), and the video series is similarly excellent: https://www.youtube.com/playlist?list=PLre5AT9JnKShBOPeuiD9b...
HellsMaddy··on Why might you run your own DNS server?
That’s awesome, thank you for the link!
HellsMaddy··on Why might you run your own DNS server?
You wouldn’t. But the CA that issued the certificate could still revoke it, correct? E.g. https://letsencrypt.org/docs/revoking/#using-a-different-aut...
HellsMaddy··on Why might you run your own DNS server?
Tangentially related: I’ve wondered what would happen if you purchased a domain name that had previously been owned by someone else and they had obtained a TLS certificate from a CA with an expiration date beyond when your ownership began. This seems like a good tool to find such a certificate, but if you found one what would you do? Would the holder of the certificate be able to MITM or otherwise impersonate you? Would there be a way to revoke the certificate (I’m guessing you could contact the CA that issued it?)? Do CAs automatically revoke certificates when domain ownership changes?
HellsMaddy··on Show HN: I made a modern web UI for Wikipedia
Reader mode is nice when it works, but since it’s hueristics-based I find it often either misses important content like images and code blocks that should be included with the article, or includes text that shouldn’t be there.

Even if it selects all the right elements, syntax highlighting doesn’t work which is an issue for me since a lot of the articles I read involve code.

These are issues with every reader mode I’ve tried – iOS Safari, iOS/desktop Firefox, desktop Chrome.

I wish there were a standard CSS media type that sites could implement, like `@media reader`, to help specify which elements should be included and to support things like syntax highlighting.

HellsMaddy··on ZSH Completions How To
These things are not mutually exclusive, right? I use both to great effect.
HellsMaddy··on DJI Mavic 3 Drone
This product page is phenomenal. Kudos to the frontend engineers, designers, and artists.
HellsMaddy··on Shodan Search Engine: Search Engine for the Internet of Everything
The cost of the one-time payment is behind a registration wall. It’s $49 for those curious.
HellsMaddy··on Beware of 'shrinkflation,' inflation's devious cousin
I've been shopping on Instacart a lot during the pandemic and I've noticed a related phenomenon: packaging designed to make products look bigger than they really are, especially in online photos. It's not necessarily a new thing, but the online photo aspect is somewhat novel because you don't get to see the product in context.

For example, a jar of Jalapenos, product photo: https://i.imgur.com/mprWr6R.jpg

In reality, the jar's cross-section isn't circular as it appears, it's an ellipse/oval: https://i.imgur.com/dXDUOR9.png

Only the first photo was included in the item listing. When the groceries were delivered and I pulled out the jar, I was so surprised by the odd football-like shape that I couldn’t stop laughing for a few minutes at how well they’d fooled me.

Another common thing to see is familiar product packaging that is just “scaled down”. Everything about the packaging looks the same or very similar, but smaller - especially fonts. This deceives the eye into believing the product is much larger. I recently fell for this when shopping for some conditioner. The packaging is not exactly the same but close enough to fool me at a glance:

What I bought: https://i.imgur.com/MdAuhS0.png

What I expected: https://i.imgur.com/MGxdD0d.png

I'm inclined the believe this is on purpose because in real life, the fonts are way too small to read comfortably. If not trying to mislead, I would expect the packaging to be designed to be legible, right?

It's especially frustrating because I usually would've just paid more for the larger size.

HellsMaddy··on Unison Programming Language
After reading through the Unison tour [0] with an open mind, I actually think it makes excellent use of existing tools through its "scratch files" approach [1].

The gist of it is that you can check out sections of code that you want to work on as a plain text file and you can do whatever you’d do with a text file: open it in your editor, syntax highlighting, copy/paste, whatever floats your boat. The cool part is that the “Unison codebase manager” (ucm) watches the scratch files and re-parses them whenever a file changes. I presume any syntax or type errors will be immediately shown in the ucm output. Cool, you say, but we can already do that with file watchers like `entr` and traditional languages, so why should I care? Well, it goes further.

You can start a line with a > character followed by an expression and the expression will be evaluated when you save the file, printing the output inside of ucm. It’s basically a REPL that you control from your editor. Cooler still, building on this concept is the `test>` prefix which, you guessed it, creates a unit test and runs it inside ucm, showing you whether it passed or not. And as a consequence of Unison’s content-addressable nature, after a test has run for a given expression’s content hash, the result is cached and the test doesn’t need to be re-run unless the hash changes (impure functions are soooo 2020). After you’re done with the scratch file, you can run `add` in ucm to add either certain parts (I think) or all of the work you’ve done in the scratch file to the source codebase, and this includes the tests that you wrote along with their cached values (I think)!

I personally find this workflow to be very compelling. To me, this approach is much akin to the source control that we do today, but it's actually aware of the context and meaning of the changes. Git, on the other hand, relies on weak heuristics to figure out what changed between versions of text-based files.

I am very happy to see projects that push beyond the boundaries of the paradigms we’ve been stuck in for the past 60+ years. I also find it quite funny that Hacker News, a forum centered around startups, can often be so conservative when it comes to new technologies.

[0]: https://www.unisonweb.org/docs/tour

[1]: https://www.unisonweb.org/docs/tour#unisons-interactive-scra...

HellsMaddy··on Replit used legal threats to kill my open-source project
Is it ironic that Amjad’s last tweet before this post hit the front page links to a hashtag on his website where people are building clones of famous games like Bejeweled, Mario, and Zelda?

https://twitter.com/amasad/status/1401760537390714882

https://replit.com/apps/kaboom

HellsMaddy··on Ask HN: Favorite Blogs by Individuals?
I highly recommend “A half-hour to learn Rust” if you’re interested in Rust but haven’t tried it yet. The article is very engaging with many small snippets that make sense to a person with a good programming background but no specific Rust knowledge.

It partially inspired me to start keeping a list of similar learning content over at https://github.com/b0o/awesome-by-example

HellsMaddy··on Ziglings: Learn the Zig programming language by fixing tiny broken programs
I love these sorts of resources! I just created an "awesome list" [1] to keep track of resources specifically centered around learning by example. I've only got a few so far, several of them being from this thread. Contributions welcome!

[1]: https://github.com/b0o/awesome-by-example

HellsMaddy··on Activists rally to save Internet Archive as lawsuit threatens site
I'm surprised and disappointed that the IA ever thought this would go over well, though I do respect the reasons for which they took these actions.

Circumstances around the COVID-19 lockdowns have been very unusual. If you consider the hundreds of millions (+?) of books in libraries around the world that were temporarily inaccessible to people, including children and students, I feel the IA's actions were somewhat justified, perhaps not legally, but at least morally. Young people losing months worth of time that could have been spent reading and learning constitutes an emergency in my mind, and the IA stepped up to help lessen the societal damages.

You could consider that because these many millions of book licenses were temporarily "invalidated" by circumstance, the Internet Archive simply rebalanced the scales by providing the same people who would have been deprived of books at their local/school library a similar means to access them. Such a scenario probably never even crossed the mind of anyone involved in IP law before COVID-19, but if it had there might be some provisions on the books for cases like this.

On another note, I would actually expect publishers' sales to increase during the lockdowns for the above reasons of books being held in purgatory at libraries. That publishers should profit from a global crisis in this way seems wrong.

Again, none of this is to say that the Internet Archive's actions were legally justified, but I think to equate them to pure piracy is ignoring the nuance and context of this extraordinary situation.

I desperately hope the publishers drop the suit and come to an agreement with the IA that doesn't result in the loss of this treasure trove of knowledge or the end of the organization.

HellsMaddy··on Htmx – high power tools for HTML
Very cool. This seems very useful for lightweight UIs that need a small amount of interactivity, but not enough that a more heavyweight framework like React would make sense. Am I on the right track?
HellsMaddy··on Hacking up your own shell completion
I've been using a zsh plugin called fzf-tab[1] for the past few weeks and it's been awesome. So many use cases:

- of course, command completion

- type `echo $` and press tab - fzf through all your environment variables

- type `command ` and press tab - fzf through all programs available in your PATH

- type `builtin ` and press tab - fzf through all of zsh's builtin functions

- select multiple results at once, they'll be concatenated with spaces

- pick files, with the ability to press / to select a directory and automatically restart fzf-tab inside of it

1: https://github.com/Aloxaf/fzf-tab

HellsMaddy··on Just tell me how to use Go Modules
Something which isn't mentioned here and is difficult to find precise information even in the official docs is how versioning works - specifically, how do you specify what version your module is? Semver is mentioned, but not how to define your version.

The short answer is to use git tags. You need to include the `v`, e.g. `v1.2.3`. If you don't use git, I don't know the answer.

← PreviousPage 7 of 7