HNHacker News
TopNewBestAskShowJobs

tofflos

662 karma · joined June 1, 2013

submissionscomments
tofflos··on JDK 28
Most people are thirsting for value objects but I'm mostly looking forward to:

  542: PEM Encodings of Cryptographic Objects
  543: Structured Concurrency
Developers work with certificates a bit too seldom to aquire proficiency with conversions. Being able to use PEM directly will ease a lot of pain.

I've given concurrency a couple of attempts over the years and I don't... like... or understand?... how the existing Java concurrency primitives are supposed to work. The only library that has clicked with me is Awaitility but for some reason Awaitility is intended for testing and not for production. Maybe Structured Concurrency will finally unlock something for me?

tofflos··on JDK 28
You can also choose to run directly from source with a small penalty at startup and verbosity has decreased for simple use cases. It's still not great for scripting but the situation has been steadily improving over the last couple of years.

  void main() {
    IO.println("Hello world");
  }

  $ time java Hello.java
  Hello world

  real    0m0.662s
  user    0m2.421s
  sys     0m0.198s

  void main(String[] args) throws Exception {
    IO.println(InetAddress.getByName(args[0]));
  }

  $ time java Dig.java news.ycombinator.com
  news.ycombinator.com/209.216.230.207

  real    0m1.154s
  user    0m2.379s
  sys     0m0.222s
tofflos··on Show HN: Guitoro, a virtual guitar you strum with your keyboard
C, G, Am and F for some definition of best.
tofflos··on DuckDB V2 PEG-based SQL parser
> Previous blog posts have covered DuckDB’s friendly SQL, including GROUP BY ALL and column selection using SELECT * EXCLUDE (...).

I love the idea of friendly SQL! I often create views with the same shape and would love it if UNION and UNION ALL accepted a list. But it's not in the standard so I've given up hope of it ever happening in PostgreSQL.

    select * from view1 union all view2, view3, view4;
tofflos··on Debian must ship reproducible packages
amd64 forky

reproduced: 97.02% good: 17586 bad: 511 fail: 30 unknown: 0

This, statistics for other architectures, and the reasons for unreproducibility can be found at https://reproduce.debian.net.

tofflos··on Go hard on agents, not on your filesystem
I installed codex yesterday and the first thing I'm doing today is figuring out how bubblewrap works and maybe evaluating jai as an alternative.

Nice article.

tofflos··on Go hard on agents, not on your filesystem
Codex uses and ships with bubblewrap on Linux and will attempt to use the version installed on the path before falling back to the shipped version with a warning message.

You should be able to configure the sandbox using https://developers.openai.com/codex/agent-approvals-security if you are a person who prefers the convenience of codex being able to open the sandbox over an externally enforced sandbox like jai.

tofflos··on LinkedIn is loud, and corporate is hell
I wasn't familiar with the PIP acronym so I asked $AI:

> A PIP (Performance Improvement Plan) is a formal document a company uses when they believe an employee isn’t meeting expectations. It’s framed as “support,” but depending on the environment, it can be anything from a genuine improvement tool to a pre-termination protocol.

tofflos··on OpenTelemetry: Escape Hatch from the Observability Cartel
https://illumos.org/books/dtrace/chp-usdt.html#chp-usdt
tofflos··on Go Primitive in Java, or Go in a Box
Eclipse Collections also comes with an API that seems nicer than the one provided by the standard library - so it might be worth checking out even if you're not interested in primitives.
tofflos··on Rating 26 years of Java changes
It's terse and it lines up the variable names.
tofflos··on Rating 26 years of Java changes
I will make any excuse to use Streams but understand the negativity. They are difficult to debug and I feel the support for parallelism complicated, and in some cases even crippled, the API for many common use cases.
tofflos··on Show HN: Piano Trainer – Learn piano scales, chords and more using MIDI
Rocksmith+ recently got a piano mode. The default interface is similar to Guitar Hero but you can also toggle to a sheet music view. I haven't tried it.

I have tried Playground Sessions and recommend it.

tofflos··on 2025 Iberia Blackout Report [pdf]
It's a difficult read.

Cybersecurity and digital systems was not the issue but gets thirteen pages of proposed measures. I feel this could have been left out.

Electric System Operation was the issue and gets seven pages of proposed measures.

tofflos··on The ADHD body double: A unique tool for getting things done
What's unique about this? This is basically what every parent and teacher already does.
tofflos··on Ask for no, don't ask for yes (2022)
Just do the thing. I'll have your back if it goes wrong. Sincerely Your non-toxic boss.
tofflos··on Cities can cost effectively start their own utilities
There can't be a competitive market. The entity that operates the grid has a monopoly on all customers in the area. So I would say entities that govern grids fall in a can't-be-allowed-to-fail-category while entities that govern generators do not (unless they buy enough generators in a region to effectively become a monopoly).
tofflos··on So you want to write Java in Neovim
> I’ll preface this by saying that if Neovim isn’t your primary editor, you should first try an IDE specifically for Java."

Seconded.

As someone who has spent a lot of time configuring editors, but doesn't enjoy it quite as much as he used to, I gave Java on Neovim a shot this summer.

There are two main routes to go - both of which are described in the article. Either install it yourself, "You read the friendly manual", or use someone else's installer, "You use a distro".

My problem with someone else's installer is that I don't understand what it's doing, which in turn gives me the feeling that it's pulling in the kitchen sink, which is exactly the feeling I hoped to avoid by not using my regular IDE.

