Norbert Orzechowicz
banner
norbert-tech.bsky.social
Norbert Orzechowicz
@norbert-tech.bsky.social
Problem solver, software architect, also working as a Data Witcher ⚔️, hunting and killing 🧌 and 🪳in data processing pipelines! Creator of https://flow-php.com
There is something tempting about owning all those contracts and having control over everything, but on the other hand, it adds work - not much, as this would be 2 interfaces and 3 implementations (Symfony/Guzzle/curl) but still.

What would you do? 🤔
January 12, 2026 at 9:38 AM
Its a second time where I could really use an async client contract. First time was when I was building azure blob SDK for Flow Filesystem library.

I have to decide now, I could use an existing contract github.com/php-http/ht... or create my own 🤔
GitHub - php-http/httplug: HTTPlug, the HTTP client abstraction for PHP
HTTPlug, the HTTP client abstraction for PHP. Contribute to php-http/httplug development by creating an account on GitHub.
github.com
January 12, 2026 at 9:38 AM
We also upgraded the lowest supported PHP version from 8.2 to 8.3, at the same time brining support for PHP 8.5
January 7, 2026 at 4:31 PM
flow-php/etl-adapter-excel - excel adapter can now write to excel files, previously it was only reading.

With this also our playground received excel support!
January 7, 2026 at 4:31 PM
flow-php/pg-query - a php extension based on libpg providing parser / ast / deparser - thanks to it, flow-php/postgresql can parse and existing query string and turn it into query builder or perform advanced manipulations / static analysis!
January 7, 2026 at 4:31 PM
No more manual string building.
It's immutable, composable, and generates parameterized queries. Check the screenshot for a quick example
#PHP #PostgreSQL #DataEngineering
January 5, 2026 at 7:28 AM
Neither of them is good or bad, is a matter of preference, I come from Apache Spark, I do prefer DSL over constructors, because I believe that in a bigger picture DSL improves code readability.

Which one and why do you prefer?
January 2, 2026 at 12:28 PM
The reason for using functions like df() instead of new DataFrame is readability. ETL pipelines are often complex chains of transformations.

Those code samples are identical, one creates objects through factories hidden behind simple functions, other is using constructors
January 2, 2026 at 12:28 PM
totally, that's the whole purpose, it can move data between source/destination applying transformations on the fly!

Feel free to join our discord in case you have more questions
December 25, 2025 at 9:14 AM
#7 I highly encourage you take a look at our docs and share your feedback! flow-php.com/documentati...
Documentation - Flow PHP - Data Processing Framework
Documentation
flow-php.com
December 16, 2025 at 5:13 PM
#6 And this is only a beginning! What's comming next is going to make extracting data from postgresql a piece of cake.

We are working on dedicated Flow PostgreSQL extract that would let you process PostgreSQL data based on any custom query string!
December 16, 2025 at 5:13 PM
#5 flow-php/postgresql is using flow-php/types to convert data between PHP and PostgreSql that you can easily extend in order to provide your own custom converters!
December 16, 2025 at 5:13 PM