<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Hacker News: netvl</title><link>https://news.ycombinator.com/user?id=netvl</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Tue, 07 Apr 2026 13:06:30 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=netvl" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by netvl in "Ladybird Web Browser becomes a non-profit with $1M from GitHub Founder"]]></title><description><![CDATA[
<p>FWIW it's ladybird, not ladybug :)</p>
]]></description><pubDate>Tue, 02 Jul 2024 18:54:55 +0000</pubDate><link>https://news.ycombinator.com/item?id=40859448</link><dc:creator>netvl</dc:creator><comments>https://news.ycombinator.com/item?id=40859448</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40859448</guid></item><item><title><![CDATA[New comment by netvl in "Ask HN: Are you still using your Vision Pro?"]]></title><description><![CDATA[
<p>Yup - my correction is not very strong, I usually don’t wear glasses at all, and I was able to use Vision Pro without inserts just fine, but <i>with</i> inserts subjective sharpness is much better.</p>
]]></description><pubDate>Fri, 14 Jun 2024 02:59:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=40677149</link><dc:creator>netvl</dc:creator><comments>https://news.ycombinator.com/item?id=40677149</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40677149</guid></item><item><title><![CDATA[New comment by netvl in "Ask HN: Are you still using your Vision Pro?"]]></title><description><![CDATA[
<p>Front display is very dim, and yes, it mostly turns on for interactions.</p>
]]></description><pubDate>Fri, 14 Jun 2024 02:54:16 +0000</pubDate><link>https://news.ycombinator.com/item?id=40677123</link><dc:creator>netvl</dc:creator><comments>https://news.ycombinator.com/item?id=40677123</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40677123</guid></item><item><title><![CDATA[New comment by netvl in "Ask HN: Are you still using your Vision Pro?"]]></title><description><![CDATA[
<p>Yes, almost every day.<p>I spend approximately 60-70% of my time working with the headset on, connected to my MacBook. It’s actually better for me than my physical display because of the Zeiss inserts - I usually don’t wear glasses, so due to inserts, the desktop is subjectively crisper than the monitor :) I really can’t wait for visionOS 2 improvements in the virtual display feature.<p>Most of the media content I consume alone, and Vision Pro is perfect for that, especially watching something before sleep - the headset does not light up the entire room (unlike a phone/tablet screen) and thus does not mess up my wife’s sleep.<p>One thing I surprisingly don’t use it for are “immersive” videos and other experiences like VR or MR games. I’m not quite sure why - I always plan to try something out, but never do it actually.</p>
]]></description><pubDate>Thu, 13 Jun 2024 04:33:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=40665980</link><dc:creator>netvl</dc:creator><comments>https://news.ycombinator.com/item?id=40665980</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40665980</guid></item><item><title><![CDATA[New comment by netvl in "C-Macs – a pure C macOS application"]]></title><description><![CDATA[
<p>So this is a direct reimplementation of your example in Java - <a href="https://gist.github.com/netvl/32698cc97b88267fecee9b30f00d16d6" rel="nofollow">https://gist.github.com/netvl/32698cc97b88267fecee9b30f00d16...</a><p>It is under 120 lines, uses Java SE API only, and the complexity is approximately the same. Go does have advantage of built-in selects and channels, which make parts of the logic nicer, but not by much IMO.<p>On the other hand, in Java almost no one uses standard library to write network apps like this. If I had to use external libraries, which would be the case in the majority of real-world projects, the implementation would look even better and clearer.</p>
]]></description><pubDate>Sun, 21 Apr 2024 07:01:14 +0000</pubDate><link>https://news.ycombinator.com/item?id=40103720</link><dc:creator>netvl</dc:creator><comments>https://news.ycombinator.com/item?id=40103720</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40103720</guid></item><item><title><![CDATA[New comment by netvl in "C-Macs – a pure C macOS application"]]></title><description><![CDATA[
<p>> I suppose it would be much harder to do it without the transferTo function,<p>No, it would not:<p><pre><code>    public class Test {
        public static void main(String[] args) throws Exception {
            byte[] buf = new byte[4096];
            int read;
            while ((read = System.in.read(buf)) > 0) {
                System.out.write(buf, 0, read);
            }
        }
    }
