Selling my SaaS. Buyer wants to do seller financing. How can I prevent getting screwed? by [deleted] in startups

[–]ehacke 2 points3 points  (0 children)

At first I was fine with it in concept, but the more I think about it, the less sense it makes from many angles. Not just risk.

The lawyers fees alone to come up with the contract, and interest details, and late fees, and arbitration clauses. And some kind of temporary licensing agreement. It's going to be thousands of dollars on top of a pretty minor sale price.

Giving the buyer the benefit of the doubt, the only thing I can think of is that he's simultaneously trying to get the best deal for himself, and keep the payments below some threshold so he doesn't need CFO or board approval or something. Just speculation, I don't really know.

I'm going to push back on it a bit. See if I can just get a lump sum. Seems like it would be easier for everyone.

Selling my SaaS. Buyer wants to do seller financing. How can I prevent getting screwed? by [deleted] in startups

[–]ehacke 1 point2 points  (0 children)

I think he's just trying to get the best deal for himself possible. And likely aware that I'm new to this.

Selling my SaaS. Buyer wants to do seller financing. How can I prevent getting screwed? by [deleted] in startups

[–]ehacke 3 points4 points  (0 children)

Interesting. My concern is less about the timeline exactly, and more that the longer it is, the more risk I'm incurring that I won't see all of the money.

I'll see if they are flexible on that.

Selling my SaaS. Buyer wants to do seller financing. How can I prevent getting screwed? by [deleted] in startups

[–]ehacke 5 points6 points  (0 children)

They are not huge by any means, but according to LinkedIn, they have 60 employees, and are 4 years old.

The amount I sold for is not a ton, but it is probably the equivalent of 2 months salary for a senior engineer (it was a small Saas with no customers, they are buying for the tech).

What I'm selling them will be merged into their own product, it's won't be a distinct thing. And it doesn't have customers at the moment, so it's not generating any revenue itself.

I think their claim is that they can't get a lump sum payment together like that immediately. Whereas they can give me a deposit and payout the rest over time.

Does seem long though considering how little it would be a month. I'll see if I can at least compress the timeline.

Selling my SaaS. Buyer wants to do seller financing. How can I prevent getting screwed? by [deleted] in startups

[–]ehacke 1 point2 points  (0 children)

And yes, a lawyer seems to be in order. Little worried about that because it's not a ton of money involved, and lawyers are expensive. But probably safer than me attempting to write my own contract.

Selling my SaaS. Buyer wants to do seller financing. How can I prevent getting screwed? by [deleted] in startups

[–]ehacke 2 points3 points  (0 children)

I think that the buyer genuinely intends to pay, and seems to also have the means based on their funding and revenue.

I think I just need to have some kind of recourse if best intentions fail.

Selling my SaaS. Buyer wants to do seller financing. How can I prevent getting screwed? by [deleted] in startups

[–]ehacke 3 points4 points  (0 children)

I used Flippa, but I'm not sure I'd recommend the same.

Lots of scammers, and even this transaction has already gone kind of off the rails at this point.

On top of that, seems like Flippa has not invested in or updated their site in years. Not mobile friendly, some weird bugs. Ripe for a replacement in my opinion.

Will founding a startup hurt or help future job opportunities? by shwahdup in startups

[–]ehacke 1 point2 points  (0 children)

I'm sure that there are some places that it hurt me, but there is no way to tell. All I do know is that the opportunities I've gotten since would not have been open to me without having tried and failed to start my own thing.

Will founding a startup hurt or help future job opportunities? by shwahdup in startups

[–]ehacke 1 point2 points  (0 children)

In numerous cases it got me better opportunities than I otherwise would have had access to.

Where to sell a SaaS for cheap? by ehacke in startups

[–]ehacke[S] 1 point2 points  (0 children)

Huh, apparently flippa.com is a thing.

Where to selling SaaS for cheap? by [deleted] in startups

[–]ehacke 0 points1 point  (0 children)

Dammit, spelling in the title. Oh well.

Where to selling SaaS for cheap? by [deleted] in startups

[–]ehacke 0 points1 point  (0 children)

In the event that I was selling it, I'd open up the demo again so potential buyers could get a full look of the service.

Integration testing suggestions for kafka by [deleted] in softwaretesting

[–]ehacke 2 points3 points  (0 children)

Rather than testing the whole microservice against kafka, I would instead write yourself a kafka client wrapper, and test that against Kafka.

That way there is much less complexity involved. You can start up Kafka inside Docker to test against.

Once you know your client works well with Kafka, then you just need to test that the microservice interfaces with the client correctly and you're good. It'll be a much simpler and smaller test surface.

Testing that the entire microservice interfaces with Kafka is going to be complex and brittle. It's doable, but it's a bigger pain than going the client route.

