You are viewing archived messages.
Go here to search the history.

Breck Yunits 2022-09-06 14:11:36

I'm chatting with @Jason Chan today about his new spreadsheet work (excited). His thread made me realize I hadn't made an announcement page for my spreadsheet lang/tool that we built at our wolrd in data called Explorer (free an open source, though getting your environment going is a pain, see my stripped down fork for what I use). Anyway, I just did "Add a language" to PLDB.com for Explorer (pldb.com/languages/explorer.html). If you've got a language you're working on, please add your language there too! The server that is running with write access is still unoptimized and pretty slow, so give it a second after clicking save. Or you can do things the old fashioned way and send a PR over GitHub. I think at some point soon, we're going to have a originCommunity or some keyword like that where you can list what communitie(s) helped you build/launch your language/tool. I expect when we look back at the data we'll see that some of the top new tools all shared a common origin of being at least partially developed in this slack community. Thanks Ivan Reese and Steve Krouse!

🔗 Explorer

Pasha Sadri 2022-09-07 00:08:07

I’d like to share a work in progress — skymass.dev

SkyMass is a cloud UI Server. The idea of a UI Server is to wrap everything related to the “frontend” of a typical frontend/backend modern app and offer it as a simple to use service. This includes an extensive UI component library and services like authentication, localization, theming etc.

This approach removes massive amount of complexity (CSS, DOM, React, bundlers, hosting, etc…) and allows us to build modern apps by solely writing a backend. The backend deals with accessing app data (eg: databases, apis etc..), app logic and uses the UI Server through a simple client SDK.

Checkout a sample todo list app (only ~80 SLoC) to get a better feel for SkyMass:

Live Demo: skymass.dev/app/skymass-demo/neon-todolist

Source: github.com/skymasshq/skymass-demo/blob/main/neon_todolist.mjs

Jarno Montonen 2022-09-07 06:10:08

Interesting! Does the backend serve 'standalone' web content to the browser to render or is there generic SPA UI that adapts to the messages sent by the backend? So does the todo.id ever leave the backend? Because if it does I feel like your sample is quite vulnerable to SQL injections 🙂. I do agree that server side rendered web pages get rid of quite a bit of complexity, but I do wonder what's the added value in skymass over existing server side web UI frameworks like ASP.NET Razor Pages?

Pasha Sadri 2022-09-07 21:14:58

Thanks for checking it out!

The code runs entirely on your server. I’ll add a comment to call that out.

The way it works is the backend specifies high level widgets + params (eg: table + data) that are mapped to an implementation in the UI.

What’s different:

  • It comes with a growing, high quality UI component library out of the box vs writing html+css.
  • it comes with auth (ready), localization (wip), themes (wip). the goal is to offer everything a complete app needs over time.
  • the server doesn’t expose any http ports. it opens a websocket out to the UI server. this has of security/ops benefits.
Jarno Montonen 2022-09-08 06:18:36

