HNHacker News
TopNewBestAskShowJobs

hashhar

1,785 karma · joined June 18, 2016

Software Engineer working on Trino (formerly Presto SQL) with an interest in everything open-source and distributed.

https://trino.io/

https://www.linkedin.com/in/hashhar

I can be found most places as hashhar.

submissionscomments
hashhar··on The SQL query engine Trino (formerly PrestoSQL) recaps a decade of innovation
Works just fine in Trino.

  trino> USE memory.default;
  USE
  trino:default> create table artist (artistid int);
  CREATE TABLE
  trino:default> create table album (albumid int, artistid int);
  CREATE TABLE
  trino:default> insert into artist values 1, 2;
  INSERT: 2 rows
  
  Query 20220804_182827_00005_n4rat, FINISHED, 1 node
  Splits: 19 total, 19 done (100.00%)
  0.52 [0 rows, 0B] [0 rows/s, 0B/s]
  
  trino:default> insert into album values (11, 1), (12, 1), (21, 2);
  INSERT: 3 rows
  
  Query 20220804_182857_00006_n4rat, FINISHED, 1 node
  Splits: 19 total, 19 done (100.00%)
  0.18 [0 rows, 0B] [0 rows/s, 0B/s]
  
  trino:default> select * from (select * from artist limit 2) a cross join lateral (select * from album where album.artistid = a.artistid limit 2);
   artistid | albumid | artistid
  ----------+---------+----------
          1 |      12 |        1
          1 |      11 |        1
          2 |      21 |        2
  (3 rows)
  
  Query 20220804_182930_00007_n4rat, FINISHED, 1 node
  Splits: 41 total, 41 done (100.00%)
  0.35 [8 rows, 232B] [22 rows/s, 661B/s]
hashhar··on The SQL query engine Trino (formerly PrestoSQL) recaps a decade of innovation
BigQuery very recently announced their Storage Write API which is one of the ways we were looking to implement this but there are some issues with the latency and consistency guarantees that it offers.

But, yes, we do plan to add that eventually after ironing out all the kinks. See https://github.com/trinodb/trino/pull/13094

hashhar··on Near Real-Time Ingestion for Trino
The article talks about the reverse direction however. i.e. Data from Kafka being ingested via Flink for Trino to query as Iceberg tables - everything with a single consistent schema.

To be pedantic though Flink also operates on a flush interval so not "real time" by that definition.

hashhar··on Near Real-Time Ingestion for Trino
> The Iceberg table serves as the only schema definition for the ingestion process. In various alternative architectures, the schema is often stored in multiple systems, requiring these disparate systems to be kept in sync with each other.

> Here, the continuously running Flink job parses the JSON data source directly following the Iceberg table schema definition. This means future schema changes can be facilitated through just one source of truth.

This is the most interesting point. I'd love to take this implementation out for a spin - could solve a lot of pain I know other people deal with too.

Most of the pain (or even grunt-work) of managing data pipelines is updating, validating and managing schemas.

In the past the common approach people suggested was to have each application write the data with the same schema but in practice it's never possible unless it's a greenfield project and the services don't need to talk to other external or pre-existing systems. What ends up happening is that a translator (or validator) service comes up whose job it is to translate across the various schemas. 2x storage in Kafka, 2x compute for the consumers and probably 20x more maintenance and ways things can go wrong.

hashhar··on Take the pain out of Git conflict resolution: use diff3 (2017)
Bold of you to assume people read articles before commenting.

diff3 has another advantage in the general case as well since it allows you to better understand if something outside of the hunk you're applying also needs to be changed when backporting something.

hashhar··on Let’s Encrypt Receives the Levchin Prize for Real-World Cryptography
There is a way to indicate the URI to visit for change-password but not about how to interact with the document at that URI.

See `change-password` under https://en.wikipedia.org/wiki/Well-known_URI.

hashhar··on Debian still having trouble with merged /usr
Not everything is a binary.

Also having everything system specific live under a single path means easy backups, easy immutable trees that can be A/B swapped for seamless and online updates with easy rollbacks.

No more wondering where the various tools live since everything lives in /usr/bin and more.

hashhar··on A database for 2022
And he even works at Tailscale now.
hashhar··on Can Grafana run Doom?
They are pushing the time-series rendering code to it's limits I'm sure here and for sure would've uncovered lots of bugs and possibilities for performance improvements with this.
hashhar··on How Go mitigates supply chain attacks
The difference is that it's an explicit choice instead of other package managers who'd happily install latest compromised versions of packages by default.
hashhar··on How Go mitigates supply chain attacks
Also the lockfiles are not recursive. i.e. they don't apply to the dependencies you install or their transitive deps.
hashhar··on AltWinDirStat
I even prefer ncdu even if I have X. It's just that good.
hashhar··on Possible Spring core RCE
https://www.lunasec.io/docs/blog/log4j-zero-day/