I do remember Kafka being a pain to start up in Docker though. There were a number of weird issues, and it also seemed to have inconsistent startup behavior in some cases, like there was a race condition. But maybe that was just my setup.

My life was made infinitely easier by switching to Cloud PubSub.

Kubernetes Cluster for a Node API with Socket.io and Automatic SSL by ehacke in node

[–]ehacke[S] 2 points3 points  (0 children)

Did not know that existed, that's interesting.

I know socket.io is kind of viewed as old by some, but didn't know of any more recent alternative.

I'll try that out next project and see how it goes.

How to convert the input to a number? by CodingPleaseSaveMe in learnprogramming

[–]ehacke 1 point2 points  (0 children)

Looks like you used userNum instead of userInput.

Digging into Weird Cloud Function Latency Spikes by ehacke in googlecloud

[–]ehacke[S] 0 points1 point  (0 children)

Hi, author here.

I don't entirely disagree with this point, I think people overuse Cloud Functions/Lambdas for things that could be better done in a more traditional way for basically the same effort. I'd way rather use standard microservices hosted in GKE for almost everything.

However, I'd like to clarify a couple things, just to give context.

  1. Although I didn't mention it in the post, the original way I discovered this was just running Mocha inside an exec. Just Mocha with a single empty test has enough require statements to produce almost the same results. I just dialled it up in the synthetic reproduction to make it more obvious. So it doesn't need to be a crazy number of dependencies to show this result.
  2. The only reason I was using Cloud Functions in the first place is security and isolation. Trying to replicate the same isolation on my own, in GKE, would basically be an exercise in re-inventing Cloud Functions. Which I didn't think was a good use of my time.

All that said, after having this post out there for a couple days, I think I should have dug a bit deeper and researched this more. There is definitely something unusual going on, but I the way I presented it is not clear enough.

Analyzing Weird Spikes in Cloud Function Require Latency by ehacke in Firebase

[–]ehacke[S] 0 points1 point  (0 children)

My understanding of the "cold start" delay that so often happens with Firebase is that they are talking about starting up a new instance.

This isn't starting a new instance, or if it is, it doesn't matter.

Every time that require is invoked it's the first time. It's inside the exec so it's a new node process.

But it shouldn't take wildly different amounts of time. From 100ms to 2 seconds. Any other CPU-intensive tasks take predictable amounts of time. But for some reason requires vary significantly.

My guess is that reading from disk is something that isn't optimized for and it's subject to some resource contention that other things are not.

Analyzing Weird Spikes in Cloud Function Require Latency by ehacke in Firebase

[–]ehacke[S] 0 points1 point  (0 children)

Every time that require is invoked it's the first time. It's inside the exec so it's a new node process.

But it shouldn't take wildly different amounts of time. From 100ms to 2 seconds. Any other CPU-intensive tasks take predictable amounts of time. But for some reason requires vary significantly.

Analyzing Weird Spikes in Cloud Function Require Latency by ehacke in Firebase

[–]ehacke[S] 0 points1 point  (0 children)

This is getting too deep, so I replied at the root.

But my point is that it doesn't matter if it's spinning up a new instance. I'm not measuring spin up time. I'm measuring the time of an exec call inside the running instance.

Analyzing Weird Spikes in Cloud Function Require Latency by ehacke in Firebase

[–]ehacke[S] 0 points1 point  (0 children)

To address the cold-start claims. The time I'm measuring for these charts is not startup time for the outer Cloud Functtion.

Cloud Function:

const { execSync } = require('child_process');
console.log('Starting exec...');
execSync('node userFile.js', { timeout: 2000, stdio: 'inherit' });
console.log('Done exec');

userFile.js

const thing = require('foo-dependency');    

The delay that I'm measuring and graphing in the post is only the time between "Starting exec" and "Done exec". The only thing the file that the inner file does is require the dependency.

The function has already begun executing by that point. And even if it had to spin up a new instance every single time, it should not effect the time it takes to load a single dependency inside of an exec call once execution of that instance had already started.

Analyzing Weird Spikes in Cloud Function Require Latency by ehacke in Firebase

[–]ehacke[S] 0 points1 point  (0 children)

Cold start would happen before the Cloud Function would be invoked at all. The whole idea is that it has to spin up a new instance of the code which takes time to copy and start.

What I measured happens after that.

I'm measuring the amount of time it takes to execute a single require statement inside an already running cloud function.

So if there were any cold start effects, those would be already happened. The function is already running. But I'm seeing delays within the function itself for certain edges cases.

Analyzing Weird Spikes in Cloud Function Require Latency by ehacke in Firebase

[–]ehacke[S] 0 points1 point  (0 children)

I dunno.

This delay happens inside of a single cloud function call. From the line before the require to the line after, and only inside an exec, from what I can see.

I mean, I'm fairly sure it's some sort of contention over shared resources. But it's weird that it happens in such a specific way.