Okay, so maybe something similar to Blazor Server (which I'm using atm btw). Basically everything is run on server and it just sends the DOM deltas to the browser which runs a bit of javascript to apply the deltas. It also has component libraries and supports basically all ASP.NET features. Not meaning to talk down what you've built, but might be worthwhile to check it out and think about how to differentiate if you're planning to productize Skymass :)

Pasha Sadri 2022-09-08 16:50:54

No worries! I definitely welcome the feedback and it’s great to hear about alternatives (N > 1 is usually a good thing). Blazor is definitely closer 🙂 The diff is that Blazor (and Liveview) operate at the DOM level (sending DOM deltas). I think that leads to a very chatty protocol. SkyMass components try to handle as much as possible on the client and only interact with the backend for significant events (eg: table selection was changed or a button was clicked).

The other part is philosophical — SkyMass is aiming to reduce the boilerplate/config/integrations etc.. to get a complete/good app up and running to a minimum. I think there is a class of apps where you just need to get something done — and all the other stuff is creating friction that prevents people from making progress or honestly starting— eg: I find registering and setting up OAuth providers and callback endpoints etc… for a new app cumbersome. I just want to write a login protected public app with minimal effort.

Breck Yunits 2022-09-07 08:52:38

RFC: Sponsor a fact on PLDB (pldb.com/pages/sponsor-a-fact.html). A lot of people have been telling me to figure out a business model for PLDB, not just for PLDB's sake, but also so the model could be extended to other domains. This is the latest idea. Would love any feedback!

Arvind Thyagarajan 2022-09-07 14:46:47

not sure if others are seeing this issue, but pldb.com doesn't load for me due to a security issue (neither Chrome nor FF w/ https everywhere) -- certificate problem?

Breck Yunits 2022-09-07 15:20:35

Oh wow, thanks for reporting Arvind!

Breck Yunits 2022-09-07 15:21:41

@Arvind Thyagarajan I reopened this issue:

Breck Yunits 2022-09-07 15:21:46

Could you share your details there?

Breck Yunits 2022-09-07 15:21:55

Someone may need to do something to take care of it.

Joakim Ahnfelt-Rønne 2022-09-07 18:02:42

I was surprised to find TopShell there! How do you compute the number of users?

Breck Yunits 2022-09-08 05:56:39

Great question @Joakim Ahnfelt-Rønne! I just updated all the pages so that should be more obvious:

Breck Yunits 2022-09-08 05:57:10

But the specific answer for jobs is: "poorly"

Breck Yunits 2022-09-08 05:57:28

Gotta get that improved

Joakim Ahnfelt-Rønne 2022-09-08 15:57:19

Thanks 🙂 I think it's great to have a database spanning so many programming languages!

Steve Krouse 2022-09-08 13:33:33

👋 hey guys! I’ve been working on a new project & I’d love your feedback. Lmk if you get a chance to try it out, read the docs, make something cool, have thoughts. Really appreciate it! 💗

Val Town is a collaborative notebook for APIs, for building integrations between different APIs, exposing your own endpoints with a single click, etc. I think the FoC community will enjoy 1) the global namespace where you can @reference friend's values, 2) using a database to store functions and values side-by-side, and 3) console.email & lots of other features that "fall out of" trying to turn JavaScript into a cloud-native consumer product 😝

New demo video (demo val from the video)

Pasha Sadri 2022-09-08 16:53:12

I love the idea of shared variables that I can remix into my own code. I have played around with a similar concept in the past — one thing I struggled with was versioning. If my var is used by others and I changed it, what happens?

Steve Krouse 2022-09-08 16:55:28

Great question! I have rudimentary versions in the product already but no real way to access them. The plan is to encourage people to refer to pinned versions @stevekrouse.foo_v7 but also allow latest access as well stevekrouse.foo

Pasha Sadri 2022-09-08 17:05:44

if you control the IDE, you could render the val mentions specially. perhaps highlight them if there is a new version available. and/or a drop down that lists other versions. bonus points if it lets me run my code with those versions before picking one.

Steve Krouse 2022-09-08 17:06:10

Exactly, great ideas!

Pasha Sadri 2022-09-08 17:14:12

Duh - just noticed you already dealt with versions in the docs 🙂

Yousef El-Dardiry 2022-09-10 15:38:47

This looks exciting Steve Krouse! Some cool features in there, and I like the approach of “vals” as first class citizen. The collaboration modal is a bit similar to what I’m trying to do with TypeCell. Keep up the good work!

Steve Krouse 2022-09-10 17:23:17

Typecell is cool too!

Breck Yunits 2022-09-08 15:20:51
Breck Yunits 2022-09-08 22:30:21

I'm taking the weekend off, but just wanted to share one last thing before I did: pldb.com/posts/real-time-research.html

Breck Yunits 2022-09-08 22:30:42

