Hacker Newsnew | past | comments | ask | show | jobs | submit | win_ini's commentslogin

I just want to say: this looks super interesting as a project. Following :)


Sweet! :) I think it has a lot of potential for sure. There are things we needed that none of the other "low code" platforms had, and it's been a lot of fun to build so far. And it's been great seeing people use it!


Is there a website or screenshots? I’m not quite understanding what it does, but I want to share in the excitement.


So, we aren't quite ready to show screencaps (or other marketing material) to the whole world just yet. But I'll for sure make an HN post when that changes.

If you're cool with a text description though:

Basically, the core emotional impetus of this project for me begins with unfulfilled product enhancements for Perkville. Like, imagine a random 1-location Yoga studio wants to award bonus points on a member's 1 year anniversary. Sounds easy, right?

Well, saying "yes" to that customer means significant coding time, to store and update the membership start date, to handle edge case logic, to update all existing integrations to store the start date (and membership systems all store that in different ways, sometimes really obtuse and complicated ways), and then we need to build out interfaces for setting up the bonus. And what if a business wanted to award on the 6th month anniversary and not annually? Or for only certain membership types? And we need to QA, and add unit tests, and do code reviews, and on and on.

And we have hundreds of requests like that in the queue, with more coming in all the time. It's... too much.

Me and my engineers felt buried, for one. And our customers get unhappy too, that we just can't deliver fast enough for them. I really, really hate disappointing a customer. It hurts me, that this rewards platform we've been working on for years isn't doing what they want it to do. That we can't keep up with their imagination.

So, that was my emotional state 3 years ago when I sat my own boss down, and the product manager at the time, and was like, look, you need to let me solve this problem in a different way. We can't productize every single request that comes down. We need to figure out a way to build features for customers in a much more flexible way.