By LunaSec IIRC.

hashhar··on 100k Stars Chrome visualization experiment
Works just as well in Firefox. Nice.
hashhar··on Mourning loss as a remote team
Reminds me of this other comment I made on an old thread discussing this point in a way which hopefully others can relate to at-least a bit.

https://news.ycombinator.com/item?id=27909275

hashhar··on Lyrics in ogg/vorbis and MP3 files
If you have files which have lyrics already embedded I believe BlackPlayer does a pretty good job (and it's a very awesome and well customisable music player in and of itself).
hashhar··on The endless influence of the Bauhaus (2017)
The correct answer is Nazis IIRC. However it's sad that people are trying to imply someone is a Nazi since they hate the Bauhaus style.
hashhar··on Show HN: My new platform. Check it out
I believe PocketCasts (the podcast app) has that feature and I really love it (except when listening to audio dramas or music :P - thankfully can be configured per podcast).

It really makes a lot of difference especially with podcasts since people tend to enunciate a bit more than usual and end up adding micro-silences that can easily add up into minutes.

hashhar··on What's new in Ruby 3.1?
I have noticed that Ruby tends to move towards more magic which is true in this case.

I don't see any benefits at all from this.

hashhar··on I went back to using a ThinkPad from 2012
I think most people are not aware that there was a time when laptop CPUs were replacable and not soldered on.
hashhar··on Ask HN: What password managers can you recommend?
Agreed on the third point. But the first two have been fixed for quite some time now.
hashhar··on Music Library and MusicBrainz Picard
I have my Picard and beets configs hosted here - https://github.com/hashhar/picard-beets-config

I currently have a workflow like:

1. Add tags, move and rename files using MusicBrainz Picard.

2. Run beets on the files with the writing, tagging and renaming options disabled.

The keys which are left empty in the yaml need to be provided by a local config file like beets -c secrets.yaml. A sample secret file can be seen here[1].

This means that I can still use beets to do things like fetching lyrics (but not writing to ID3 tags), creating smart-playlists, updating my MusicBrainz collections etc.

Due to this workflow you might find that the beets config is lacking a lot of plugins and configuration that would allow it to replace MusicBrainz Picard like the chroma plugin, fetchart etc.

Some of the cooler beets plugins that complement Picard are:

mbsync: It can fetch updated metadata for existing tracks solving my biggest issue with Picard.

lastimport: To import playcounts from Last.fm

smartplaylist: To generate rule-based playlists. Now I can have playlists by decade or by genre or even something like "songs from 2000-2010 with danceability > x (from AcoustID)"

missing: to list missing tracks from an album

[1]: https://github.com/hashhar/picard-beets-config/blob/master/b...

hashhar··on Cache of documents declassified by the NRO for its 60th anniversary
For others wondering - he's the Packard from Hewlett-Packard which people know better as HP.
hashhar··on Dislike button would improve Spotify's recommendations
You would love Cigarettes from the Fort Minor album The Rising Tied then.

It talks about exactly what you are saying - why do all raps have to be about guns, violence, drugs and domestic violence etc.

hashhar··on Perfect pitch study: Why can’t we identify music notes as well as colors?
This sounds very similar to how DAW (digital audio workstation) software has features to "transpose" pitch. You essentially just move one of the notes to where you want it to be and all other notes get transposed relative to it.
hashhar··on Ask HN: Why does Zoom Desktop examine all processes and arguments?
That feature got pulled last year and hasn't existed for over a year and a half now.
hashhar··on Show HN: KmCaster – display keyboard and mouse events on-screen
Carnac is really the best one - configurable enough, beautiful and performant. I do think it's Windows only though. Haven't tried within WINE yet though.
hashhar··on Incident with GitHub Actions, API Requests, Git Operations, Issues and more
It's recovering - everything's working for me now.

Much hugs to the GitHub SREs.

hashhar··on Show HN: Visualizing a Codebase
I like the quick insights I can gain from this! Very promising. It's very basic in it's current implementation but I see a lot of potential specially about the "how files are linked" part.

It's a nice bird's eye view. One thing I'd like is for there to be multiple metrics to use for the size of packages e.g. lines of code, number of files, number of methods etc.

That way you can make sense of what are the heavyweight parts of the codebase.

hashhar··on Why you should learn SQL
You're getting downvoted most probably because your comment provides no arguments why. Why would I be better off with Gremlin or Cypher?
← PreviousPage 3 of 21Next →