HNHacker News
TopNewBestAskShowJobs

ToJans

1,262 karma · joined March 6, 2013

Founder of https://virtualsaleslab.com
submissionscomments
ToJans··on Optimize CSS with SAT Solving
Slightly OT: anyone can recommend a tool that turns the tailwind class mess into a properly structured CSS file (Grouping common utility classes etc).

I think I'd pay for this if it works properly...

ToJans··on Following the Lean Startup Method
To me, an MVP is about reducing functional and non-functional scope: which requirements (functional and non-functional) can I take away from my solution, while still having built something people want?

Maybe your MVP doesn't require full HIPAA compliance, or nine nines availability, or the ability to manage users via a front-end, or...

Typically people do want software that's intuitive to use and doesn't crash, so you don't want to ignore those requirements, but most of the others are for grabs.

This implies your MVP is tightly coupled to your ideal customer profile, your GTM strategy etc:

Which audience will want to pay for this specific piece of functionality, despite all of its flaws (why opt for a non-established supplier? What's the out of of the ordinary part of the service that makes me willing to buy this? ...)

An MVP is built to validate a business hypothesis, and you should try to do the minimum to do this. Technical debt is unavoidable, as you usually don't know upfront what all the requirements will be within 5 years from now. Trying to architect upfront for this will usually fail, as most of your assumptions will be wrong anyway.

My #1 tip is to try to build a composable system where you assume the majority of the components will have to be replaced multiple times over a cycle of n years, so make them easy to throw away and start over...

ToJans··on Extreme video compression with prediction using pre-trainded diffusion models
Ahhh, Sloot's digital coding system [1] is finally here ;).

[1] https://en.m.wikipedia.org/wiki/Sloot_Digital_Coding_System

ToJans··on My sixth year as a bootstrapped founder
Exactly. I started my SaaS almost a decade ago, with stints of in-between consulting to finance the whole thing.

For the first half of the decade, I used to drink the cool-aid too: rewriting components using the framework-of-the-day, stating my opinion on whatever I considered to be important on HN, Reddit... Resulting in a lot of stuff, but not in reasonable ARR.

A few years ago, after making lots of cliche mistakes, I had another rough period, resulting in me buying out my partner's half that I gave to him for free without any contingencies, and having to consult again to finance the buy-out.

After that I decided to take the leap for the third time, and took a deep dive myself into sales and GTM, resulting in what I consider a ramen profitable ARR right now for someone with a family of four with a working spouse (little over 100K€ ARR).

I'm now slowly and steadily growing, but reinvesting almost everything I make back into it.

My next big learning step will be figuring out at least one repeatable way to get new clients.

I'm still in dubio whether I should do proper marketing, or just hire 2 SDRs and hand them a list with contacts...

I am very picky on my customers, so they tend to be very sticky, and buy extra modules as they renew their licenses, so I'm quite happy with how everything is evolving...

However, the whole thing takes time, a lot of time, and it requires a lot of grit and patience. So while it might sound interesting in a short comment on HN, it's basically just grinding every day, throwing things up to a wall, and seeing what sticks... If I'd blog about this every week, it would probably be really boring.

It might take 2, 3, 5 or 10 years to get to € 1M ARR, or maybe I'll never get to this amount, but I'm ok with that. I have friends who got investors, sold or were acqui-hired, and to me they seemed not to be happier at all during the job. And while it's nice to get FU money, I'm not sure that I'm willing to exchange years of my life for it, as i'm currently mostly enjoying myself and building the kind of company that I would love to work for.

The reason I'm no longer posting on Reddit, HN and the likes, is that - all things considered - I already have too much things on my plate, and posting on social media is not the best use of my time.

I do keep skimming articles to get the big picture as a hobby, but skip most of the shiny new things (TM), and stopped contributing because the value-add for me is so low.

Highly relevant comic for me: https://xkcd.com/386/

I imagine there are many others that share a similar story.

ToJans··on Trunk-Based Development
I've been working on my product for over 8 years, sometimes alone, sometimes with a tiny team.

I have a mono-repo with one master branch - that auto-deploys to test - and one release branch that auto-deploys to staging. I can hot-swap my staging and production environment with the click of a button.

Simple, and it allows us to deploy a hotfix of needed, and we've done some major work on master that needs to be validated first...

But,... It all depends on your context and your needs...

ToJans··on Mesh shaders on RDNA graphics cards
A little bit off topic, but I think he was using the wrong solution here.

He could have solved most of his issues by switching to a 3d configurator. I have built a custom threejs engine over the last decade that allows you to declaratively define materials, texture, repeating geometry, ... In a few lines of code. It has primitives like flexible grids, cloning, CSG operations etc.

I currently use it mostly for outdoor living structures, but implementing doors and/or floors for this would be trivial.

If you'd do this using my engine, the biggest thing left would be gathering the requirements and conventions... So I'd build a configurator for door configurators that allows suppliers to easily create their own configurators...

In fact, I'm doing this right now for terrace roofs/sun rooms.

Turtles all the way down...

ToJans··on My failed attempt at using a closet as an office
I used to have a full blown desk, and a library with lots of books behind me, but I replaced all of it with a "temporary" hack: an Ikea closet [1].

I say"temporary" because I haven't changed it since the start. It's also very convenient: when I open up the door, the closet lights automatically turn on, and when I close the whole thing, it's like the office isn't even there...

I'm still working on convincing my wife to put a baby grand in the reclaimed space however, which seems to be a bigger task.

Ah well, first class world problems I guess... Move along people!

[1] https://twitter.com/ToJans/status/1569383616328736770?t=__BE...

ToJans··on Startup idea: Zapier for consumer apps
My best bet would be to find a tiny, single, super-annoying use case that is instantly fixed with the tool, and grow an audience from there...
ToJans··on UpdateWhere is a handy function
This reminds me of Haskell's 'functor' [1]

[1] https://hackage.haskell.org/package/base-4.18.0.0/docs/Data-...

ToJans··on Launch HN: Twenty.com (YC S23) – Open-source CRM
My (layman) path to growth suggestion would be to start with nr 2 using the mechanisms you describe in nr 3 internally ($1M to $3M ARR), and then slowly expand to comparable verticals until you have about $10M to $20M ARR. After that you can start productizing the internal tools you built to the public and become a platform.

(Mostly written from a GTM perspective, and including the obligatory disclaimer thatI'm still way below $1M ARR myself, so take this with a grain of salt...)

ToJans··on Ask HN: How to price your first enterprise customer?
Oh, and for the price: I prefer a fixed yearly license price with different modules as add-ons, and use the same price for both enterprise and SMB clients, as long as the usage is within reason. Per location also works...

The major difference is that I multiply my implementation effort by 3 for the enterprise clients. (Which is quite realistic in my experience.)

ToJans··on Ask HN: How to price your first enterprise customer?
I've made enterprise-size proposals while working as a consultant for a large service providers, but I've also made proposals with my own tiny SaaS for public companies.

Whenever I'm in the second situation, I partner up with a large service provider that I really trust, and they cover most of the typical (non-functional) enterprise requirements, and also handle things like integration etc (my SaaS uses simple webhooks & restful APIs, and they create & maintain an intermediate anti-corruption layer etc).

I realize I'm giving away a piece of the cake, but for me it's the most efficient way to get access to these enterprise level customers while avoiding most of the hassle...

This might also be highly dependent on the type of system you're offering. I offer a system of engagement, but I can imagine a system of record or a system of report require another approach.

ToJans··on YC offers early interviews for AI companies
Unless VCs hope to get their profits from the "bigger fool"?
ToJans··on Anime.js – A lightweight JavaScript animation library
Check out threekit's Rolex configurator: https://www.threekit.com/3d-product-library/rolex-watch
ToJans··on See the pitch memo that raised €105M for four-week-old startup Mistral
Ok, so they're aiming for a more "spray & pray" kind of GTM, challenging the incumbents based on the premise that it'll be EU based.

This basically then boils down to: "ChatGPT got x users in a week, and we want to do the same for EU.", without a clear path to profitability or guarantees.

So it's effectively a humongously risky bet by EU VCs?

ToJans··on See the pitch memo that raised €105M for four-week-old startup Mistral
Reading through the memo, the GTM/use cases/market seem to be void of any kind of beachhead strategy?

I see lots of technical stuff, but the complete business plan & roadmap seems to be lacking any kind of tangible use case that is showing me how they plan to differentiate? (The technical reasons they state seem to be fairy minimal, and I don't see anything that competitors couldn't do either.)

The reason that I'm weary about this: I've spent a few years in an "innovation division" after customers repeatedly asked for such a service. Turns out the budget for long-running innovation-as-a-service is a hard sell, because in the end someone always has to pay for it, and innovation just for the sake of it gets old really quick. The long term survivors where the ones who continuously innovated for a particular use case - so more on a project basis...

So I'd assume that, just like with blockchain & VR/AR, the biggest value will be in very specific use cases in very specific verticals, as opposed to the "spray & pray" approach, offering an "AI as a commodity".

Or is this really just a EU FOMO play, i.e. US is doing it so Europe can't stay behind? (Probably hoping for EU funds/grants via that "Cedric O" guy.)

ToJans··on How Canva saves Amazon S3 costs
I'd go for a hybrid approach: new data is stored on private cloud, and old data would be gradually migrated or phased out.
ToJans··on Free-types: Higher kinded types in TypeScript
Great tip; thank you!
ToJans··on Free-types: Higher kinded types in TypeScript
Looking forward to a proper monad lib in Typescript!

However, I can only assume that molding/abusing types like this might have a big - if not huge - impact on compilation times...

I've created a template-like generic type that allows you compose multiple kinds and replace any property of an object with a function returning the same type as the property, and vscode has such a hard time inferring types that intellisense has become unusable in this context.

Curious to see how this will turn out.

ToJans··on Tell HN: Putting mirrors around my desk improved my posture
Interesting feedback. Adding the option to beep when you stay too long in the same posture shouldn't be too hard...
ToJans··on Tell HN: Putting mirrors around my desk improved my posture
I don't see why not?
ToJans··on Tell HN: Putting mirrors around my desk improved my posture
True; it was a quick hack, so I didn't consider these kind of things.
ToJans··on Tell HN: Putting mirrors around my desk improved my posture
I'll have to dig up the source somewhere, but I'll see what I can do.
ToJans··on Tell HN: Putting mirrors around my desk improved my posture
If anyone's interested: I wrote a small free app that runs completely client-side in the browser via your webcam, and gives an audible alert if your posture changes:

https://ppp.virtualsaleslab.com

ToJans··on What happened after I left my software engineering career (2022)
I wasn't aware "async work" was a thing; thanks for the pointer!

It's a little bit of a hybrid TBH: the question is "what can you aim for given the amount of money I pay you per month, assuming everything goes right?".

For marketing it's simple: I'd like to get x demos scheduled in timeframe y; tell me the plan, including the metrics and conversion ratios that you expect (i.e. content publishing, visitors, activations, cold calls/emails,...), And how much it will cost. If the price/value/risk balance is worth it, I'll commit.

For dev it's about rewrites, migrations, upgrades,... Always well scoped. The dev knows the software and he's a way better dev than me, so I fully trust his judgement.

The important thing here is that it's all about trust, and that these metrics are a best guess and a way to stay informed.

If it's the first time somebody is doing something I suggest to multiply the estimated happy path timing by 3 and start with that, but I understand some things take 1/10th, and others x 10.

From a commitment/risk point of view, actions are important but results are even more important. It's during the negotiation that we will decide whether/how much of the commitment is time -, action- or result-oriented, i.e. I will spend x hours, do y things or deliver z results...

I don't hire toddlers, so I don't treat them or expect them to behave like toddlers. The whole idea of hiring mature people is having to do less of it myself, not more...

The closer the reporting KPIs are to the results, the less work and risk it is for me, so I am able to value it higher. If you get more efficient in a job but we agreed on results, it's your win, not mine.... (For the marketing example, 5 demos are worth more than 100 cold calls, and these are worth more than hours active f.e., so if you get 5 demos in a fraction of the expected timeframe, I don't care.)

It's all a big experiment and I'll have to see how this works out, but if it does I'd love to organize the whole company like this...

ToJans··on What happened after I left my software engineering career (2022)
> btw, if anyone has any ideas of how to work very few hours a week as a pretty decent full stack web dev without too high of a financial aspirations, I’m all ears, people seem too look for all or nothing employees only.

I'm starting an experiment next week with a marketeer, where she can work whenever it suits her for how long she wants for a retainer/fixed amount per month. The rate is about 1/4th of a full-time freelance, and the idea is to mutually agree on actions and/or outcomes/results each month.

I plan to do something similar with a very senior dev this summer, who is training for a triathlon and has 2 small kids he needs to look after, probably at 50% of market rate...

The biggest issue when setting up something like this is trust, but as I've worked with both of them before on short stints with a regular daily rate (a few days to weeks), I don't have that issue myself.

For me it's a simple math equation: how much am I putting in, and what will this bring me financially (SaaS license income etc), so I can easily figure out the point where I'll be satisfied with our agreement.

I have high hopes for this experiment, but low expectations. We'll see how it goes.

My best bet for you would be to look for similar opportunities: find someone who pays on commitment/outcome, and doesn't care about hours worked...

ToJans··on Ask HN: Most interesting tech you built for just yourself?
I got tired of editing videos, so I wrote a tiny web app that allows me to record uniform ready-to-publish videos for my SaaS in real-time, so creating & publishing a 5-min video only takes me about 15 minutes.

The videos look like this one: https://www.youtube.com/watch?v=1rdeir2-bVA

Creating a video is simple:

- think about the subject (usually during the week)

- 5 min: copy an existing video script and edit it to match the current subject

- 5 min: record the video with OBS capturing the web output

- 5 min: publish it on FB/LI/youtube/...

It uses a simple scripting language with actions that I can trigger by pressing a button. The script has custom commands that allow you to mount HTML/overlay the webcam video/show the webcam video as a thumbnail/play music/... And you can compose commands into other commands.

Here's an example script I used for the video mentioned in the beginning:

    const script:Record<string,string[]> = {
        Intro: [
            `/name empty screen with overlays
    /remove *
    /volume 0`,
            `/name empty screen without overlays
    /remove *
    /volume 0
    /append div.hide-overlay`,
            `/subs 
    How to quickly qualify leads
    for premium outdoor structures
    without a configurator
    `,
            `/intro
    ![](vsl-TV-transparent.png)
    # Quickly qualify leads
    ## for premium outdoor structures
    ### without a configurator
    /caption Tom Janssens / Owner
    /wait 3s
    /remove *
    /subs 
    https://virtualsaleslab.com
    marketeers of premium outdoor structures
    activate & qualify leads
    via online 3D configurators
    In this video
    explain you 
    a simple and easy way 
    to qualify a lead
    without using a configurator`
        ],

        Main: [`/remove *
    /append img#bg.fullscreen[src="prices.png"]
    /select #bg
    /animate fade-in 3s both
    `,

        ],
        Outro: [
            `/site https://**OBFUSCATED**/r/vsl/vsl/en/designer/index/ts-alu`,
            `/remove *
    /caption Tom Janssens / Owner
    /wait 5s
    /cfg https://**OBFUSCATED**/r/vsl/vsl/nl/designer/index/solar-de
        `,
            `/remove *
    /outro
    ![](vsl-TV-transparent.png)
    # https://virtualsaleslab.com
    ### tom@virtualsaleslab.com`]
    };

    export default script;

Update: Obfuscated some urls in the example script, as they are pointing to my test environment ;)
ToJans··on Brandolini's Law
Hi James! ;)
ToJans··on Replacing bad systems with bad systems
This has already been done, but the person got caught and got a fine.
ToJans··on Ask HN: Successful one-person online businesses?
I think you already know the answer, but here it is: when running a SaaS, you should be either closing deals or shipping code that is being paid by these deals, especially in the early days...

Please note that you have to get an actual deal (i.e. contract/payment) before you start coding. I've fallen way too much in the trap where I didn't get a written commitment to "if you have this I will buy". This has never worked for me.

Edit: some additional clarification

← PreviousPage 2 of 7Next →