Oof ok yeah. I hadn't realized that beam had a hard JVM requirement. I
think that initially offering a local or block storage based solution with
easy extensions for users is totally in line with airflow philosophy. I
think that offering alternative transfer operators inproviders is a great
idea!

On Sun, Sep 6, 2020, 9:07 AM Ash Berlin-Taylor <[email protected]> wrote:

> No strong opinion - but it seems like generic is the easiest for us to
> code (as we have most of it already via hooks?) and adopt (and doesn't
> place a hard requirement on Beam/JVM, even if JVM would only be runtime.
> Still)
>
> This is possibly where Airflow has a core TransferOperator, and
> providers.apache.beam.operators.BeamTransferOperator? If the "same" python
> API could be used for both, and it doesn't needlessly complicated things.
>
> -a
>
> On 6 September 2020 16:20:37 BST, Tomasz Urbaszek <[email protected]>
> wrote:
> >Thanks, Ash for pointing to https://pypi.org/project/smart-open/ This
> >one looks really interesting for blob storages transfer!
> >
> >As stated in the initial design doc I don't think we should focus on
> >best performance but rather on versatility. Currently, we have many
> >AtoB operators that do not yield the highest performance but do their
> >work and are widely used.
> >
> >I would say that we should prepare an AIP that will propose two
> >approaches: generic vs beam. This will allow us to compare them and
> >then we can vote which one is better from the Airflow community
> >perspective.
> >
> >What do you think?
> >
> >Tomek
> >
> >
> >On Sun, Sep 6, 2020 at 2:42 PM Ash Berlin-Taylor <[email protected]>
> >wrote:
> >>
> >> For background: in the past I had an S3 to S3 transfer using
> >smartopen (since we wanted to split one giant ~300GB file onto smaller
> >parts) and it took about 10mins, so even "large" uses can work fine in
> >Airflow - no JVM required.
> >>
> >> -ash
> >>
> >> On 6 September 2020 12:01:24 BST, Tomasz Urbaszek
> ><[email protected]> wrote:
> >> >I think using direct runner as default with the option to specify
> >> >other setup is a win-win. However, there are few doubts I have about
> >> >Beam based approach:
> >> >
> >> >1. Dependency management. If I do `pip install apache-airflow[gcp]`
> >> >will it install `apache-beam[gcp]`? What if there's a version clash
> >> >between dependencies?
> >> >
> >> >2. The initial approach using `DataSource` concept allowed users to
> >> >use it in any operator (not only transfer ones). In case of relying
> >on
> >> >Beam we are losing this.
> >> >
> >> >3. I'm not a Beam expert but it seems to not support any data
> >lineage
> >> >solution?
> >> >
> >> >
> >> >On Sun, Sep 6, 2020 at 6:15 AM Daniel Imberman
> >> ><[email protected]> wrote:
> >> >>
> >> >> I think there are absolutely use-cases for both. I’m totally fine
> >> >with saying “for small/medium use-cases, we come with an in-house
> >> >system. However for larger cases, you’ll require spark/Flink/S3.
> >That’s
> >> >totally in line with PLENTY of use-cases. This would be especially
> >cool
> >> >when matched with fast-follow as we could EVEN potentially tie in
> >data
> >> >locality.
> >> >>
> >> >> via Newton Mail
> >>
> >>[
> https://cloudmagic.com/k/d/mailapp?ct=dx&cv=10.0.50&pv=10.15.6&source=email_footer_2
> ]
> >> >> On Sat, Sep 5, 2020 at 5:11 PM, Austin Bennett
> >> ><[email protected]> wrote:
> >> >> I believe - for not large data - the direct runner is wholly
> >doable,
> >> >which
> >> >> seems in line with airflow patterns. I have, and have spoken with
> >> >several
> >> >> others that have, been productive with that runner.
> >> >>
> >> >> For much larger transfers, the generic operator could accept
> >> >parameters for
> >> >> submitting the compute to an actual runner. Though, imagining that
> >> >> (needing a runner) would not be the primary use case for such an
> >> >operator.
> >> >>
> >> >>
> >> >> On Tue, Sep 1, 2020, 11:52 PM Tomasz Urbaszek
> ><[email protected]>
> >> >wrote:
> >> >>
> >> >> > Austin, you are right, Beam covers all (and more) important IOs.
> >> >> > However, using Apache Beam to design a generic transfer operator
> >> >> > requires Airflow users to have additional resources that will be
> >> >used
> >> >> > as a runner (Spark, Flink, etc.). Unless you suggest using
> >> >> > DirectRunner?
> >> >> >
> >> >> > Can you please tell us more how exactly you think we can use
> >Beam
> >> >for
> >> >> > those Airflow transfer operators?
> >> >> >
> >> >> > Best,
> >> >> > Tomek
> >> >> >
> >> >> >
> >> >> > On Wed, Sep 2, 2020 at 12:37 AM Austin Bennett
> >> >> > <[email protected]> wrote:
> >> >> > >
> >> >> > > Are there IOs that would be desired for a generic transfer
> >> >operator that
> >> >> > > don't exist in:
> >> >https://beam.apache.org/documentation/io/built-in/ <-
> >> >> > > there is pretty solid coverage?
> >> >> > >
> >> >> > > Beam is getting to the point where even python beam can
> >leverage
> >> >the java
> >> >> > > IOs, which increases the range of IOs (and performance).
> >> >> > >
> >> >> > >
> >> >> > >
> >> >> > > On Tue, Sep 1, 2020 at 3:24 PM Jarek Potiuk
> >> ><[email protected]>
> >> >> > > wrote:
> >> >> > >
> >> >> > > > But I believe those two ideas are separate ones as Tomek
> >> >explained :)
> >> >> > > >
> >> >> > > > On Wed, Sep 2, 2020 at 12:03 AM Jarek Potiuk
> >> ><[email protected]
> >> >> > >
> >> >> > > > wrote:
> >> >> > > >
> >> >> > > > > I love the idea of connecting the projects more closely!
> >> >> > > > >
> >> >> > > > > I've been helping recently as a consultant in improving
> >the
> >> >Apache
> >> >> > Beam
> >> >> > > > > build infrastructure (in many parts based on my Airflow
> >> >experience
> >> >> > and
> >> >> > > > > Github Actions - even recently they adopted the "cancel"
> >> >action I
> >> >> > > > developed
> >> >> > > > > for Apache Airflow).
> >> >https://github.com/apache/beam/pull/12729
> >> >> > > > >
> >> >> > > > > Synergies in Apache projects are cool.
> >> >> > > > >
> >> >> > > > > J.
> >> >> > > > >
> >> >> > > > >
> >> >> > > > > On Tue, Sep 1, 2020 at 11:16 PM Gerard Casas Saez
> >> >> > > > > <[email protected]> wrote:
> >> >> > > > >
> >> >> > > > >> Agree on keeping those separate, just intervened as I
> >> >believe its a
> >> >> > > > great
> >> >> > > > >> idea. But lets keep @beam and @spark to a separate
> >thread.
> >> >> > > > >>
> >> >> > > > >>
> >> >> > > > >> Gerard Casas Saez
> >> >> > > > >> Twitter | Cortex | @casassaez
> ><http://twitter.com/casassaez>
> >> >> > > > >>
> >> >> > > > >>
> >> >> > > > >> On Tue, Sep 1, 2020 at 2:14 PM Tomasz Urbaszek <
> >> >> > [email protected]>
> >> >> > > > >> wrote:
> >> >> > > > >>
> >> >> > > > >> > Daniel is right we have few Apache Beam committers in
> >> >Polidea so
> >> >> > we
> >> >> > > > >> > will ask for advice. However, I would be highly in
> >favor
> >> >of
> >> >> > having it
> >> >> > > > >> > as Gerard suggested as @beam decorator. This is
> >something
> >> >we
> >> >> > should
> >> >> > > > >> > put into another AIP together with the mentioned @spark
> >> >decorator.
> >> >> > > > >> >
> >> >> > > > >> > Our proposition of transfer operators was mainly to
> >create
> >> >> > something
> >> >> > > > >> > Airflow-native that works out of the box and allows us
> >to
> >> >simplify
> >> >> > > > >> > read/write from external sources. Thus, it requires no
> >> >external
> >> >> > > > >> > dependency other than the library to communicate with
> >the
> >> >API. In
> >> >> > the
> >> >> > > > >> > case of Beam we need more than that I think.
> >> >> > > > >> >
> >> >> > > > >> > Additionally, the ideas of Source and Destination play
> >> >nicely with
> >> >> > > > >> > data lineage and may bring more interest to this
> >feature
> >> >of
> >> >> > Airflow.
> >> >> > > > >> >
> >> >> > > > >> > Cheers,
> >> >> > > > >> > Tomek
> >> >> > > > >> >
> >> >> > > > >> >
> >> >> > > > >> > On Tue, Sep 1, 2020 at 9:31 PM Kaxil Naik
> >> ><[email protected]>
> >> >> > > > wrote:
> >> >> > > > >> > >
> >> >> > > > >> > > Nice. Just a note here, we will need to make sure
> >that
> >> >those
> >> >> > > > "Source"
> >> >> > > > >> and
> >> >> > > > >> > > "Destination" needs to be serializable.
> >> >> > > > >> > >
> >> >> > > > >> > > On Tue, Sep 1, 2020, 20:00 Daniel Imberman <
> >> >> > > > [email protected]
> >> >> > > > >> >
> >> >> > > > >> > > wrote:
> >> >> > > > >> > >
> >> >> > > > >> > > > Interesting! Beam also could potentially allow
> >> >transfers
> >> >> > within
> >> >> > > > >> > Dask/any
> >> >> > > > >> > > > other system with a java/python SDK? I think @jarek
> >> >and
> >> >> > Polidea
> >> >> > > > do a
> >> >> > > > >> > lot of
> >> >> > > > >> > > > work with Beam as well so I’d love their thoughts
> >if
> >> >this a
> >> >> > good
> >> >> > > > >> > use-case.
> >> >> > > > >> > > >
> >> >> > > > >> > > > via Newton Mail [
> >> >> > > > >> > > >
> >> >> > > > >> >
> >> >> > > > >>
> >> >> > > >
> >> >> >
> >>
> >>
> https://cloudmagic.com/k/d/mailapp?ct=dx&cv=10.0.50&pv=10.15.6&source=email_footer_2
> >> >> > > > >> > > > ]
> >> >> > > > >> > > > On Tue, Sep 1, 2020 at 11:46 AM, Gerard Casas Saez
> ><
> >> >> > > > >> > [email protected]>
> >> >> > > > >> > > > wrote:
> >> >> > > > >> > > > I would be highly in favour of having a generic
> >Beam
> >> >operator.
> >> >> > > > >> Similar
> >> >> > > > >> > > > to @spark_task decorator. Something where you can
> >> >easily
> >> >> > define
> >> >> > > > and
> >> >> > > > >> > wrap a
> >> >> > > > >> > > > beam pipeline and convert it to an Airflow
> >operator.
> >> >> > > > >> > > >
> >> >> > > > >> > > > Gerard Casas Saez
> >> >> > > > >> > > > Twitter | Cortex | @casassaez
> >> ><http://twitter.com/casassaez>
> >> >> > > > >> > > >
> >> >> > > > >> > > >
> >> >> > > > >> > > > On Tue, Sep 1, 2020 at 12:44 PM Austin Bennett <
> >> >> > > > >> > > > [email protected]>
> >> >> > > > >> > > > wrote:
> >> >> > > > >> > > >
> >> >> > > > >> > > > > Are you guys familiar with Beam
> >> ><https://beam.apache.org>?
> >> >> > Esp.
> >> >> > > > >> if
> >> >> > > > >> > not
> >> >> > > > >> > > > > doing transforms, it might rather straightforward
> >to
> >> >rely
> >> >> > on the
> >> >> > > > >> > > > ecosystem
> >> >> > > > >> > > > > of connectors in that Apache Project to use as
> >the
> >> >> > foundations
> >> >> > > > >> for a
> >> >> > > > >> > > > > generic transfer operator.
> >> >> > > > >> > > > >
> >> >> > > > >> > > > > On Tue, Sep 1, 2020 at 11:05 AM Jarek Potiuk <
> >> >> > > > >> > [email protected]>
> >> >> > > > >> > > > > wrote:
> >> >> > > > >> > > > >
> >> >> > > > >> > > > > > +1
> >> >> > > > >> > > > > >
> >> >> > > > >> > > > > > On Tue, Sep 1, 2020 at 1:35 PM Kamil Olszewski
> ><
> >> >> > > > >> > > > > > [email protected]>
> >> >> > > > >> > > > > > wrote:
> >> >> > > > >> > > > > >
> >> >> > > > >> > > > > > > Hello all,
> >> >> > > > >> > > > > > > since there have been no new comments shared
> >in
> >> >the POC
> >> >> > doc
> >> >> > > > >> > > > > > > <
> >> >> > > > >> > > > > > >
> >> >> > > > >> > > > > >
> >> >> > > > >> > > > >
> >> >> > > > >> > > >
> >> >> > > > >> >
> >> >> > > > >>
> >> >> > > >
> >> >> >
> >>
> >>
> https://docs.google.com/document/d/1o7Ph7RRNqLWkTbe7xkWjb100eFaK1Apjv27LaqHgNkE/edit
> >> >> > > > >> > > > > > > >
> >> >> > > > >> > > > > > > for a couple of days, then I will proceed
> >with
> >> >creating
> >> >> > an
> >> >> > > > AIP
> >> >> > > > >> > for
> >> >> > > > >> > > > this
> >> >> > > > >> > > > > > > feature, if that is ok with everybody.
> >> >> > > > >> > > > > > > Best regards,
> >> >> > > > >> > > > > > > Kamil
> >> >> > > > >> > > > > > > On Thu, Aug 27, 2020 at 10:50 AM Tomasz
> >Urbaszek
> >> ><
> >> >> > > > >> > > > [email protected]
> >> >> > > > >> > > > > >
> >> >> > > > >> > > > > > > wrote:
> >> >> > > > >> > > > > > >
> >> >> > > > >> > > > > > > > I like the approach as it itnroduces
> >another
> >> >> > interesting
> >> >> > > > >> > operators'
> >> >> > > > >> > > > > > > > interface standarization. It would be
> >awesome
> >> >to here
> >> >> > more
> >> >> > > > >> > opinions
> >> >> > > > >> > > > > :)
> >> >> > > > >> > > > > > > >
> >> >> > > > >> > > > > > > > Cheers,
> >> >> > > > >> > > > > > > > Tomek
> >> >> > > > >> > > > > > > >
> >> >> > > > >> > > > > > > > On Wed, Aug 19, 2020 at 8:10 PM Jarek
> >Potiuk <
> >> >> > > > >> > > > > [email protected]
> >> >> > > > >> > > > > > >
> >> >> > > > >> > > > > > > > wrote:
> >> >> > > > >> > > > > > > >
> >> >> > > > >> > > > > > > > > I like the idea a lot. Similar things
> >have
> >> >been
> >> >> > > > discussed
> >> >> > > > >> > before
> >> >> > > > >> > > > > but
> >> >> > > > >> > > > > > > the
> >> >> > > > >> > > > > > > > > proposal is I think rather pragmatic and
> >> >solves a
> >> >> > real
> >> >> > > > >> > problem
> >> >> > > > >> > > > (and
> >> >> > > > >> > > > > > it
> >> >> > > > >> > > > > > > > does
> >> >> > > > >> > > > > > > > > not seem to be too complex to implement)
> >> >> > > > >> > > > > > > > >
> >> >> > > > >> > > > > > > > > There is some discussion about it already
> >in
> >> >the
> >> >> > > > document
> >> >> > > > >> > (please
> >> >> > > > >> > > > > > > > chime-in
> >> >> > > > >> > > > > > > > > for those interested) but here a few
> >points
> >> >why I
> >> >> > like
> >> >> > > > it:
> >> >> > > > >> > > > > > > > >
> >> >> > > > >> > > > > > > > > - performance and optimization is not a
> >> >focus for
> >> >> > that.
> >> >> > > > >> For
> >> >> > > > >> > > > generic
> >> >> > > > >> > > > > > > stuff
> >> >> > > > >> > > > > > > > > it is usually to write "optimal" solution
> >> >but once
> >> >> > you
> >> >> > > > >> admit
> >> >> > > > >> > you
> >> >> > > > >> > > > > are
> >> >> > > > >> > > > > > > not
> >> >> > > > >> > > > > > > > > going to focus for optimisation, you come
> >> >with
> >> >> > simpler
> >> >> > > > and
> >> >> > > > >> > easier
> >> >> > > > >> > > > > to
> >> >> > > > >> > > > > > > use
> >> >> > > > >> > > > > > > > > solutions
> >> >> > > > >> > > > > > > > >
> >> >> > > > >> > > > > > > > > - on the other hand - it uses very
> >> >"Python'y"
> >> >> > approach
> >> >> > > > >> with
> >> >> > > > >> > using
> >> >> > > > >> > > > > > > > > Airflow's familiar concepts (connection,
> >> >transfer)
> >> >> > and
> >> >> > > > has
> >> >> > > > >> > the
> >> >> > > > >> > > > > > > potential
> >> >> > > > >> > > > > > > > of
> >> >> > > > >> > > > > > > > > plugging in into 100s of hooks we have
> >> >already
> >> >> > easily -
> >> >> > > > >> > > > leveraging
> >> >> > > > >> > > > > > all
> >> >> > > > >> > > > > > > > the
> >> >> > > > >> > > > > > > > > "providers" richness of Airflow.
> >> >> > > > >> > > > > > > > >
> >> >> > > > >> > > > > > > > > - it aims to be easy to do "quick start"
> >-
> >> >if you
> >> >> > have a
> >> >> > > > >> > number
> >> >> > > > >> > > > of
> >> >> > > > >> > > > > > > > > different sources/targets and as a data
> >> >scientist
> >> >> > you
> >> >> > > > >> would
> >> >> > > > >> > like
> >> >> > > > >> > > > to
> >> >> > > > >> > > > > > > > quickly
> >> >> > > > >> > > > > > > > > start transferring data between them -
> >you
> >> >can do it
> >> >> > > > >> easily
> >> >> > > > >> > with
> >> >> > > > >> > > > > > only
> >> >> > > > >> > > > > > > > > basic python knowledge and simple DAG
> >> >structure.
> >> >> > > > >> > > > > > > > >
> >> >> > > > >> > > > > > > > > - it should be possible to plug it in
> >into
> >> >our new
> >> >> > > > >> functional
> >> >> > > > >> > > > > > approach
> >> >> > > > >> > > > > > > as
> >> >> > > > >> > > > > > > > > well as future lineage discussions as it
> >> >makes
> >> >> > > > connection
> >> >> > > > >> > between
> >> >> > > > >> > > > > > > sources
> >> >> > > > >> > > > > > > > > and targets
> >> >> > > > >> > > > > > > > >
> >> >> > > > >> > > > > > > > > - it opens up possibilities of adding
> >simple
> >> >and
> >> >> > > > flexible
> >> >> > > > >> > data
> >> >> > > > >> > > > > > > > > transformation on-transfer. Not a
> >> >replacement for
> >> >> > any of
> >> >> > > > >> the
> >> >> > > > >> > > > > external
> >> >> > > > >> > > > > > > > > services that Airflow should use (Airflow
> >is
> >> >an
> >> >> > > > >> > orchestrator, not
> >> >> > > > >> > > > > > data
> >> >> > > > >> > > > > > > > > processing solution) but for the kind of
> >> >quick-start
> >> >> > > > >> > scenarios I
> >> >> > > > >> > > > > > > foresee
> >> >> > > > >> > > > > > > > it
> >> >> > > > >> > > > > > > > > might be most useful, being able to apply
> >> >simple
> >> >> > data
> >> >> > > > >> > > > > transformation
> >> >> > > > >> > > > > > on
> >> >> > > > >> > > > > > > > the
> >> >> > > > >> > > > > > > > > fly by data scientist might be a big
> >plus.
> >> >> > > > >> > > > > > > > >
> >> >> > > > >> > > > > > > > > Suggestion: Panda DataFrame as the format
> >of
> >> >the
> >> >> > "data"
> >> >> > > > >> > component
> >> >> > > > >> > > > > > > > >
> >> >> > > > >> > > > > > > > > Kamil - you should have access now.
> >> >> > > > >> > > > > > > > >
> >> >> > > > >> > > > > > > > > J.
> >> >> > > > >> > > > > > > > >
> >> >> > > > >> > > > > > > > >
> >> >> > > > >> > > > > > > > > On Tue, Aug 18, 2020 at 6:53 PM Kamil
> >> >Olszewski <
> >> >> > > > >> > > > > > > > > [email protected]>
> >> >> > > > >> > > > > > > > > wrote:
> >> >> > > > >> > > > > > > > >
> >> >> > > > >> > > > > > > > > > Hello all,
> >> >> > > > >> > > > > > > > > > in Polidea we have come up with an idea
> >> >for a
> >> >> > generic
> >> >> > > > >> > transfer
> >> >> > > > >> > > > > > > operator
> >> >> > > > >> > > > > > > > > > that would be able to transport data
> >> >between two
> >> >> > > > >> > destinations
> >> >> > > > >> > > > of
> >> >> > > > >> > > > > > > > various
> >> >> > > > >> > > > > > > > > > types (file, database, storage, etc.) -
> >> >please
> >> >> > find
> >> >> > > > the
> >> >> > > > >> > link
> >> >> > > > >> > > > > with a
> >> >> > > > >> > > > > > > > short
> >> >> > > > >> > > > > > > > > > doc with POC
> >> >> > > > >> > > > > > > > > > <
> >> >> > > > >> > > > > > > > > >
> >> >> > > > >> > > > > > > > >
> >> >> > > > >> > > > > > > >
> >> >> > > > >> > > > > > >
> >> >> > > > >> > > > > >
> >> >> > > > >> > > > >
> >> >> > > > >> > > >
> >> >> > > > >> >
> >> >> > > > >>
> >> >> > > >
> >> >> >
> >>
> >>
> https://docs.google.com/document/d/1o7Ph7RRNqLWkTbe7xkWjb100eFaK1Apjv27LaqHgNkE/edit?usp=sharing
> >> >> > > > >> > > > > > > > > > >
> >> >> > > > >> > > > > > > > > > where we can discuss the design
> >initially.
> >> >Once we
> >> >> > > > come
> >> >> > > > >> to
> >> >> > > > >> > the
> >> >> > > > >> > > > > > > initial
> >> >> > > > >> > > > > > > > > > conclusion I can create an AIP on cWiki
> >-
> >> >can I
> >> >> > ask
> >> >> > > > for
> >> >> > > > >> > > > > permission
> >> >> > > > >> > > > > > to
> >> >> > > > >> > > > > > > > do
> >> >> > > > >> > > > > > > > > so
> >> >> > > > >> > > > > > > > > > (my id is 'kamil.olszewski')? I believe
> >> >that
> >> >> > during
> >> >> > > > the
> >> >> > > > >> > > > > discussion
> >> >> > > > >> > > > > > we
> >> >> > > > >> > > > > > > > > > should definitely aim for this feature
> >to
> >> >be
> >> >> > released
> >> >> > > > >> only
> >> >> > > > >> > > > after
> >> >> > > > >> > > > > > > > Airflow
> >> >> > > > >> > > > > > > > > > 2.0 is out.
> >> >> > > > >> > > > > > > > > >
> >> >> > > > >> > > > > > > > > > What do you think about this idea?
> >Would
> >> >you find
> >> >> > such
> >> >> > > > >> an
> >> >> > > > >> > > > > operator
> >> >> > > > >> > > > > > > > > helpful
> >> >> > > > >> > > > > > > > > > in your pipelines? Maybe you already
> >use a
> >> >similar
> >> >> > > > >> > solution or
> >> >> > > > >> > > > > know
> >> >> > > > >> > > > > > > > > > packages that could be used to
> >implement
> >> >it?
> >> >> > > > >> > > > > > > > > >
> >> >> > > > >> > > > > > > > > > Best regards,
> >> >> > > > >> > > > > > > > > > --
> >> >> > > > >> > > > > > > > > >
> >> >> > > > >> > > > > > > > > > Kamil Olszewski
> >> >> > > > >> > > > > > > > > > Polidea <https://www.polidea.com> |
> >> >Software
> >> >> > Engineer
> >> >> > > > >> > > > > > > > > >
> >> >> > > > >> > > > > > > > > > M: +48 503 361 783
> >> >> > > > >> > > > > > > > > > E: [email protected]
> >> >> > > > >> > > > > > > > > >
> >> >> > > > >> > > > > > > > > > Unique Tech
> >> >> > > > >> > > > > > > > > > Check out our projects! <
> >> >> > > > >> https://www.polidea.com/our-work>
> >> >> > > > >> > > > > > > > > >
> >> >> > > > >> > > > > > > > >
> >> >> > > > >> > > > > > > > >
> >> >> > > > >> > > > > > > > > --
> >> >> > > > >> > > > > > > > >
> >> >> > > > >> > > > > > > > > Jarek Potiuk
> >> >> > > > >> > > > > > > > > Polidea <https://www.polidea.com/> |
> >> >Principal
> >> >> > Software
> >> >> > > > >> > Engineer
> >> >> > > > >> > > > > > > > >
> >> >> > > > >> > > > > > > > > M: +48 660 796 129 <+48660796129>
> >> >> > > > >> > > > > > > > > [image: Polidea]
> ><https://www.polidea.com/>
> >> >> > > > >> > > > > > > > >
> >> >> > > > >> > > > > > > >
> >> >> > > > >> > > > > > >
> >> >> > > > >> > > > > > >
> >> >> > > > >> > > > > > > --
> >> >> > > > >> > > > > > >
> >> >> > > > >> > > > > > > Kamil Olszewski
> >> >> > > > >> > > > > > > Polidea <https://www.polidea.com> | Software
> >> >Engineer
> >> >> > > > >> > > > > > >
> >> >> > > > >> > > > > > > M: +48 503 361 783
> >> >> > > > >> > > > > > > E: [email protected]
> >> >> > > > >> > > > > > >
> >> >> > > > >> > > > > > > Unique Tech
> >> >> > > > >> > > > > > > Check out our projects! <
> >> >> > https://www.polidea.com/our-work>
> >> >> > > > >> > > > > > >
> >> >> > > > >> > > > > >
> >> >> > > > >> > > > > >
> >> >> > > > >> > > > > > --
> >> >> > > > >> > > > > >
> >> >> > > > >> > > > > > Jarek Potiuk
> >> >> > > > >> > > > > > Polidea <https://www.polidea.com/> | Principal
> >> >Software
> >> >> > > > >> Engineer
> >> >> > > > >> > > > > >
> >> >> > > > >> > > > > > M: +48 660 796 129 <+48660796129>
> >> >> > > > >> > > > > > [image: Polidea] <https://www.polidea.com/>
> >> >> > > > >> > > > > >
> >> >> > > > >> > > > >
> >> >> > > > >> >
> >> >> > > > >> >
> >> >> > > > >> >
> >> >> > > > >> > --
> >> >> > > > >> >
> >> >> > > > >> > Tomasz Urbaszek
> >> >> > > > >> > Polidea | Software Engineer
> >> >> > > > >> >
> >> >> > > > >> > M: +48 505 628 493
> >> >> > > > >> > E: [email protected]
> >> >> > > > >> >
> >> >> > > > >> > Unique Tech
> >> >> > > > >> > Check out our projects!
> >> >> > > > >> >
> >> >> > > > >>
> >> >> > > > >
> >> >> > > > >
> >> >> > > > > --
> >> >> > > > >
> >> >> > > > > Jarek Potiuk
> >> >> > > > > Polidea <https://www.polidea.com/> | Principal Software
> >> >Engineer
> >> >> > > > >
> >> >> > > > > M: +48 660 796 129 <+48660796129>
> >> >> > > > > [image: Polidea] <https://www.polidea.com/>
> >> >> > > > >
> >> >> > > > >
> >> >> > > >
> >> >> > > > --
> >> >> > > >
> >> >> > > > Jarek Potiuk
> >> >> > > > Polidea <https://www.polidea.com/> | Principal Software
> >> >Engineer
> >> >> > > >
> >> >> > > > M: +48 660 796 129 <+48660796129>
> >> >> > > > [image: Polidea] <https://www.polidea.com/>
> >> >> > > >
> >> >> >
>

Reply via email to