My problem with installing it myself is that I have to learn the entire ecosystem including, but not limited to, learning how to use Neovim for more than editing a simple text file, learning the Lua scripting language, learning where Neovim keeps its' configuration files and what to put in them, curating a set of plugins for highlighting, launching code, debugging, etc., figuring out how to configure those plugins for Neovim and finally how to make those plugins play nice together.

In the end it just wasn't for me but if Neovim is your primary editor it might be for you.

> Java has one LSP option for Neovim, and that’s JDTLS (Java Development Tools Language Server) by Eclipse.

Just wanted to mention that there is another LSP for Java, https://github.com/apache/netbeans/tree/master/java/java.lsp..., but I don't know if anyone has gotten it to work with Neovim.

tofflos··on An analysis of the Keycloak authentication system
Off-topic but I love this naming convention from Red Hat which I hope gets more traction across the industry. It absolutely detest wading through vendor marketing material to figure out which open source product is being used under the hood. With names like "Red Hat Build of Keycloak" and "Microsoft Build of OpenJDK" it's crystal clear.

I believe it works out better for the vendors as well because there are so many obstacles with evaluating anything that requires a license in an enterprise setting. If the technical person downloads and evaluates the underlying open source version some manager will insist on purchasing a support contract before going to production.

tofflos··on Get me out of data hell
> Like why didn't anyone catch the issue with the logs?

I see questions like these a lot and every time I feel that people immensely underestimate the effort required for curating data. In my experience data can only ever be as good as what it's being used for and in this story the logs haven't been used for this purpose before so they're not going to be any good.

It's some sort of data variation on the second law of thermodynamics - entropy is winning. Going in with the expectation that things should be better will only lead to frustration.

tofflos··on Order and orient the keys on your keychain
This article is wrong on so many levels! Or, you know, the author is optimizing for something else than what I am optimizing for. ;-)

> "House, car, work scenario"

To provide some context know that I live in a place where I've never even seen a car key that is intended to be placed on a key chain and where all offices have access cards.

So my key chain has only the house key. My other keys, which I almost never use, hang in a key cabinet with labels. No unnecessary weight to carry around, no ordering and orientation problems, great for keeping track of which key goes where.

Hope that helps! :)

tofflos··on Dasel: Select, put and delete data from JSON, TOML, YAML, XML and CSV
I used yq last week to scan through all the Java projects (i.e. Maven pom.xml-files) within our org to check which ones inherit from the corporate pom.

  yq eval --input-format xml --output-format csv '[file_index, file_name, .project.parent.groupId, .project.parent.artifactId, .project.parent.version]' **/pom.xml
tofflos··on Limits to running speed in dogs, horses and human
I believe that the popular working theory is that poor people have less options, i.e. distractions, which leads to more time spent training and better athletes. If the theory is correct then bringing people out of poverty would also decrease the number of candidates.
tofflos··on PEP 750: Tag Strings for Writing Domain-Specific Languages
I would have loved to see Java introduce something similar to the IntelliJ @Language-annotation in the standard library but maybe they'll figure out the sweet spot in a future String Templating JEP.

  @Language("application/sql")
  String query = "SELECT 1";

  @Language("application/graphql+json")
  String query = """
                 query HeroNameAndFriends {
                   hero {
                     name
                     friends {
                       name
                     }
                   }
                  }
                  """;
tofflos··on Building a highly-available web service without a database
Check out https://eclipsestore.io (previously named Microstream) if you're into Java and interested in some of the ideas presented in this article. You use regular objects, such as Records, and regular code, such as java.util.stream, for processing, and the library does snapshotting to disk.

I haven't tried it out but just thinking of how many fewer organizational hoops I would have to jump through makes we want to try it out:

- No ordering a database from database operations.

- No ordering a port opening from network operations.

- No ordering of certificates.

- The above times 3 for development, test and production.

- Not having to run database containers during development.

I think the sweet spot for me would be in services that I don't expect to grow beyond a single node and there is an acceptance for a small amount of downtime during service windows.

tofflos··on We need visual programming. No, not like that
Check out Spring Modulith at https://docs.spring.io/spring-modulith/docs/current-SNAPSHOT.... Their pitch is that the application framework organizes your code in such a way that it makes the architecture of your application easier to visualize and to reason about. I haven't tried it but have seen some talks on Youtube that makes we want to give it a shot in the future.
tofflos··on Show HN: A platform for remote piano lessons based on the Web MIDI API
Could you expand a bit on the challenges with Skype/Zoom?
tofflos··on Almost every infrastructure decision I endorse or regret
> Using cert-manager to manage SSL certificates

> Very intuitive to configure and has worked well with no issues. Highly recommend using it to create your Let’s Encrypt certificates for Kubernetes.

> The only downside is we sometimes have ANCIENT (SaaS problems am I right?) tech stack customers that don’t trust Let’s Encrypt, and you need to go get a paid cert for those.

Cert-manager allows you to use any CA you like including paid ones without automation.

tofflos··on DaedalOS – Desktop environment in the browser
Are you using cheerpj and if so how is that working for you?
tofflos··on 280M e-bikes and mopeds are cutting demand for oil far more than electric cars
"So what’s the best solution? You might think switching to an electric vehicle is the natural step. In fact, for short trips, an electric bike or moped might be better for you – and for the planet."

Also in fact, electric bikes and mopeds are electric vehicles.

Page 1 of 8Next →