</code></pre>
I imagine it will look pretty much the same in the majority of languages which have similar I/O abstractions.</p>
]]></description><pubDate>Sat, 20 Apr 2024 22:07:49 +0000</pubDate><link>https://news.ycombinator.com/item?id=40101429</link><dc:creator>netvl</dc:creator><comments>https://news.ycombinator.com/item?id=40101429</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40101429</guid></item><item><title><![CDATA[New comment by netvl in "C-Macs – a pure C macOS application"]]></title><description><![CDATA[
<p>Typo, yeah :( I don’t agree that it is true)<p>I can try doing it later today, but I’m 100% sure that TCP example will look pretty much the same in Java, in terms of complexity.<p>> The gRPC protocol here is only an example. Feel free to use any protocol you like.<p>FWIW, this is a pretty huge change. gRPC is quite complex, as it includes protobuf, http/2 and its own RPC mechanism. A simple TCP protocol is peanuts compared to that.</p>
]]></description><pubDate>Sat, 20 Apr 2024 21:59:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=40101389</link><dc:creator>netvl</dc:creator><comments>https://news.ycombinator.com/item?id=40101389</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40101389</guid></item><item><title><![CDATA[New comment by netvl in "C-Macs – a pure C macOS application"]]></title><description><![CDATA[
<p>1 is really trivial and took me like 5 seconds to write:<p><pre><code>    public class Test {
        public static void main(String[] args) {
            System.in.transferTo(System.out);
        }
    }
