HNHacker News
TopNewBestAskShowJobs

cytzol

2,811 karma · joined February 5, 2009

Personal site:

- https://bsago.me

Some of my software projects:

- https://the.exa.website

- https://dns.lookup.dog

- https://specsheet.software

submissionscomments
cytzol··on Can't you just right click?
> The blog post was written in the context of the widely reported story of Apple threatening to terminate the developer account of Epic Games, which would prevent them from signing and notarizing their Mac software.

This part is key. It shows that Apple's signing and notarising requirement isn't about money, nor is it about security. Epic broke the rules of the iOS store, and now they'll be forbidden from developing on a completely different platform, just because Apple doesn't like them.

cytzol··on Can't you just right click?
> As much as we all like to call out Apple sometimes for how they don't take good care of their developers, adding hoops for your developers to jump through is not a great idea.

Why not?

Apple has been pushing very hard lately to increase their 'services' revenue, by getting users to sign up for Apple Music, iCloud, etc. It makes perfect sense for Apple to force developers to jump through hoops, not because it makes the developers' lives worse, but because it gives Apple a leg up! Some examples:

• When launching Chrome for the first time, you have to opt-in to Chrome notifications, but macOS pops up its own notification telling you to use Safari instead.

• Similarly, Apple News notifications are allowed by default, but you have to explicitly opt-in to notifications from other news websites.

• Again, similarly, you'll get Apple Music adverts through push notifications, something that's explicitly disallowed in the App Store guidelines.

• System Preferences gets an obnoxious (1) badge next to it, because I haven't signed in to iCloud.

I use SyncThing, rather than iCloud Drive. It definitely benefits Apple to waste the SyncThing developers' time and money keeping up with things the iCloud Drive team doesn't need to deal with — do you really think the sort of company that pulls shit like the above would do anything different?

cytzol··on Can't you just right click?
Don't forget that after you've paid them your money, they can revoke your certificate and spread lies about your software, and there's nothing you can do!

https://blog.charliemonroe.net/a-day-without-business/

cytzol··on Mastodon 3.2
I'd go a little bit further here: I run Mastodon on a 1 GB VPS as well, but I found I had to make the swap file permanent to stop it from running out of memory. It's not super heavy but it is heavy, and even though swap is slow, it still runs fast enough.
cytzol··on Etcd, or, why modern software makes me sad
I feel like you are several metaphors removed from me right now. Rowhammer? Spectre? I am just trying to serve a couple of websites here! I'm not going to buy another rack of servers just to isolate the two. Have you seen how expensive those things are?

> Anyone selling you on containers as a security measure is pitching snake oil. They are a resource allocation & workload scheduling tool.

I agree with both of these statements — and I suspect this is where it all falls down. When you put all your applications in containers, you are not done with security, no. Nevertheless, I've found great value in having one file per version per application, being able to upgrade my dependencies one-by-one, automatically rolling back in case of failure, and taking advantage of the tools in the container ecosystem. With all that, the security features such as isolating filesystems and network ports are just the cherry on top. Before containers, I was thinking about how to give my applications limited filesystems to work with, but along came Docker, and I didn't have to think about it anymore, because I'd already done it.

This is why I feel so out-of-touch with many of the commenters here. I'm surrounded by people decrying containers for security reasons, I want to defend them because of the many benefits they have given me, and I think the people preaching some kind of True Security (where everything is 100% perfectly isolated) aren't taking this into account. I feel like I could take your comment — "Trusting the isolation like this is absolutely misguided" — and apply it to any part of the stack. You have to stop somewhere.

I've seen the salespeople. They definitely exist, but I don't think they're here on HN, and they're more likely to be learning than lying.

And developers making flawed assumptions? You know this didn't start happening with containers!

cytzol··on Etcd, or, why modern software makes me sad
> They increase attack surface by supplying a vector to any neighbour

Could you explain what you mean by this? I'm still not getting it.

Here's the example I have in mind: I have one application listening on a TCP port, and another one listening on a different port. I don't want the first application to talk to the second application. If they're just two processes on the same machine, they can both see each other, and an attacker who manages to exploit an RCE vulnerability gets access to the port "for free"; if they're both in containers, then they can only see the ports I specify, and it's really easy for me to specify them.

This literally does seem like an additional shell of defence to me! What sort of attack would it make worse?

cytzol··on Etcd, or, why modern software makes me sad
> What security do you gain by being in a container instead of on a server without a container?

