HN user

peterhon

6 karma
Posts0
Comments5
View on HN
No posts found.

I use it myself and it's great! Could replace whole wikijs and confluence use cases with it.

My demand was:

  - simple editing
  - super simple deployment
  - no per-user billing (users were mostly read-only, so I didn't want to pay full licenses for them)
  - authenticated access only
Works great for many of my current use cases.

I got tired of paying lots of $$$ to form tools, in order to create useful forms and checklists for me, and with my specific requirements:

  - immutability
  - self-hostability and/or EU SaaS option
  - nested data (e.g. nesting a list of sailing legs into a sailing trip form)
  - formulas (today(), date, string, numeric,...) and conditionals (visible/required/enabled if)
My goal will be to create an exceptionally cost effective tool, scaling well with usage and not paywall blocking advanced features. This may sound weird, but I think this is a real challenging and good goal to follow, enabling users more than optimizing for the highest payer. I thought about having a tool for a few $/€ per user per month where others charge 10x.

So I created two nice pieces out of that, which would have been impossible in the past due to time constraints and got massively unlocked through claude code:

  - a frontend/javascript only forms library that supports all the rendering, form schema input, data output, validation and formula/conditional logic
  - a multi-tenant SaaS product, that is a single golang binary and stores in sqlite, easily self-hostable but I can also operate it as a European SaaS (and in other regions) where needed
This is also a test run in terms of tech stacks and trying new things I wanted to try for long time. It's mostly evening or weekend coded due to my regular day job, but made such incredible fun. The AI coding part really provided me the time to work on the product, polishing, UX and worry less about the "work" part of coding. My experience seems to help a lot to gain leverage and increase the fun factor and complete immersion into coding, that I kind of almost lost in the past.

So I was trying:

  - pocketbase
  - really running something bigger with much more data off of sqlite (primarily used it for smaller stuff in the past)
  - real focus on self-host-ability, keeping dependencies minimal and extremely simple (which also helps claude)
  - trying other tools for security scanning, verification, testing, security analysis, WAF,... than I use at work, pretty much playing around with tech as much as I can to see new and different stuff :-)
Not ready to share a repo yet, but if anyone is interested please ping me on hello@devopsicorn.com

Unfortunately similar things will be mandated by EU law through cyber resiliance act (CRA) in order to ensure tamper free boot of any kind of device sold in the EU from Dec 2027.

Basically breaking any kind of FOSS or repairability, creating dead HW bricks if the vendor ceases to maintain or exist.

I guess what you can do in golang that would be very similar to the rust impl would be this (and could be helpful even in real life, if all you need is a whole lot of timers):

  func test2(count int) {
  
   timers := make([]*time.Timer,count)
   for idx, _ := range timers {
    timers[idx] = time.NewTimer(10 * time.Second)
   }
   for idx, _ := range timers {
    <-timers[idx].C
   }
  }
This yields to 263552 Maximum resident set size (kbytes) according to /usr/bin/time -v

I'm not sure if I missed it, but I don't see the benchmark specify how the memory was measured, so I assumed the time -v.