Thank you to everyone for all your help! It's been a wild 11 days

Jan Ruzicka 2022-09-09 06:31:10

I made a CLI tool to expand tabs into aligned spaces, and vice versa infer the correct tabs from aligned spaces. It was a school project, so the documentation is in Czech (but code is in English 🙂), but feel free to contribute! I want this to actually be practical / at least inspire more practical tools, and to end the tabs-v-spaces debate with a compromise. The project is on github.com/ruza-net/columnator

Jim Meyer 2022-09-10 17:35:53

It's 2022. The most popular coding tool that UX designers use to bring their design to life is the clipboard and IDE on a developer's computer (but not until the next sprint, when the hand-off ticket has been picked up).

At Henosia, we believe that code should bend to a UX designer's will in real time.

Here's an example of how we're bringing this vision to life in a React project that uses the Braid Design System from Seek: youtube.com/watch?v=_IxOcxTfEqw

We've recently added support for Material Design (MUI), and will be fully supporting the use of a team's own coded design system as well.

It's currently in closed Alpha, but you can sign up for early access if you'd like to get your hands on it :simple_smile:

Garth Goldwater 2022-09-11 01:25:18

this looks so cool—do you have any public work about how you're analyzing the design systems to do the live bidirectional code editing or is that all secret sauce?

Jim Meyer 2022-09-11 05:06:08

Thanks Garth 🙂

Editing that's both live and bidirectional is indeed the at the very core of our secret sauce, haha 😂 Will likely do a blog post on the core tech at a later time once we've gotten our footing in the market (competition is beyond intense in this space!). Will also share it here in that case.

What I can share is this:

  • We're intentionally editing and executing TypeScript since that allows us to tap into existing code bases and ecosystems, including open source. We want teams to just be able to have designers jump into existing code bases.
  • Relatedly, we didn't invent a new programming language, which means that the work done by the TypeScript team in their language service and compiler APIs is available for us to build on
  • We're able to use two-way Git since any code reads/edits we do eventually end up as the same text files that your IDE manipulates today.
Kartik Agaram 2022-09-11 06:54:31

Off-topic: can y'all see a comment by me 10 hours ago on this thread? I just noticed it looks grey..

Jim Meyer 2022-09-11 07:01:45

Kartik Agaram Nope, I'm seeing Garth's reply as the first comment.

Kartik Agaram 2022-09-11 07:02:42

Here it is again, some overlap with Garth's comment:

The 2-way sync is great 👍 How much information do you need to provide Henosia with about a new design system for it to make minimal changes?

(I'm not a designer or Javascript developer, so I have no idea what form design systems are provided in. Is it just React components in jsx or something like that?)

Jim Meyer 2022-09-11 07:21:41

Kartik Agaram

Not much info needed. Beyond a bit of initial config to make component previews work on the canvas, we use the TypeScript source code to drive the editing you saw in the video. Specifically, we use the type information that TypeScript React components define as their props, e.g. a button will have its props defined as something like:

interface ButtonProps {

  label: string;

  size: 'small' | 'medium' | 'large'

}

We turn that information into the properties panel on the right, e.g. a size drop down with the three possible size values.

React components are found by scanning the code base that's open in the editor, and we also identify components that are available through your package.json dependencies. For example, you can have your product code base open, and insert a button from your design system library that's in a linked NPM package.

Breck Yunits 2022-09-11 15:01:55

Alright FOC. I know I do a lot of crazy things, but I've got 2 more crazy surprises left in me

Breck Yunits 2022-09-11 15:01:57

First is this one: reddit.com/r/pubIPO

Breck Yunits 2022-09-11 15:02:14

Join/Upvote, if for nothing else for the education

Breck Yunits 2022-09-11 15:02:31

I'll share everything as I go, so you can get a front row seat to wtf IPO means

Breck Yunits 2022-09-11 15:02:46

and see how many mistakes I can make in a single day