I'm not a container guru, but... this is obvious, right? You have to break out the container, which is an extra layer. In order to get root on the server, you need:

• Without container: application vulnerability (to gain access to the OS) + kernel vulnerability (to gain access to root)

• With container: application vulnerability (to gain access to the container) + container breakout vulnerability (to gain access to the OS) + kernel vulnerability (to gain access to root)

You make it sound like I'm missing something — what am I missing here?

Edit: are you talking about CVEs like this one (https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-3215)? I guess I'm assuming that a container vulnerability will give an attacker less to play with than a kernel vulnerability.

cytzol··on Disclosure: Another macOS privacy protections bypass
Thanks for writing this! Honestly, it does make me feel better about the whole situation.
cytzol··on Mailing Lists vs. GitHub (2018)
There's one thing that keeps stopping me from adopting the mailing list approach, in favour of GitHub Pull Requests, and that's this:

If, ten seconds after I've clicked Submit, I discover an embarrassing error in the code, or that I've accidentally committed some personal information, or I've sent the e-mail from the wrong address, or anything else I haven't thought of yet, there's nothing I can do and it's public forever.

Some would see this as an anti-feature, but I really do like using GitHub because I have the ability to go back and edit or delete my Pull Request if I spot an embarrassing mistake. I know the solution to this is "be more careful", but I still feel anxious sending e-mails to a mailing list, and calm using GitHub.

Does anyone relate?

cytzol··on Disclosure: Another macOS privacy protections bypass
The developer claims otherwise, that you can do the same with any app: https://twitter.com/lapcatsoftware/status/127794139284581171...
cytzol··on Disclosure: Another macOS privacy protections bypass
I commented this on the Big Sur thread last week:

> I was really hoping they'd take some time to address Catalina's glaring issues — its slowness, bugginess, just general sloppiness — and instead they did the opposite.

I didn't include "security exploits" in that list because of course they're going to fix security exploits, right? Especially one that they're already aware of, and can reproduce — they wouldn't just sit on it in favour of making the UI glossier, right?

Apple have just been getting so much wrong lately. This pretty much dashes any hopes I had of ever upgrading, because even if this particular flaw gets fixed by the time Big Sur comes out, there are almost certainly others that they've ignored. I expected to eventually have to grit my teeth and upgrade so I wasn't behind on security updates, but I guess that's not the case. Ugh, now I have to figure out how to mute that annoying (1) in System Preferences. I've heard they keep making it come back now.

cytzol··on macOS Big Sur Preview
It's possible they will do both, and I hope they do! I should add the disclaimer that I didn't actually expect them to talk about stability or Catalina's woes, for general corporate "avoid talking about things that make us look bad" reasons. Mentioning bug fixes inadvertently draws attention to the fact you added bugs; claiming increased stability highlights that the OS was once unstable. This is why Snow Leopard's "no new features" tagline was so memorable — it's so rare for a company to outright claim something like that.

But I have to ask myself: why this release? Why fix bugs in Big Sur, but not Catalina or Mojave? For example, the annoying bug where Mail randomly becomes the active application[1] has been floating around for years and still isn't fixed, and there are only two reasons for this: Apple is stretched too thin and can't spare the developers to work on bug fixes, or Apple doesn't care, and is simply willing to let the Mac languish, taking the reputation hit in favour of increased iPhone sales. The fact that they've overhauled the entire interface means it's not the first one — they do have enough resources to make large, sweeping changes to the OS. So I will be absolutely unsurprised if, ten months from now, I decide to upgrade to Big Sur on a whim, and a couple of minutes in, Mail pops up once more.

[1]: https://news.ycombinator.com/item?id=23359820

cytzol··on macOS Big Sur Preview
I was really hoping they'd take some time to address Catalina's glaring issues — its slowness, bugginess, just general sloppiness — and instead they did the opposite.

Honestly, every time Apple has done anything with the Mac the past couple of years, they've screwed it up. The infamous keyboards that they doubled-down and then tripled-down upon (I have personally had five keyboard replacements). The way Catalina sends the hash of every binary you run to Apple. The built-in Catalyst apps that look ugly and feel out-of-place. The Touch Bar which I still, years later, inadvertently activate several times a day (I've had to remove all the buttons on the right), which they addressed by making mandatory. The recurring bugs and kernel panics that have been lying around for years, unfixed.

I have the least confidence in Apple I've ever had. I'm afraid to run Big Sur, not because it changes things, but because it's Apple who are behind it.

cytzol··on Getting Hands-on with io_uring using Go
Unfortunately you're still stuck with having to run a thread pool if you want to do something that has no async version, such as reading a directory. I wish it went further!
cytzol··on Julia as a CLI Calculator
I know it's a very general question, but can I ask what sort of calculations you perform using Mathematica? Every time it has a new release, I download the demo and play around with it, but I never get as far as using it to actually compute anything that other CLI calculators couldn't do.
cytzol··on Apple Mail randomly becomes the frontmost application in macOS
Unfortunately, when I tried it, it made the media keys stop working entirely, not just stopping Music from opening.
cytzol··on Why Segment Went Back to a Monolith
This, this, this! It's been said elsewhere in these comments, but the term "micro"-services really do them a disservice, like it's expected that you need to break your application up into little pieces, to eliminate complexity. But many applications are inherently complex, and splitting them up isn't going to get you anywhere.

I've been trying to advocate for a "solar system model of services", where you have a big core application in the middle (the sun), surrounded by helper services of various kinds. Your important business logic can be left alone, but the database, other data stores, functions, timers, queues, integrations with third-party systems, one-off jobs, and other things can all stay in orbit.

There are benefits that you get from multiple services that you don't get from a monolith: having to rely on service discovery instead of hard-coding addresses or passwords, being unable to assume that the server your code is running on will live forever, and requiring a concrete CI-CD pipeline to get your code up-and-running are all good things to have, no matter your model, so it's important to have a clearly-defined process for them. A service-oriented architecture can give you that — put down the pickaxe, you don't need to split the monolith in two.

cytzol··on Tagging Docker images for fun and profit
I do this as well — "Upgrade from image b1257 to b1262". As a bonus, you can tell every tag that doesn't fit the b-then-a-build-number naming convention hasn't come from CI.
cytzol··on Guitar – Git GUI Client
Tower is quite literally the only application I'm willing to pay subscription pricing for. It's quality software, doesn't hold my data hostage, and has a steady stream of updates. I'm as adios amigos as you, but I don't think the usual reasons apply here.
cytzol··on New MacBook Air
The refined scissor mechanism with 1 mm of travel delivers a responsive, comfortable, and quiet typing experience. The inverted-T arrow keys help you fly through lines of code, spreadsheets, or game environments.

This isn't progress. This is the baseline. Apple have gone from bad to OK, and they're celebrating as though they've achieved something amazing.

cytzol··on The Rapid Growth of Io_uring
Question: is io_uring only worth using for writing to files, or does it provide performance benefits when reading from them, as well?

I've seen database programmers rave about the speed benefits of asynchronous I/O, because they have to store a lot of data on disk. But the majority of programs I write only have to deal with reading files. I'd love to try using io_uring, but only when it's appropriate.

cytzol··on Every Google result now looks like an ad
I've been in this A/B test for a couple of months now, so I've had time to adjust, and I still hate it. I've just become so used to seeing the complete URL in green. The complete URL! If you hover over the results, you'll see that they like to take bits like numeric components or the query string out.

This is part of Google's attempt to de-prioritise the URL. Their destructive AMP service confusingly shows you Google's domain instead of the website's — and as they can't fix that without losing out on tracking, they're trying to change what the URL means.

Thanks for ruining the Web, Google.

cytzol··on Autocomplete as an Interface (2015)
I used to think this way, too, so I don’t think you’re weird. At my old workplace, everyone else was a Java IDE wizard, and I was used to good old-fashioned text editors. Aren’t you distracted by that widget appearing while you’re typing, I thought? Is it really faster for you to hit the Down arrow three times instead of just typing ‘empty’? Do people not learn the libraries they’re using anymore‽

But over time, something changed, and I’m now a big fan of autocomplete interfaces. There was something wrong with my initial assumptions, and I think that’s the same assumption you make when you say this:

> i can type “empty()” on the keyboard faster than I can look at a screen and choose “empty()” from a list

You’re right, I can type ‘empty()’ faster than selecting it from a list. I have the muscle memory already there, and I don’t need to stop and look and think about which method I’m autocompleting.

The reason I still use autocomplete is not that I need my IDE to tell me that there’s an ‘empty’ method there as if that’s something I don’t already know, but to tell me that my assumption that ‘myVector’ has an ‘empty’ method is correct!