</code></pre>
2 is anything but trivial in any language, unless it is some kind of a language specifically designed to build gRPC programs.<p>Never versions of Java are quite pleasant to work with. There are a lots of quality-of-life improvements (switch expression, multi-line string literals, string templates (currently in preview), lots of useful stdlib APIs), as well as quite fundamental additions like Loom.<p>edit: formatting, explanations</p>
]]></description><pubDate>Sat, 20 Apr 2024 19:51:20 +0000</pubDate><link>https://news.ycombinator.com/item?id=40100434</link><dc:creator>netvl</dc:creator><comments>https://news.ycombinator.com/item?id=40100434</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40100434</guid></item><item><title><![CDATA[New comment by netvl in "The Claro Programming Language"]]></title><description><![CDATA[
<p>Interesting concepts, but dependency on Bazel is meh :(<p>Also, there are some passionate statements about other languages:<p>> As it's currently defined, there's nothing requiring the two arguments to actually have the same type. In this trivial example, that may be fine, but if I were to actually want to ensure that two arguments both implement an interface and they both actually have the same type, then I'm out of luck - there's no way to statically encode this constraint in Java!<p>This is simply not true:<p><pre><code>    static <T extends Stringify> void prettyPrintPair(T x, T y)
</code></pre>
I personally really dislike when people talk about any kind of language feature with strong negativity, while providing their solution as the superior one. There is a high chance that they are wrong, since different features in the same area have different benefits, and usually no one thing is “better” than another, whatever this means.</p>
]]></description><pubDate>Thu, 29 Feb 2024 17:37:53 +0000</pubDate><link>https://news.ycombinator.com/item?id=39552458</link><dc:creator>netvl</dc:creator><comments>https://news.ycombinator.com/item?id=39552458</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39552458</guid></item><item><title><![CDATA[New comment by netvl in "Tesla worker killed in fiery crash may be first 'Full Self-Driving' fatality"]]></title><description><![CDATA[
<p>It does not - my M3 continues to keep the speed if I override autopilot with the steering wheel. If I press the brakes, then both systems are shut down.</p>
]]></description><pubDate>Tue, 13 Feb 2024 17:11:53 +0000</pubDate><link>https://news.ycombinator.com/item?id=39359971</link><dc:creator>netvl</dc:creator><comments>https://news.ycombinator.com/item?id=39359971</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39359971</guid></item><item><title><![CDATA[New comment by netvl in "datetime.utcnow() is now deprecated"]]></title><description><![CDATA[
<p>After Java’s JSR-310 almost any other API in almost any other language looks broken or insufficient. Threeten’s modeling of different time types seems so powerful and natural - specifically, it has Instant (which is literally a nanosecond-precision UNIX epoch timestamp), then it has ZonedDateTime/OffsetDateTime, which are full timestamps with time zone or offset information, and LocalDateTime/LocalDate/LocalTime, which are basically these “naive” timestamps from Python. These are all different types, with well-defined conversion methods between them, so you can’t easily use an inappropriate type.<p>My personally most hated piece of date-related API is Go’s formatting API, with its asinine number-based patterns instead of something reasonable and conventional like strftime-like or Java-like symbols. What’s especially maddening in it is that it is so US-centric, with month coming before day in these number patterns, which does not follow unit size increase or decrease sequence.</p>
]]></description><pubDate>Mon, 20 Nov 2023 02:51:32 +0000</pubDate><link>https://news.ycombinator.com/item?id=38341647</link><dc:creator>netvl</dc:creator><comments>https://news.ycombinator.com/item?id=38341647</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38341647</guid></item><item><title><![CDATA[New comment by netvl in "iOS 17 is available today"]]></title><description><![CDATA[
<p>I use one sim card for day-to-day life in the US, and another sim card from my home country to interact with digital services there, when needed.</p>
]]></description><pubDate>Mon, 18 Sep 2023 18:28:36 +0000</pubDate><link>https://news.ycombinator.com/item?id=37560048</link><dc:creator>netvl</dc:creator><comments>https://news.ycombinator.com/item?id=37560048</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37560048</guid></item><item><title><![CDATA[New comment by netvl in "Rust Malware Staged on Crates.io"]]></title><description><![CDATA[
<p>This is not true for Maven and overall the general Java ecosystem. Your own build may have arbitrary logic, true (this holds for Maven, Gradle, SBT - virtually any build tool for JVM), but the artifacts which are distributed to consumers of libraries never have anything which gets automatically executed by the build process of the consumer. build.rs and equivalents, however, are a part of the package itself and are executed when the package is “depended on”.</p>
]]></description><pubDate>Fri, 25 Aug 2023 17:22:09 +0000</pubDate><link>https://news.ycombinator.com/item?id=37264433</link><dc:creator>netvl</dc:creator><comments>https://news.ycombinator.com/item?id=37264433</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37264433</guid></item><item><title><![CDATA[New comment by netvl in "Genders.wtf"]]></title><description><![CDATA[
<p>You’re right in that knowing pronouns is sufficient to determine grammatical gender of words to be used with relation to a character in Russian. Combining a particular gender of pronoun with an unmatching form of verbs/nouns/etc is definitely not a part of the language, even outside some formal norms.<p>One possibly unobvious thing is, though - there are only three grammatical genders in Russian, so all words which do have gendered forms can have at max 3 of them (male/female/neuter). This means that if you do allow more than 3 kinds of pronouns, you’ll probably have to define the pronouns->grammatical gender mapping somehow. Well, I guess plural variant also counts, so maybe 4.</p>
]]></description><pubDate>Thu, 12 Jan 2023 06:50:49 +0000</pubDate><link>https://news.ycombinator.com/item?id=34350072</link><dc:creator>netvl</dc:creator><comments>https://news.ycombinator.com/item?id=34350072</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=34350072</guid></item><item><title><![CDATA[New comment by netvl in "Java’s Cultural Problem"]]></title><description><![CDATA[
<p>The problem with SparkJava is that it is not maintained anymore :( according to GitHub, meaningful work on it last happened in 2020. It was indeed a great tool, but now I’d choose Javalin since it is maintained, or even better, Ktor if I’m using Kotlin.</p>
]]></description><pubDate>Sun, 25 Sep 2022 00:21:07 +0000</pubDate><link>https://news.ycombinator.com/item?id=32967827</link><dc:creator>netvl</dc:creator><comments>https://news.ycombinator.com/item?id=32967827</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=32967827</guid></item><item><title><![CDATA[New comment by netvl in "YAML: It's Time to Move On"]]></title><description><![CDATA[
<p>The key benefit of the Kotlin DSL is that in this precise example, IDEA <i>does</i> suggest valid stuff:
<a href="https://imgur.com/a/vFYNIU1" rel="nofollow">https://imgur.com/a/vFYNIU1</a><p>Kotlin DSL is <i>miles</i> ahead of Groovy in terms of discoverability and IDEA integration. With Groovy DSL, most of the build script is highlighted with various degrees of errors and warnings; with Kotlin DSL, if something is highlighted, it is a legitimate error, and vice versa - if no errors are detected by IDEA, then it is almost certain to work.<p>There were rough spots of IDEA integration a couple years ago, but now it is close to perfect, within Gradle's limits of course (due to sheer dynamic nature of it, some things are just not possible to express in a static fashion, unfortunately). The biggest obstacle to Kotlin DSL use might be that some of the plugins use various Groovy-specifc features which are hard to use from Kotlin, but thankfully most of the plugins either fix those, or are rewritten in Java or Kotlin instead.</p>
]]></description><pubDate>Tue, 16 Nov 2021 18:14:03 +0000</pubDate><link>https://news.ycombinator.com/item?id=29244233</link><dc:creator>netvl</dc:creator><comments>https://news.ycombinator.com/item?id=29244233</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=29244233</guid></item><item><title><![CDATA[New comment by netvl in "New language features since Java 8 to 17"]]></title><description><![CDATA[
<p>The whole point of a local date is that it is just a container for three values - year, month and day, and nothing more than that. You cannot go from `Instant` to `LocalDate` without specifying time zone/offset information, and vice versa.<p>“Local date” is a useful concept on its own, and it is not at all always derived from an absolute instant of time. Some examples:<p>1. Date in a file/directory name, which often happens with big data processing. There is no way to tie these dates to some absolute frame of reference without external information, but it is often not really necessary, and there is still a need to work with these values as dates, e.g. compare them or compute offsets.<p>2. Anything which is tied to the user’s local time frame, e.g. alarms. They simply cannot be tied to some absolute time reference, because they always represent some time wherever the user is located right now. Even birthday is something like this, because for the purposes of celebration, people care about the specific calendar day, not the actual moment of time in whatever absolute time scale there is (at least, most of the people I know think like that!)</p>
]]></description><pubDate>Mon, 25 Oct 2021 06:38:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=28985021</link><dc:creator>netvl</dc:creator><comments>https://news.ycombinator.com/item?id=28985021</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=28985021</guid></item><item><title><![CDATA[New comment by netvl in "Fish shell"]]></title><description><![CDATA[
<p>#159 kind of works with the `string collect` mechanism, although it is indeed not very obvious, compared to bash:<p><pre><code>    set file_contents (cat filename | string collect -N)
</code></pre>
I understand that this is purely anecdotal, but I'm using fish for quite a long time, I've written a lot of tooling for myself in fish, and I agree that sometimes there are some things which are annoyingly missing from fish (like this multiline variable thing), but I would not say it makes fish <i>significantly</i> less powerful. And these things are sometimes fixed, too.</p>
]]></description><pubDate>Tue, 18 May 2021 00:31:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=27190014</link><dc:creator>netvl</dc:creator><comments>https://news.ycombinator.com/item?id=27190014</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=27190014</guid></item><item><title><![CDATA[New comment by netvl in "Why we switched from Webpack to Vite"]]></title><description><![CDATA[
<p>Android apps are written in Kotlin, and Gradle config is also written in Kotlin. How come it is different from the JS situation? Even though Gradle can be configured in Groovy, and Android apps can be written in Java, it is still the same ecosystem - basically, the situation of TypeScript/PureScript/WhateverScript and JavaScript.<p>Gradle wrapper is just a name for a script (automatically created by Gradle btw) which allows one not to have any kind of Gradle-related tooling installed on the machine (basically, to run build tasks you execute `./gradlew someTask`, and it takes care about downloading and running the appropriate Gradle version) - which I think is a clear benefit over the fact that you need to have `npm` installed system-wide or via a tool like NVM in order to build JS projects.<p>Gradle has its own warts, and a lot of them, but at least there is only one major build system in this area, and it is simply impossible for a library published to a Maven repo to be dependent on the build system it is built with.</p>
]]></description><pubDate>Sat, 01 May 2021 00:28:17 +0000</pubDate><link>https://news.ycombinator.com/item?id=27001523</link><dc:creator>netvl</dc:creator><comments>https://news.ycombinator.com/item?id=27001523</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=27001523</guid></item><item><title><![CDATA[New comment by netvl in "The Problem with Gradle"]]></title><description><![CDATA[
<p>While Gradle does have a lot of issues, some of the things you mentioned are not correct.<p>> Don't forget you need a basic .properties file in META-INF that just gives out the plugin's name so it can discover it through reflection instead of having a proper API to do so.<p>Not really clear what do you mean, but declaring plugin names should not be done in properties, Gradle has syntax for declaring plugin ids inside its build config. If the plugin author haven’t used it, well, that’s on their conscience. Plugin <i>users</i> should never ever declare anything plugin-related in meta-inf.<p>> And through some horrible logic, the name of your variable is what is exposed to Gradle.<p>This is a feature of Kotlin as a language - in it, delegates know the names of the properties they are used for. `lazy` is just the simplest use of the delegates feature, which happens not to care about property names.<p>> Isn't it obvious that it's going to read a .properties file ? Not the values given through the -P flag when building though, because that would actually make sense.<p>This is simply untrue. Extracting properties this way most certainly <i>will</i> read them from .properties files and from all other sources of properties on a project, including the -P arguments.<p>Gradle does have a lot of issues, I can talk about them for hours (there are really nasty ones where there are no non-awful workarounds, for example, the built-in `tarTree` does not support symlinks in TAR archives, and there is no way to rebase the archive contents when extracting, i.e. to specify which directory of the archive to extract from, and these issues are very unlikely to be fixed, and these two are just the surface), but too many of your examples are somewhat wrong.</p>
]]></description><pubDate>Wed, 20 Jan 2021 20:51:28 +0000</pubDate><link>https://news.ycombinator.com/item?id=25851824</link><dc:creator>netvl</dc:creator><comments>https://news.ycombinator.com/item?id=25851824</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=25851824</guid></item></channel></rss>