Skip Navigation
InitialsDiceBearhttps://github.com/dicebear/dicebearhttps://creativecommons.org/publicdomain/zero/1.0/„Initials” (https://github.com/dicebear/dicebear) by „DiceBear”, licensed under „CC0 1.0” (https://creativecommons.org/publicdomain/zero/1.0/)LO
lorefnon @programming.dev
Posts 11
Comments 13

DBOS Cloud: A transactional serverless computing platform with first-class TypeScript environment

www.dbos.dev Hello DBOS - Announcing DBOS Cloud

Introducing transactional serverless computing for TypeScript, enabled by a revolutionary new operating system that puts a distributed DBMS in the kernel of the OS.

Hello DBOS - Announcing DBOS Cloud

> DBOS Cloud, a transactional serverless computing platform, made possible by a revolutionary new operating system, DBOS, that implements OS services on top of a distributed database. We’ve used this new architecture to build a novel TypeScript transactional programming environment that enhances applications with automatic statefulness, transactionality, observability, and cyber-resilience. This makes fault-tolerant cloud-native application development much simpler and faster.

1
overridable-fn: lightweight IoC/DI solution - Functions whose behavior can be swapped at runtime
  • Hi - I have been using this in production for a few months now, and haven't experienced significant issues with debugging or troubleshooting.

    It also helps that the library is type-safe - if we are overriding a function, we must comply with the signature of the original function for TS to pass.

    Wrt. run time errors, the use of proxy does not interfere with good stack traces, if that is what you are worried about.

    If we take the example in this gist where an overriden function throws an exception, we can see that the stack trace clearly shows the file (which overrides the hello function) where the exception is originating from.

    In effect, the DX is not much different if you use any other mechanism for making some feature runtime configurable. In comparision to most traditional IoC/DI utilities I find the DX to actually be superior:

    • Unlike a lot of other IoC solutions whose APIs are cloned/inspired from similar Java/C# libraries, you don't need to wrap things in classes to participate in the DI system
    • Also, that a function is overridable is transparent from consumer side - they just call a function that they import without needing any @Inject/@Provide boilerplate. This is great if you are writing a library or a small utility and don't want to enforce usage of a specific DI/IoC library for your consumers.

    What we don't have (and likely will never) is support for things like request scoped DI or hierarchy of IoC containers. In mostly-functional TS code I have seldom missed those patterns.

  • overridable-fn: lightweight IoC/DI solution - Functions whose behavior can be swapped at runtime

    3

    Remeda

    github.com GitHub - remeda/remeda: A utility library for JavaScript and TypeScript.

    A utility library for JavaScript and TypeScript. Contribute to remeda/remeda development by creating an account on GitHub.

    GitHub - remeda/remeda: A utility library for JavaScript and TypeScript.

    Modern utility toolbelt - rapidly evolving, type safe and esm friendly out of the box. No mutations.

    0
    typia
  • Yes, that mode works pretty well. In my case I don't really own the types (they come from a third party source) so being able to to auto generate validators from them is very convenient.

  • typia

    typia

    typia.io Nextra: the next docs builder

    Nextra: the next docs builder

    Nextra: the next docs builder

    Typia is a transformer library supporting:

    • Super-fast Runtime Validators
    • Enhanced JSON functions
    • Protocol Buffer encoder and decoder
    • Random data generator
    5
    github.com GitHub - lorefnon/collection-joiner: Type-safe utilities to join multiple collections from different sources into a single hierarchy

    Type-safe utilities to join multiple collections from different sources into a single hierarchy - GitHub - lorefnon/collection-joiner: Type-safe utilities to join multiple collections from differen...

    GitHub - lorefnon/collection-joiner: Type-safe utilities to join multiple collections from different sources into a single hierarchy

    When developing APIs or writing integration solutions, we often fetch data from multiple sources and combine them together. This requires quite a bit of boilerplate even if you use utility libraries like lodash.

    This library aims to be provide a simple type-safe utility that makes the task of combining multiple collections simpler using an intuitive association API.

    You may find this API to be reminiscent of association APIs found in ORMs. However, collection-joiner is completely agnostic about how these collections are obtained - so you could for example, fetch a list of users from a database, a list of departments from another service, a list of roles from a key value store and merge them into a single hierarchy when constructing a response.

    0

    Feature rich type-safe database migration tool for posgres

    0
    babyfish-ct/jimmer: A revolutionary ORM framework for both java and kotlin.
  • I like jooq, but after using it in a few projects, I now personally feel an Entity centric approach where you control domain objects rather than have them generated fits in better in the java/kotlin ecosystem where sooner or later you'll also need to add other annotations to the entities for jackson/spqr/microprofile-graphql etc.

    Doing this with jooq is possible (given support for custom projections etc.) but it requires significantly more boilerplate as jooq is first and foremost a db-first library.

    Having first class support for association loading etc. is also quite helpful esp. for crud-heavy applications as opposed to the jooq approach of staying closer to sql without abstractions. ymmv of course.

  • babyfish-ct/jimmer: A revolutionary ORM framework for both java and kotlin.

    github.com GitHub - babyfish-ct/jimmer: A revolutionary ORM framework for both java and kotlin.

    A revolutionary ORM framework for both java and kotlin. - GitHub - babyfish-ct/jimmer: A revolutionary ORM framework for both java and kotlin.

    GitHub - babyfish-ct/jimmer: A revolutionary ORM framework for both java and kotlin.
    3

    Utility for type-safe functional pipeline composition with support for async steps/bailouts and more

    github.com GitHub - lorefnon/fluent-piper: Type-safe left-to-right functional pipeline composition

    Type-safe left-to-right functional pipeline composition - GitHub - lorefnon/fluent-piper: Type-safe left-to-right functional pipeline composition

    GitHub - lorefnon/fluent-piper: Type-safe left-to-right functional pipeline composition
    0

    collection-joiner - A minimal typescript utility to combine multiple collections (possibly from different sources) into a single hierarchy - in a fully type-safe manner

    github.com GitHub - lorefnon/collection-joiner

    Contribute to lorefnon/collection-joiner development by creating an account on GitHub.

    GitHub - lorefnon/collection-joiner

    A minimal typescript utility to combine multiple collections (possibly from different sources) into a single hierarchy - in a fully type-safe manner.

    0
    Some *real* benchmarks on Bun (compared with Node) -- It only wins *sometimes*, but it's mostly a fail
  • Build times in nodejs are not so great in even medium size projects if you make heavy usage of advanced typescript features - either yourself or through libraries like zod. So if something makes the nodejs runtime faster, it could potentially make ts compiler faster too - for which I'd be very grateful.

  • github.com GitHub - dsherret/ts-morph: TypeScript Compiler API wrapper for static analysis and programmatic code changes.

    TypeScript Compiler API wrapper for static analysis and programmatic code changes. - GitHub - dsherret/ts-morph: TypeScript Compiler API wrapper for static analysis and programmatic code changes.

    GitHub - dsherret/ts-morph: TypeScript Compiler API wrapper for static analysis and programmatic code changes.

    Working with the primary TS compiler API is pretty arduous. It is nice to see dedicated community effort towards making this more approachable.

    0
    Does anyone have recommendations on a raw postgres typing library? pgtyped vs zapatos vs slonik?
  • In my current setup I use pgtyped and ts-sql-query together in production. I think this is a stellar combination. I have previously used zapatos but moved away in favor of current combination. I'll share my motivations below.

    Composition of tagged templates (as slonic/zapatos/squid etc. encourage) gets messy very quick esp. as queries become more dynamic. ts-sql-query is amazing for complex dynamic queries - it has great support for things like subselects, upserts, CTEs, complex projections across a breadth of mainstream databases. It especially shines for complex conditional filters where a lot of js orms fall short. Of course it also works very well for general CRUD operations.

    With libraries like zapatos single table crud operations are type-safe but for anything involving multi-table joins the library is not able to help much around type-safety and you need to provide result types yourself. If tomorrow after some schema refactoring the type of result changes, you will get a runtime exception. In case of ts-sql-query, complex multiple table operations are also type-safe and even when you perform joins on multiple tables, select some subset of columns etc. in most cases it is able to infer types. There is also a tool ts-sql-codegen (which I maintain) which is able to codegen the types from database so for common use cases the problem of keeping db schema and typescript types in sync is auto-solved for you.

    Similarl pgtyped is great when you have some queries which are not very dynamic but lean heavily on postgres specific features, or custom extensions etc. For us these are mostly reporting, analytics queries, full text search queries etc. For these cases it is convenient to interactively try out sql in a notebook, arrive at the right query and then just dump it in a sql file after making it parameterized - this eliminates the need for a manual translation from SQL to typescript API. The pgtyped type generator ensures that the generated typescript API is reasonably well typed.

    pgtyped approach becomes unwieldy if you need very dynamic query patterns unless you also lean heavily on stored procedures and pushing more logic into the database. This is something we avoid because frankly we find writing typescript much more enjoyable than pl/pgSQL. Also our services are read-heavy and being able to keep logic on ts side enables us to utilize granular caching better.

  • RSS Feeds blocked on AWS ?

    I am unable to subscribe to RSS feeds for programming.dev from a yarr instance hosted on an AWS EC2 instance (ap-south-1).

    This issue seems specific to programming.dev. I can access RSS feeds for other lemmy instances without any issues.

    I can access the feeds from browser, but when I try to fetch it on AWS I get a 403 error. Curious if this is done intentionally.

    $ wget https://programming.dev/feeds/c/programming.xml?sort=Active --2023-07-17 18:27:15-- https://programming.dev/feeds/c/programming.xml?sort=Active Resolving programming.dev (programming.dev)... 172.67.137.159, 104.21.73.21, 2606:4700:3031::ac43:899f, ... Connecting to programming.dev (programming.dev)|172.67.137.159|:443... connected. HTTP request sent, awaiting response... 403 Forbidden 2023-07-17 18:27:15 ERROR 403: Forbidden.

    0
    What are some awesome VSCode shortcuts most people don’t know about?
  • Vim has a rich ecosystem of plugins like easymotion which allow you to jump directly to different parts of the current file with minimal keystrokes. There are vscode extensions like Jumpy and Acejump which provide a similar keyboard-driven cursor jumping support for vscode.

    I highly recommend trying out one of these if you haven't already. Once you get habituated to easymotion, you wonder how you survived without this so long.

  • Postman alternatives?
  • I like it. The docs are a bit scattered and I haven't switched to it completely, but it has proven to be very handy for some scenarios where I scrape some content from external sources and pull them into a local sqlite as a long term structured archive.

  • Is anyone migrating from Java to Kotlin at work?
  • I don't use it right now, but two years ago I helped a team incrementally adopt Kotlin in a ten year old java/spring/mybatis codebase. We didn't have any android experience and in the initial few months mostly used kotlin as a better java, avoiding features that would prevent us from switching back to java if needed.

    But it worked pretty well - we didn't face much resistence from people experienced with java because they could still continue to benefit from their jvm familiarity, and the language was approachable to new folks who joined us. It also helped that we could just copy paste java code into a .kt file and intellij would convert it to kotlin.

    We didn't venture into kotlin's js/native targets but for jvm it worked out great for us.

  • Postman alternatives?
  • I also have been using httpie for a few years - it is really great.

    Recently I have started using nushell which has a similar module builtin: https://www.nushell.sh/commands/docs/http_get.html Combined with rest of the nicities in nushell its a pretty good cli experience.