252 karma · joined March 24, 2015
Mesop also drew inspiration from frameworks like LiveView (for Elixir/Phoenix) https://hexdocs.pm/phoenix_live_view/welcome.html which have demonstrated the viability of building server-driven web UIs for a number of years now.
Where I think Mesop shines is that you get a lot of flexibility, just by writing your UI in Python. For example, Mesop has an out-of-the-box [chat component](https://google.github.io/mesop/demo/), but if you need to customize it, you can actually just copy the [chat.py file](https://github.com/google/mesop/blob/main/mesop/labs/chat.py) and customize it however you want.
In comparison, Streamlit is great to get started with, but once you're trying to do some complex customizations, you'll often need to write your own React/TypeScript component.
I think the other thing is that Mesop has a [different philosophy for building UIs](https://google.github.io/mesop/blog/2024/05/13/why-mesop/) (e.g. based on functions) which results in a distinctly different developer experience. This is, of course, subjective, but I think the Mesop approach scales well as your app grows (e.g. thousands of lines), which even internal tools and demos oftentimes do.
If you like tailwind, I think you will like this as it's essentially like writing inline styles, but with a Pythonic, strongly-typed API.
I think supporting Python -> WASM could be one of the options we support, but there's probably always a need to support Python on the server, simply due to the ecosystem (e.g. dependencies) that's around it.
[1] https://pyodide.org/en/stable/project/roadmap.html#reducing-...
Re: flet - flet intentionally takes a more imperative approach whereas Mesop embraces a declarative UI approach (as popularized by React, et al). I think the declarative UI approach scales better as apps get more complex, but I think the best way to see the difference is to look at some of the examples and see which approach you like more.
Re: nicegui - at the high level, there's definitely some similarities with the component-centric UI model. The data binding/state management works quite a bit differently and Mesop's approach provides stronger type-safety and, IMO, is more Pythonic, but that said, there's a lot of good options in this space and I think it's neat to look at all the innovation that's happening here, and ultimately, some of this is based on aesthetics and how you like to code your UIs.
I haven't used it personally (this is separate from mesop), but it looks like a way to program desktop guis (among other platforms ( in Python
If you take a look at the "table" example on the demo gallery: https://google.github.io/mesop/demo/ it shows how to use Pandas w/ Mesop, so I'm not sure what's going on.
Take a look at https://google.github.io/mesop/internal/architecture/ for an explainer on how the client-server interaction works and let me know if you have any questions!
Re: calling backend, yeah you can use requests or anything else (e.g API client libs, talk to DB directly). The beauty is that you're just writing regular python code
For example, the demo gallery (https://google.github.io/mesop/demo/) itself is a Mesop app which is hosted on Cloud Run
If everyone contributes their pet UI feature (e.g. custom theme, use XYZ monospace font), then there will be dozens of features that only 0.01% of users use, but it increases the overall complexity of the product and maintenance burden.
Perhaps this was posted too early and should actually link to more in-depth docs?
I'm curious, what's the react native support like for Firestore / firebase in general?
https://docs.microsoft.com/en-us/azure/documentdb/documentdb...
The advantages seem to be that you get a cleaner git history, and you can keep all the "in-between" / WIP commits that tell the story. Is this done through an automated tooling or is someone manually rebasing it into master? It seems to be a really useful practice so I'm curious how people do it. It would be great if GitHub could offer this natively, as I think many power Git users appreciate the benefits of rebasing over merging.
I looked at them once before, and there's nothing super close to where I live (would need to drive to pick it up), but I'd definitely consider using it if there was someone who cooked within walking distance of me.
A quick timeline (from what I can remember):
- Initially started out in Berkeley / Emeryville area by a couple of Berkeley alumni who had previously launched a food delivery startup focused on midnight munchies (aka, unhealthy food for college-type students). Each meal was initially only $6, tasted quite good, and delivery only took ~15 minutes.
- Expanded to Oakland area (first Downtown, then eventually other areas like Lake Merritt). Meals were still only $6, taste was usually good but sometimes wasn't as good. Delivery was still fairly fast (usually <15 minutes), but could take up to 30 minutes.
- Expanded to SF. Meals became more expensive and had variable pricing (I think it was first $8, $10, then $12, depending on which dish). A delivery fee ($2.50) was created. Food quality dropped (usually was OK, but not as good as it used to be); meals could take up to 1hr to get delivered (usually under <30 min though)
- Started their elite food delivery plans which provided free meal delivery and a bit of extra credit, by agreeing to pay upfront each month (e.g. $20).
Thoughts:
- From a business perspective, I think SpoonRocket (SR) made a lot of the right moves. While a lot of people say "disruptive innovation" loosely right now, I think SR actually did it by: 1) focusing on a low-end market that wasn't well addressed (e.g. college students), 2) used a technology to rapidly improve the experience for this low-end market (e.g. using Google Maps to efficiently route drivers to deliver on-demand meals), and 3) go upstream in the market to gain market share in higher-end consumer segments.
- So why did SR fail? I'm speculating here, but I think it's because scaling all these type of on-delivery startups is really, really hard work. Unlike Google or Facebook which could effortlessly scale up across the world with its technology-heavy solution, scaling up a company like SR requires hiring a linear amount of employees like drivers and support staff. As others have noted, it's difficult to get the economics right for an inherently low-margin business with a high labor component.
- Can other food startups succeed? I'm willing to bet most food startups probably won't survive this fundraising crunch if it extends another year. As far as I could tell, SR was ran as a very lean operation where they tried to batch deliveries, produce a small set of meals in large quantities, and focused on efficiency (e.g. calling you two minutes ahead of time to minimize delivery driver's waiting time). If SR couldn't make the economics work, I'm not sure how others could. Perhaps by going more high-end than SR, and charging a higher price (a la Munchery) or is it perhaps by selling a lot more quantity?
- Lastly, what I'm hoping for is the "Airbnb" of food, where regular people could cook meals and sell them to neighbors on a marketplace with reviews, pictures, etc. Of course the economics would be challenging like any food business, but that's the kind of service that I could see myself regularly using. There's also the regulatory side (after all Airbnb itself has followed the policy of 'asked for forgiveness, rather than permission') Who doesn't like the sound of buying a home cooked meal from a neighbor?
While it's nice to have small dependencies that you can swap out over time as your use case evolves or as the ecosystem progresses, most of the time I'd just like to use the "standard stack" for a given platform. As someone who primarily uses Angular, one of the main benefits I see of Angular's 'kitchen-sink' approach is that you get a lot of standard functionality right out of the box (e.g. routing, i18n, animation) without having to research the best community package for that particular functionality. However, I think it's the narrow focus of React on the 'View' layer that's made it so widely adopted, because it plays well with an existing stack.
Having a project like this seems like the best of both worlds - libraries like React can focus on excelling in a single concern and developers still get a curated set of standard functionality so they can setup a complete web app.
TL;DR - Aphyr thinks Damien Katz never read this: https://en.wikipedia.org/wiki/Consensus_%28computer_science%...