HN user

houqp

687 karma
Posts57
Comments73
View on HN
github.com 2mo ago

Kiorg: A neo filemanager with Vim keybind, zoxide-like teleport, and previews

houqp
4pts0
github.com 4mo ago

Show HN: Kiorg – a battery included file manager for keyboard nerds

houqp
1pts0
www.youtube.com 1y ago

Neuralink Update, Summer 2025 [video]

houqp
6pts0
github.com 1y ago

Show HN: Serve CSV Files as APIs

houqp
1pts1
neuralink.com 1y ago

A Year of Telepathy

houqp
4pts1
nitter.poast.org 1y ago

Building the Brain Simulator at Neuralink

houqp
2pts0
roapi.github.io 1y ago

Show HN: Turn CSS files into high performance APIs

houqp
2pts2
neuralink.com 2y ago

Show HN: Brain computer interface cursor control benchmark game

houqp
2pts1
neuralink.com 2y ago

Webgrid: Cursor control benchmark for brain computer interfaces

houqp
6pts0
twitter.com 3y ago

Neuralink Surgical Robot Simulator

houqp
3pts0
github.com 3y ago

Roapi 0.9 release adds support for all cloud storage providers

houqp
2pts0
github.com 3y ago

Show HN: A formally verified native Delta Lake implementation in Rust

houqp
8pts0
github.com 3y ago

Run SQL on CSV, Parquet, JSON, Arrow, Unix Pipes and Google Sheet

houqp
294pts62
roapi.github.io 4y ago

Show HN: Query Google Sheet data using PostgreSQL clients

houqp
122pts22
arrow.apache.org 4y ago

Apache Arrow Datafusion 8.0.0 release

houqp
6pts0
crates.io 4y ago

Dynamodb based distributed lock implemented in pure Rust

houqp
1pts0
crates.io 4y ago

Dynamodb based distributed lock in Rust

houqp
3pts0
jorgecarleitao.medium.com 4y ago

How to efficiently load data to memory

houqp
1pts0
arrow.apache.org 4y ago

Embedded OLAP engine Apache Arrow Datafusion 6.0.0 release

houqp
8pts0
arrow.apache.org 4y ago

Apache Arrow DataFusion 6.0.0 Release

houqp
1pts0
arrow.apache.org 4y ago

Apache Arrow Datafusion 6.0.0 release

houqp
2pts0
github.com 4y ago

Exactly once delivery from Kafka to Delta Lake with Rust

houqp
1pts0
github.com 4y ago

Show HN: Columnq brings OLAP to Unix pipes

houqp
32pts2
github.com 4y ago

Show HN: Query small data with columnq CLI

houqp
2pts0
arrow.apache.org 4y ago

Apache Arrow Datafusion 5.0.0 release

houqp
78pts44
arrow.apache.org 4y ago

Datafusion 5.0.0 release with major new features and performance improvements

houqp
9pts1
github.com 5y ago

Show HN: Parse and Visualize Brainwaves with Rust

houqp
3pts0
tech.scribd.com 5y ago

Automatically recycling EKS worker nodes

houqp
3pts1
github.com 5y ago

Generate GraphQL API for any tabular dataset

houqp
3pts0
tech.scribd.com 5y ago

Lucid: A Swift Library for Building Robust Data Flows

houqp
3pts0

Haha, yeah, we should definitely put a little bit more efforts into SEO :) Everyone is so focused on the hard-core engineering at the moment. I think Matthew from the community is actually working on a new comprehensive benchmark for us at the moment, which I hope will be published soon.

It's manual for now, ROAPI is designed for slowly moving datasets. You just hit the data update API to force a refresh.

I have plan to add automated streaming data update in the background, starting with delta lake tables. It should all be very straight forward to implement.

There are more companies noticing this now and have stopped asking these questions. For example, we at Neuralink[1] only give out practical programming challenges. If are you good at building practical systems, you should be able to ace our coding interviews without any preparation. No leetcode and no whiteboarding. In fact, I prefer to hire those who doesn't waste time practicing leetcode.

Over the past couple years, I have interviewed at a handful of other startups who also have similar coding interview philosophies.

[1] https://neuralink.com/careers/

I think these two systems explore different design spaces, the biggest difference I would say is Roapi can apply more read optimizations by exploiting the fact that it doesn't need to support frequent online updates from the client. Most of the datasets it serves will be static. For data-sources that supports streaming updates like delta tables, the update frequency will be much lower than what clickhouse supports.

In its current form, the main use-case is to load data into memory first then serve them through query apis. Thomas has made some effort to support querying data directly from remote source without loading them into memory: https://github.com/roapi/roapi/pull/71. The underlying query engine, Apache Arrow Datafusion, supports running query on data stream on the granularity of partitions. This is not heavily used in roapi at the moment because I want to nail the in memory serving use-case first.

I looked into Datasette before starting ROAPI. From a product/use-case point of view, to me Datasette focuses more on quick and easy ad-hoc data exploration type of work. ROAPI focuses more production ready online serving of static datasets. So I would expect users to use ROAPI to power micro-services in production with high QPS.

From a technical design point of view, ROAPI authors owns the full stack end to end from query parsing, data format parsing to query execution because I am also a maintainer of Apache arrow and it's sub-project datafusion. The whole project is built with Rust end to end from scratch. Datasette is mostly a wrapper around sqlite. It translates user actions into SQL queries, then execute them on sqlite. In ROAPI, we work at a lower level. We translate REST APIs, GraphQL and SQLs into datafusion logical plans and execute them. Datafusion is also a analytical compute engine optimized for columnar data, so it will be a lot faster for OLAP workload, while sqlite is optimized for OLTP. I also plan to add other type of query capabilities like nearest neighbor vector search for ML applications, etc.

This is true, the core of it is Apache arrow datafusion query engine, which is also a project I help maintain. I doubt you will be able to beat it with PHP though ;) The VM overhead alone will cause a big hit to your performance even if we can get JIT to work.

That's right, it's intended to be more lightweight since it's built with only Rust from the ground up. Apache Drill also only focuses on serving SQL as the user interface while ROAPI wants to provide a pluggable interface to support all use-cases. For example, we can plan graphql and rest api calls into query plan and efficiently execute them using Datafusion.

I didn't dive into Vaex's implementation, but based on the example code, I would say they are similar in the sense that they all provide a Dataframe interface for end users to perform compute on relational data.

It looks like Vaex focuses more on end users like data scientists while Datafusion focuses more on being a composable embedded library for building analytical engines. For example, InfluxDB IOx, Ballista and ROAPI all uses Datafusion as the compute engine.

On top of that, Datafusion also comes with a builtin SQL planner so users can choose between Dataframe and SQL interfacts.

Datafusion, and Ballista by definition, also provides a Dataframe API that let's you construct queries programmatically. It also has preliminary support for UDFs.

We also have community members implementing Spark native executors using Datafusion, which showed significant speed improvements in the initial PoC.