We looked at a bunch of tools in this space, like Zapier for example. But none of the tools were good enough. Zapier doesn't have the integrations we need (how long has their MindBody integration been in "in construction"?) and besides, it doesn't have the two-tier tenancy that we need. (We need to keep our customer's data all separate from each-other, with the ability to handle GDPR stuff on it as well.) And Zapier's (and all the others) tools for support really suck. You can't look up a user and see all the logic that's been executed for them. (People write into support all the time asking about their points.) Oh and on top of all that, the developer portal in Zapier really is not great. You have to download their SDK, become intimately familiar with it, and it is real complicated. (To their credit I think they've worked on this.) OH -- and Zapier is crazy expensive at the scale we need. We push a lot of events, and my estimate for putting everyone on Zapier came up to some insane number, like 50% of our revenue.

So, we decided. Let's just build our own and solve all of those problems. And so... we did. We got a v1 out pretty quick. We're able to hammer out integrations and updates to those integrations very quickly. Support can make features that we used to need engineering help on. There's still a ton of work to be done, but it's doing well enough that we've snagged some significant customers in the Fitness space. And it's really worked out for Perkville.

Anyways, that was quite the essay. That's the product. We're excited about it.


So I am still confused with the connectors and connections bit. Is it zapier but you can write a python script to automate a task? Or its more like a platform that manages user data and other services can use it as a store which executes a particular script when the state of the store changes? Maybe a better question would be who are the target customers for this?


Going backwards in the questions here:

> Maybe a better question would be who are the target customers for this?

So far, our customers are software companies (and one brick and mortar company) in the fitness space. (That is to say, customers like ourselves: Perkville is such a company, a loyalty/rewards SaaS mostly in fitness.)

Long term, the target customers are any software companies that need to connect their product to a ton (hundreds or thousands) of different (large and small, diverse, needy) businesses.

> Or its more like a platform that manages user data and other services can use it as a store which executes a particular script when the state of the store changes?

You've anticipated a key differentiator: The data store. Other IPaaS systems don't keep around data that they've processed. They're entirely event driven. We needed the ability to look back in time (customers often want to do things like, oh, if it's the tenth gym check-in in a month, give the user some bonus points); we needed the ability to diff a new record against an old version of that record (customers often want to trigger rewards based on a membership status change for example); we needed the ability to bulk execute a workflow against a bunch of already stored data (we sometimes need to "back sync" a reward rule).

The visual scripts ("workflows") that our support team write are basically functions. How they get triggered is up to them. They can trigger a workflow automatically when a record is created or updated, or they can trigger them manually, or they can trigger them on a schedule, or they can trigger one from inside another. (On the roadmap is the ability to trigger a workflow from an API call, in a synchronous, atomic manner -- this is the final piece to totally replace Perkville's old hard coded integration system with Middle; automated point redemption.)

> Is it zapier but you can write a python script to automate a task?

So, as with Zapier, there are two halves of the app.

The first half is the "accounts" site. That's where all of a customer's own customers live, as separate accounts. Each account has workflows (this is the VPL), workflow triggers, a data store, and reporting screens. Python isn't written here. This is designed for our support team to go in and fulfill feature requests for customers.

The second half is the "developers" site. This is where programmers can create data sources and actions that then can be used on the account side. The goal here for us was to keep the interface as simple as possible. I wanted it so a programmer just needs to fill in a Python function, in an in-browser code editor. For a data source, they just need to handle, let's say, an input date range and an authentication dictionary, and then return (or yield ) records that match.

...

Hopefully that was informational? If you want to sign up for news, there's a sign-up form on our site: https://middle.app/


That was pretty informational. Thanks for the detailed explanation. Sounds really cool.


That is excellent. I've had to tackle a similar issue at my current place, except I am chaining long data pipelines with external repositories together. My solve was an api gateway that was verbose but highly configurable.

I wonder if you've felt the pressure of implementing or embedding a scripting language client side? You're already developing a DSL, whether it's text or graphical is not 100% the point.


Nice!

> I wonder if you've felt the pressure of implementing or embedding a scripting language client side? You're already developing a DSL, whether it's text or graphical is not 100% the point

So, yes.

Right now, there's a clear division of labor: Python goes in the "developer" half of the app, and is used to make data sources or "steps" that can be used in the VPL.

The visual scripting language only exists in the "account" side of the app.

So far, this division of labor is working, but we have encountered a few times where it would be convenient to just put Python code directly into the account side of the app.

About the part where you said, "whether it's text or graphical is not 100% the point" - I do think a graphical scripting interface is absolutely key, actually. Sometimes I forget how much of a wall an actual programming language is for folks. I've been blown away by how productive our support staff has been in our VPL.


personally, I’ve had some great experiences with my Ooni/Uuni ovens over the past 6 years or so. It’s a great small business story too.

Currently on a Koda-16 which gets up to 900f in about 20 mins, yet is so well insulated - 45 minutes later there’s still snow sitting on top of it. A pizza usually takes about 90-120 seconds for me.

The thermal mass is important - the pizza stone at the bottom on this model is thicker than my last one, and while I could cook several pizzas, the ones in the middle took longer because I didn’t let the stone heat up again after the last pizza. Noticeable difference if there was no “rest time” between pizzas. Some friends have tried “metal pizza stones” which also retain heat really well (like 1/4” steel plate type of thing) apparently works well in hone ovens.

I use mine also to sear sous vide steaks. Works out fantastic.


I hope to get an Ooni oven one day (once my wife finishes postdoc and have a more permanent living condition with more storage space... so it often feels like never).

In the mean time I use a 1/2" steel plate in my home oven. Our oven goes up to 550F and the plate can hit ~650F under the broiler. Still a long ways from 900F but it can bake a very decent pizza in 3-4 minutes, with minimal heat loss (heat loss would be more of an issue with a thinner plate, I assume).

Also no worries about cracking if a launch goes badly and I end up with sauce leaking off the pizza--I broke quite a few pizza stones that way.


Yeah! I live in a condo, with no outdoor space. I as able to convince my partner that the Ooni was a good investment to take camping, to friend's yards, and airbnb's while we travel. It doesn't get as much usage as I'd otherwise like it, but both me and my previously skeptical partner are just so pleased by it! Worth both the price and the storage we have to maintain for it and it's accessories.

Having said that, it does take a significant amount of the trunk, so.. meh.


I'm super excited to see papers talking about these topics in detail, food journals are amazing.

It was a bit dense for me in parts, but isn't it a very standard bread cooking trick to stick a cast iron pan in the oven to give it more thermal mass?

I'm also quite curious about these cooking temperatures, I know I'm never going to hit those in my electric stove, and I do cook deep dish pizzas longer at a lower temperature so they aren't goopy dough on the bottom. I wish I could try cooking them hotter, they still come out like crackers at 475F sometimes.

I'm curious, regarding your note about pizza stone temperature, do you make the pizza dough stretched and topped and then... put it on the already hot stone? How do you get the dough from the place you topped it to the stone without it falling to pieces?

What kind of stone could it be that a cast iron pan wouldn't be both higher thermal conductivity and also higher heat capacity? Are you using temperatures too high for cast iron?


> put it on the already hot stone? How do you get the dough from the place you topped it to the stone without it falling to pieces?

There are plenty of demos and tips on "how to launch a pizza"

e.g.

https://www.youtube.com/watch?t=153&v=_3jAnfvriCE&feature=yo...

https://www.youtube.com/watch?v=VkD-IrTNpTk

https://www.youtube.com/watch?t=153&v=n8F8YdxA5jA&feature=yo...

> Are you using temperatures too high for cast iron?

No, not at all. So why not use cast iron?

IDK, when cooking pizza inside a kitchen oven some people do use cast iron plates. They're a fair amount more expensive than the ceramic "pizza stone", and heavier, apparently they work very well. google "pizza steel".

In a custom-made pizza oven, ceramic floors are the only type I've seen. I guess iron just isn't necessary in this case? The whole interior gets heated up to 450-500C. If you're building a dome outdoors out of concrete and brick, then thermal mass is there because of regular mass?


Oven bricks actually have higher thermal capacity than steel/iron, but much lower conductivity.

Steel or iron in a 450C oven would burn the bottom of the pizza before the top was anywhere close to done. It works well in home ovens at much lower temperatures (say 250C).


Yes that makes sense, thanks.


Awesome, thank you. I just got a steel stone because I am pretty sure it makes more sense given how many pizzas I make at a time and one of those wooden paddles (I expect I can make do with a cookie sheet for removing the pizza at the end and the "stone" is already expensive).

I've been making pizza often since I was five, for many years weekly for dozens of people, and the center of the bottom is always the hardest to get cooked nicely without burning the top.

If this fixes that I can maybe avoid prebaking the crusts, that was my workaround previously. This sounds way better!


If you are working in a pizzeria, have a backyard brick oven, or have a hobbyist oven such as a Roccbox or Ooni (I have an Ooni) they you should master the art of launching a pizza off a peel. So watch some how-to videos, get some Semolina flour and resign yourself to the fact that you aren't going to have a 100% success rate at first. You will lose some pies as you practice.

If you are cooking in your kitchen oven, you also have a second option: a sheet of baking parchment.


I have only done it in a home oven or a regular commercial kitchen without a fancy super hot oven.

I like the idea of learning to launch it though, I'm already sad that I can't toss the dough without dropping it so that seems like a just slightly easier skill that depends more on getting the dough to the right consistency. Seems like it will be fun to do anyway.


Throwing pizza dough up in the air is very much optional, and IMHO mostly done for show.

If you are making pizza "weekly for dozens of people" then equipment such as pizza peels and/or a pizza oven might be ideal for you?


Oven is overkill for my level of skill, a peel seems about the right next step. It's just a favorite when we can't eat out and is nice and easy.


> I'm curious, regarding your note about pizza stone temperature, do you make the pizza dough stretched and topped and then... put it on the already hot stone? How do you get the dough from the place you topped it to the stone without it falling to pieces?

You use a pizza peel [1]. Put the pizza on the peel (some people put the stretched dough on and top it while it's on the peel, some people top it first and then transfer it to the peel), put it in the oven, and then slide the peel out from underneath.

Flour/semolina or corn meal helps keep the pizza dough from sticking to the peel.

[1] https://en.wikipedia.org/wiki/Peel_(tool)


I looked at getting a pizza peel and decided that there wasn’t a single best style. I recently discovered that I can easily transfer a pizza to the hot stone in the oven by building it on a piece of parchment paper (trimmed to the size of the pizza after adding the toppings) and sliding it from a tilted cookie sheet with the help of a large spatula.

It’s much cleaner than the way I used to do it, which required cornmeal and often resulted in crooked transfers, misshapen dough, and lopsided toppings.


> I looked at getting a pizza peel and decided that there wasn’t a single best style.

There isn't. There are 3 operations: launch, turning and extracting, and different styles of peel are "best" for each.

A smooth wooden peel (or perforated metal) is good for launch.

A "turning peel" is a thing, smaller and rounder.

A metal peel is best for extracting - don't use your launch peel, you don't want it to get hot, or the next pizza will stick.

This guy covers some of it: https://youtu.be/n8F8YdxA5jA


I just switched the parchment paper approach myself. Unexpected bonus: I can wrap up the leftover pizza in the parchment.


A small wooden pizza paddle is a great tool to build the pizza on and transfer to a hot surface. I use semolina underneath the dough so it can slide off more easily. Lifting a little to get some air underneath helps if it doesn't slide off at first. I haven't invested in a pizza stone, I just make them personal size on an inverted cast iron pan.

Edit: As other similar response mentioned peel seems to be the more specific word for paddle.


> What kind of stone could it be that a cast iron pan wouldn't be both higher thermal conductivity and also higher heat capacity?

cast iron pans are great, but a pizza stone can be much thicker than a skillet, so you can get a lot more heat capacity. not sure about the conductivity, but some "stones" are made of steel anyway.


I’ve got an uuni 3, which is great. I find the greatest difficulty is getting the temperature high to bake properly but not burn. It look me a while to realize that just because the oven can hit 924f doesn’t mean that’s the best temperature to bake pizza at. YMMV based on how you construct your pizzas, but I’ve found ~800 to be the right working temperature for me.


I have the Koda 12 and have been making amazing sour dough pizzas, sometimes doing 60 our ferments. The oven was a great investment until i build a proper outdoor pizza oven.


Just curious - why not use Matternost as a backup? (disclosure: I work at Mattermost, but really just want to know what you think)

I’ve advocated for an idea where Mattermost is to be used as a “bunker” where it is hosted on a raspberry Pi (or somewhere else) and acts as a digital bunker if your critical infrastructure (slack, teams, exchange?) is compromised somehow.


Not OP. Good idea. I thought it's integrated into GitLab (on premise omnibus), but I still haven't fiddled with it, but enabled something in the config file, but nothing happened.

I know it's a tough spot, but if it were usable from GitLab with zero config that would be great for fallback.


@pas: Mattermost is indeed integrated with GitLab Omnibus.

To enable Mattermost, you can add the Mattermost external URL in the config file, and run `sudo gitlab-ctl reconfigure`. I'm wondering if that's something you've tried? https://docs.gitlab.com/omnibus/gitlab-mattermost/#getting-s...


Thanks for your reply! I gave it another try, and it works now beautifully :o (Possibly last time I tried it, there was no LetsEncrypt integration and the external URL setup was more involved?)


Interesting! I never looked into it, but now I will!


I agree - like only show a persons face AFTER you’ve connected somehow (I agree we’re hardwired to recognize faces - but I don’t want to try to recognize all the people as I’m browsing etc. - but when they become part of my Rolodex, then I wanna recognize their faces)


I’m so glad to read the other comments here - some new reading and watching material. The best part of this story for me is that I had watched Connections with my brother so long ago, I simply assumed James Burke was dead for a while now. I’m really pleasantly surprised he’s still kicking around!


Thanks for explaining your workflow, I’ve been focused on using one program to create/export/print but you’ve inspired me to try Using CAD + Blender.


Mattermost does, and just raised about $70m to do it well. ING is on their website. They have e-discovery tools and it's all hosted on your own cloud/servers.



I've now pivoted into the "helping people become fulfilled by creating profitable online businesses" niche.

How convenient for them. But, shucking a dream of riches will never be unprofitable, eh?


Wow thanks. I’ll have to go through this.


try https://getbring.com/#!/app - it has an Alexa integration. Me and my wife use it together.


Is this like Hamachi but for servers/command line?


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: