HNHacker News
TopNewBestAskShowJobs

yasserf

218 karma · joined June 11, 2015

hello! I'm Yasser, maintainer of realtime OS project deepstream.io, vramework.io, and I guess a bit of traveller!

[my public key: https://keybase.io/yasserf; my proof: https://keybase.io/yasserf/sigs/sdrko-2B8YhfS1meQMV4MyVzUecFpeP4uDaJENK_p3M]

Email: yasser.fadl@vlandor.com

submissionscomments
yasserf··on Ask HN: Freelancer? Seeking freelancer? (March 2023)
SEEKING WORK | REMOTE / occasionally onsite | London

Tech: NodeJS / AWS / React / Typescript / CI

Linkedin: https://www.linkedin.com/in/yasserfadl/ Email: yasser.fadl@vlandor.com Github: https://github.com/yasserf (OS work done under deepstream and vramework orgs)

Hey! I'm have got over a decade of experience, with a specific focus on Javascript. I worked for five years in fintech building FX exchanges, cofounded a startup (deepstream.io) and the worked as a consultant on multiple different clients as well as some personal projects.

I am accustomed to wearing multiple hats and managing multiple cloud environments (CI / NextJS / ReactNative / AWS / terraform / nodeJS).

yasserf··on Kysely: TypeScript SQL Query Builder
This is really cool, will look into using it in future projects!

I also made a tool (https://github.com/vramework/schemats) that generates the types directly from the db, which means whenever you do a DB migration your database types automatically update. Was forked from the original schemats library a couple years ago.

I also created a lightweight library ontop of pg that is less of a query builder and more of a typed CRUD + SQL for non trivial queries (https://github.com/vramework/postgres-typed). Most queries I deal with in a day to day is usually crud so I find it a little easier, but it's much less powerful then Kysely! I fall more into the camp of writing complex queries in SQL with small helpers and writing simple ones with util functions and typescript.

Edit: Will be looking into cleaning up docs and tests next month. Right now everything is in the ReadMe and examples

yasserf··on Ask HN: Freelancer? Seeking freelancer? (January 2023)
SEEKING WORK | LONDON, UK | REMOTE

Daily Technologies: Typescript / Javascript / NodeJS / React / React Native / Postgres / Redis / Terraform / AWS / Realtime Systems (streaming data / data syncing) / cucumberJS / Selenium frameworks / CI systems / Docker

Résumé/CV: on request Email: yasser.fadl@vlandor.com Github: https://github.com/yasserf LinkedIn: https://www.linkedin.com/in/yasserfadl OS projects: https://deepstream.io/, https://vramework.io/

Last Side Project: https://enjamon.com/ (this has been shelved over a year ago / is running on lambda for cost reduction so expect it to be a little slow!)

Full Stack Software engineer for over a decade. I mostly work with startups with multiple hats on (backend / frontend / aws infrastructure). Prior to that was focused on fin-tech (FX, FI and structured products).

Previous projects I worked on in the last few years:

- agreewe (still in closed beta): A web 3.0 company around smart contracts and a modular legal agreement system (can't really provide more detail till they launch)

- marta.de: A startup focused around matching caregivers to those in need (based in Germany and east europe)

- backboneplm: A startup (in production for years) that I helped simplify their AWS deployment / infrastructure via terraform and optimised their tooling / codebase to improve the day to day life of developers / QA / release cycles.

- enjamon.com: A personal project around building an audio book reader app using an audio engine that allows for experiences to be interactive. Both the studio and player (shelved for now since it's a huge project and I needed to free up some time).

- emso: A london based hedge fund where we rebuilt their inhouse solution using react and redux

- deepstreamHub: My own startup where we hosted realtime servers that provided data-sync and pub/sub in multiple different countries.

Looking for something ideally part-time.

yasserf··on Ask HN: Who wants to be hired? (January 2023)
Location: UK

Remote: Yes

Willing to relocate: No

Technologies: Javascript / NodeJS / React / React Native / Postgres / Redis / Terraform / AWS

Résumé/CV: on request

Email: yasser.fadl@vlandor.com

Currently learning: Rust

Github: https://github.com/yasserf

LinkedIn: https://www.linkedin.com/in/yasserfadl

OS projects: https://deepstream.io/, https://vramework.io/

Last Side Project: https://enjamon.com/ (this has been shelved over a year ago / is running on lambda for cost reduction so expect it to be a little slow!)

Full Stack Software engineer for over a decade. I mostly work with startups with multiple hats on (backend / frontend / aws infrastructure). Prior to that was focused on fin-tech (FX, FI and structured products).

Looking for something ideally part-time.

yasserf··on Ask HN: Freelancer? Seeking freelancer? (June 2022)
SEEKING WORK | London | Remote Only

I’m a full stack developer, with over twelve years of experience in the startup space (as a founder and CTO) and fintech / real-time.

Previous OS projects I worked on is deepstream.io, vramework.io and most recently enjamon.com (not yet OS as a passion project).

I have a lot of experience with infrastructure (aws/azure/terraform), CI/CD, reactJS, nodeJS and typescript.

You can contact me at yasser.fadl@vlandor.com

yasserf··on Ask HN: What is your “I don't care if this succeeds” project?
I just embarked a multi month project of building a medium aquaponic system in Egypt (40 cubic meters maybe) which ended up going way over budget due to local labour skills and inflation. Still though, something about trying to have a closed loop farming system is pretty satisfying.

Wouldn’t do it again here though! Was almost as stressful as being a founder with zero of the ROSI

yasserf··on Ask HN: Who wants to collaborate?
I'm working on a few projects, from one/two days to platforms.

The first is OS and is a simple nodeJS environment to deploy applications via lambda and express quickly. Sort of like nestJS except less decorators and more functional (https://vramework.io/). I already know of a few other colleagues that rolled their own propriety versions of this to support enterprise and cloud deployments so decided to OS it.

The other OS project is a strongly typed postgres/mysql driver. The idea is to generate typescript definitions directly from postgres (https://github.com/vramework/schemats) and then have a think layer ontop of pg-node that gives you strongly typed queries (https://github.com/vramework/postgres-typed).

An open-source project I spent a few years on the core team is https://deepstream.io/, a realtime-server that allows you to mix and match multiple streaming protocols (mqtt/websocket/others) and allow those clients to talk to each other using pub-sub and records. I'm not longer working for it but wanted to give it a shout out!

On a non OS project, I have been working on an immersive audio platform for a while now. The main goal is to allow users to pick and choose how audio books progress, and also have a live session mode which allows users to record their pulse / answer questions and a few other metrics and associate it with sentences. I pretty much built and deployed all of it but require some advice/brainstorming on how to proceed now. I built it to satisfy an itch when I was practicing shamanism during the first lockdown when I was in-between contracts / taking time off (enjamon.com)

I also want to build a simple web-pages strategy game based around eco-education, but don't have the bandwidth . If anyone is interested in mixing together gamification and eco-village building might be a fun conversion to bounce ideas!

All the OS projects above were used to support my personal/a couple professional projects over the last few years.

Email in profile

yasserf··on Why and how to use service injection in Node.js
Thanks for the input!

Makes a ton of sense. Services themselves are passed in other services on the constructor. The reason it isn’t done in the APIFunction is because of a uniform use / functions are called via a fixed interface.

However I think there’s a decent middle ground with typescript where it can figure out what objects are being used and then only require your tests to mock those. That way you get better typescript safety.

Thank you for the feedback!

yasserf··on Things to say when you're losing a technical argument (2001)
A guy being interviewed as a CTO was trying to argue an entire rewrite was needed to move from Postgres to MongoDB (for tabular data). His argument was, and I quote: ‘I’m right, and I don’t need to explain myself to you.’. That was to the non technical cofounder. To myself he just said, ‘I don’t mean any disrespect, but you don’t know how to scale ’. This was literally for a basic crud application with 0.1% usage on a RDS micro instance.

I would have loved to hear any technical excuse

yasserf··on Ask HN: Freelancer? Seeking freelancer? (November 2021)
SEEKING WORK - Remote / UK

Full stack developer (react / nodeJS / AWS).

I have worked on startups, helping reduce costs and improve developers lives through improvements to CI and codebases. My main expertise is realtime as I worked in fintech for almost a decade and have also co-founded deepstreamHub.

Have worked in depth with AWS / Terraform / CI tools and serverless. My main focus is nodeJS backends.

Currently working with clients to help them reach a larger audience, to simplify complex codebases, and to implement better development environments (such as typescript and quicker builds / smaller apps).

Also spend a bit of time on my own personal projects, such as:

- vramework.io - deepstream.io - enjamon.com - typed-postgres

You can reach me at yasser.fadl@vlandor.com

yasserf··on Why and how to use service injection in Node.js
Added a follow up blog entry here: https://vramework.io/blog/20211101-service-lookup-local-vs-c...
yasserf··on Why and how to use service injection in Node.js
I mentioned in other comments, but the idea behind dependency injection is mostly to be able to support multiple different platforms (AWS / AZURE / Local) without having to do anything special.

Might actually write a mini blog about it to see what people think.

yasserf··on Why and how to use service injection in Node.js
Was never a java dev. I just built alot of things that required to work both on with local systems (express / local disks), cloud systems (s3 / serverless) and a huge list of other things. Having my code deal with interfaces or services just works. Without this approach it would have been alot harder to build things like deepstream.io (or deepstreamHub ontop of it)
yasserf··on Why and how to use service injection in Node.js
I agree with the child comment that using different databases can hide away special database features (although ORMs unfortunately seem to be doing that anyways).

However I completely agree with what what's really important is the different types of services you run based on the implementation.

So for example when I develop my applications completely off grid, I use express + reaper to mimic S3 / cloud storage. When I deploy just swap it out with the AWS S3 service instead.

I also got inspired to use this pattern when building deepstream.io, it's a node server that can take any database/cache/message bus/etc and pretty much run with it (with a small library adaptor). In that case we basically say 'the minimum requirement for functionality is XYZ and if the service provides is, we are in. Super useful.

yasserf··on Why and how to use service injection in Node.js
Yeah due to the Services and CoreServices functions being completely typed we have intellisense on everything in vramework. Down to the database tables and column names in queries (when using typed-postgres or typed-mysql libraries)

https://vramework.io/design/#typescript-everywhere

yasserf··on Why and how to use service injection in Node.js
So vramework tries to avoid using OO paradigms except for services. The thing I don't really understand about functions and long lived aspects (like a database connection for example) is that if you don't encapsulate it within a class, you end up with it being on the global scope, which in some way effectively treats the global scope as your class.

How would you for example deal with having a single database pool that doesn't automatically connect on startup (when requiring a class)?

yasserf··on Why and how to use service injection in Node.js
hey! Thanks for replying!

I just looked up the service lookup pattern and your right! I'll need to update the documentation accordingly.

Would you mind sharing your thoughts on why it's an anti-pattern? Multiple companies I have worked with have all come up with their own solution for the issue of swapping out different services without requiring to touch the implementation code itself.

yasserf··on Ask HN: Freelancer? Seeking freelancer? (October 2021)
SEEKING WORK | UK / BERLIN | Remote Only

Recent Tech: NodeJS / Typescript / React / AWS / Postgres / Redis / MQTT / Terraform / realtime pubsub

Linkedin: https://uk.linkedin.com/in/yasserfadl

I'm a full-stack developer and have worked on multiple domains for the last ten years, including:

- fintech (FX / FI and Structured Products) - realtime (co-founded a startup around a realtime server called deepstream.io) - IoT - Elderly care / Matching platforms (marta.de)

Recently (2021) have spent my time between my own product enjamon.com (almost at launch stage), working part-time for marta.de where I built their backend office, matching algorithm and two client facing apps in 5 languages (as the sole developer + intern) and some open-source projects around deployment strategies and postgres/typescript node interfaces (https://github.com/vramework/schemats / https://vramework.io/).

Currently looking for a job where I can work part-time (20 hours a week) or for on-demand tasks (like optimising APIs, CI pipelines, AWS infrastructure / ReactJS Apps / integrating realtime / etc).

Contact: yasser.fadl@vlandor.com

yasserf··on Mosquitto: An open-source MQTT broker
MQTT is awesome. In deepstream.io we bridged the node MQTT protocol to deepstream which allows us to mix and match protocols. MQQT for IoT devices (and to be honest any device considering the large amount of libraries) and the deepstream JS client for node/browsers.

This pretty much allowed clustering out of the box + automatically saves messages with quality assurance set in an actual database. Plus a bit more authentication and permission tools.

https://deepstream.io/blog/20190909-release-deepstream-4.2/

Deepstream itself is under maintenance right now, but I find the concept of mixing protocols together (similar to what ably.io provides) to hit a sweet spot for development across multiple different environments/devices

yasserf··on React State Management Using ES6 Classes
yup, thanks!
yasserf··on Ask HN: What problem are you close to solving and how can we help?
I’m facing an issue where I store small binary data blobs within a Postgres column in order to benefit from delete cascades.

I’m considering moving the binary data into S3 and then doing the sync layer on the server (which means the front end requests the data from the backend and is given it back as a JSON object with base64 values).

Doing this manually via code isn’t impossible, just API intensive, so I’m wondering if this is a solved issue for anyone.

The why: The JSON blobs are recordings of words and sentences that can be copied between articles.

yasserf··on Write an SQL query builder in 150 lines of Python
I agree with your point that adding multiple layers = more attack vectors and abstraction of a really good domain specific language. But what seems to happen on most of the projects I work on is we end up hiding away extremely common logic behind helper functions. It always starts off with SQL and then slowly gets moved into higher level functions that offer a better developer experience.

Shameless plug, but I just posted a library I wrote (for node https://github.com/vramework/postgres-typed/blob/master/READ...) which pretty much is a tiny layer ontop of pg-node (which is query based / with value parameters) and provides small util functions with typescript support derived straight from postgres tables.

In an ideal world (one I think we are getting very close to) I think we will end up having SQL queries validated in our code against the actual DB structure the same way we have any other compilation error. But until then we'll need to rely on tests or helper libraries, and for the purpose of refactoring and development I find the latter more enjoyable (although still far from perfect).

yasserf··on Show HN: Typed Postgres CRUD Queries
Note: Posted again here (https://news.ycombinator.com/item?id=28327008) since the repo was private
yasserf··on Show HN: Node Typescript Postgres Query Builder
hey HN! This is a simple typescript wrapper around the npm pg-node library which provides autocomplete and validation for basic crud queries out of the box, without having to use an ORM.

I do alot of refactoring on my projects and I find crud queries to be around 80% of my APIs, so having typescript have my back really helps out.

The idea is mostly to provide helper functions for the common commands we do, and leave the more complex queries to the same query APIs in pg-node, with a couple tiny optional helper functions for field autocompletion.

Curious to hear your thoughts!

Note: Posted again from a couple hours ago since I didn't realise the repo was private!

yasserf··on Show HN: Typed Postgres CRUD Queries
hey HN!

This is a simple typescript wrapper around the npm pg-node library which provides autocomplete and validation for basic crud queries out of the box, without having to use an ORM.

I do alot of refactoring on my projects and I find crud queries to be around 80% of my APIs, so having typescript have my back really helps out.

The idea is mostly to provide helper functions for the common commands we do, and leave the more complex queries to the same query APIs in pg-node, with a couple tiny optional helper functions for field autocompletion.

Curious to hear your thoughts!

yasserf··on Ask HN: Freelancer? Seeking freelancer? (August 2021)
SEEKING WORK | UK | Remote Only

I'm a full stack developer with 12 years of experience, focused mainly on NodeJS and Javascript.

Previous experience includes working for a few banks/hedges fund, freelance with a few startups, and cofounded a few of my own including:

- themerchant: https://vimeo.com/143728632 - deepstreamHub: deepstreamhub.com - enjamon (a WIP based on interactive audio journeys): enjamon.com

Tech: React, Angular, Redux, Node.js, Express, JavaScript, AWS (Docker, Lambda, EC2, ECS, SQS, RDS, SNS, CloudFront, S3), Terraform, Postgres, Redis, MongoDB, ElasticSearch, RabbitMQ, RethinkDB, I'm currently looking for a contract that is part-time that is focused on consultancy or smaller projects (such as setting up containerized AWS environments)

I am looking for part-time contract or freelance/consulting opportunities at the moment (up to 20 hours/week).

GitHub: https://github.com/yasserf

OS projects I am/was core maintainer of: https://vramework.io/ and https://deepstream.io/

LinkedIn: https://uk.linkedin.com/in/yasserfadl

Email: yasser@vlandor.com

yasserf··on Ask HN: Hacked Ionos Email Account
this seems likely, thanks for the link!
yasserf··on Postgres to TypeScript Interfaces and Enums
No idea! Hopefully someone else might know, first time I heard about alot of these typescript tooling libraries today.
yasserf··on Postgres to TypeScript Interfaces and Enums
This is awesome! the json types part is perfect. If I found your fork earlier I would have just used that as its what I need for jsonb.

The dates solution I fixed in a rest API wrapper on the client side. It's not great but it hides away the date serialisation issues

https://github.com/vramework/vramework/blob/243db4830d22c537...

Is it performant? Not really. But it stopped us from having to deal with the string issue which worked great.

yasserf··on Postgres to TypeScript Interfaces and Enums
@jbaudanza sorry my response actually didn't reflect your suggestion at all!

Yeah I would love that sort of tool! I think theres some magic you can do with the es6 templating parsing, but that would be a bit complex to do as a supporting library

← PreviousPage 2 of 4Next →