I occasionally write code like this:

    auto myVector = someFunction();
    if (myVector->empty()) { 
        fillVector(myVector); 
    }
Only to find that ‘myVector’ is not actually a vector, but an optional<vector> or another type entirely that requires me to do something else to get the vector I want. At this point, if I start typing ‘empty’ and the autocomplete widget does not appear, I immediately know that I’m not dealing with the type I thought I was.

Once I started programming this way, having the window appear was not ever a distraction, because I expected it to appear. In fact, the only distraction was when it stopped appearing, when I’ve made a mistake!

cytzol··on The few remaining uses of the name “Macintosh”
> No I have never used a mac and I know what macintosh is.

You're affirming the consequent! The author isn't saying "Only people who have been using Macs for two decades won't blink at this".

cytzol··on Software Disenchantment (2018)
I'm in complete agreement. Thanks to automated crash report uploading, the software I use is more stable than ever — it's a genuine surprise to me when an application crashes, and I can't remember the last time I had to reboot because my OS froze.

But this means that anything that's not represented in telemetry gets completely ignored. The numbers won't show you how many of your users are pissed off. They won't alert you to the majority of bugs. They won't tell you if you have a bloated web application that's stuffed full of advertising. They won't tell you if your UI is incoherent.

I really do think that large companies are looking at the numbers instead of actually using their software, and the numbers say that everything's fine.

cytzol··on How I made a website with Svelte
> What I like about these foundries is that they have permissive licenses that are just a one-time purchase. When I make a website I don’t want to worry about the font licensing for years.

I love the work of professional typographers, but tend to stay away from commercial Web fonts, because they like to include very restrictive terms in the font licences.

For example, you're only allowed to back up Klim fonts once, which we all know is no backup at all (https://klim.co.nz/licences/web-fonts/):

> You may make one (1) copy of the Web Fonts for back-up purposes only.

And I hope you don't take a week-long holiday away from your computer:

> At Klim’s request, You agree to provide an audit to confirm the Web Fonts You are consuming match Your Sales Receipt. Klim will give You at least 5 business days’ notice to complete the audit.

The Commercial licence is a bit better, but doesn't let you subset the fonts, which means your fonts might be 5 to 10 times as big as they should be, giving your users a worse experience (https://commercialtype.com/licenses/web):

> 10. You may not modify, adapt, translate, reverse engineer, decompile, disassemble, or alter, the Webfonts, the Font Software or the designs embodied therein.

I recommend using fonts under the SIL Open Font License, where you don't have to worry about this crap.

Anyway, nice work! I've been meaning to learn Svelte, and your site looks really good.

cytzol··on An account is now required to read Reddit comment threads?
Learning lessons? They're making their website worse on purpose! They don't want people to use the Reddit website — they want people to use the app, because that's where all the ads and tracking is.
cytzol··on I am no longer able to use Google with Lynx
I'm in this A/B test too, and like you, it makes me anxious. I've become so accustomed to looking at the full URL (in green) of what I'm about to click on, that without having it there, I trust Google search results less as a whole.

The one that got me was when a search result pointed me to a site that was something like:

    example.com/?ipaddr=10.3.4.3
And Google, in an attempt to be helpful, showed me this:

    example.com > ...
> It makes people even more ignorant about the technologies they depend on, and exposes them to further risk of being exploited.

This is the point. If you've ever viewed an AMP site using Mobile Safari, you'll still see "google.com" in the Location Bar, instead of the site's own domain name. Google's fix for this is to try to kill the URL.

cytzol··on Overview of Rust error handling libraries
This is a nice overview of Rust's available error-handling crates, and some improvements to the language that are error-related. But I'd like to quickly point out that you do not have to pick a library from this list! I don't want anybody to read this article and go away thinking "I need to learn nine libraries in order to use Rust effectively". In the majority of cases, I've found what the language and std offer is enough for me.

(In fact, it leaves my favourite solution out: using the derive_more crate to auto-generate From implementations for the ? operator to use. From is a general trait, useful for far more than error handling, which is probably why it's omitted here.)

cytzol··on The Danger of “Simplicity”
You're right, and that is unfortunate. But "people sometimes make the wrong decisions" is a much tougher nut to crack!

I agree that we should have these debates — but on a "is this language acceptable for my use case" level, not a "is this language acceptable for any use cases" level.

← PreviousPage 3 of 11Next →