HNHacker News
TopNewBestAskShowJobs

nathanstitt

315 karma · joined April 20, 2010

Hi, I'm Nathan Stitt. a software developer and creator of many things. Engineering manager at OpenStax.org, a large educational non-profit

I own a consulting company Argosity.com and write primarily Ruby, go, client-side JS, and iOS stuff.

Contributor to OpenStax, DocumentCloud and various other open source projects: https://github.com/nathanstitt.

My email is <first name>@<last name>.org

submissionscomments
nathanstitt··on The open source DOCX editor submitted to HN a few weeks ago has been deleted
Great feedback, that makes complete sense. I've just added https://tinycld.org/story which expounds on this a bit more and also links to the credits page that lists all the (many) libraries it uses.
nathanstitt··on The open source DOCX editor submitted to HN a few weeks ago has been deleted
It's pretty simple: I have a small company and we're using it internally. my hope by releasing it is that the ecosystem will grow and it'll become the best way to publish web apps (ambitious I know).

I do not know what you expect by "hardened server implementations", it's open-source and people will probably host it a lot of different ways? If you're talking about the various services it offers like imap/webdav, I'm using well established golang libraries which I hope are secure but I have not performed a security audit or anything like that.

nathanstitt··on The open source DOCX editor submitted to HN a few weeks ago has been deleted
Also not affiliated but my open-source tinycld uses docx as the backend storage for its text package. Supports _most_ of the features (including comments and suggestions) but is still very young. It has a golang backend that reads/writes docx and translates to YJS that the editor reads for multi-user access. Has web/iOS/Android support.

I found docx to be a very well documented format and a surprisingly good fit for this.

https://tinycld.org has a live demo

nathanstitt··on Show HN: Open-source Workspace (mail,docs,spreadsheet,drive) web/iOS
Yes, absolutely. All agents seem to know how to talk to the Pocketbase API without telling them much about it if you're wanting to directly interact with tables.

We also have https://tinycld.org/llms.txt for writing packages and periodically test it's usefulness by one-shoting a simple TODO app: https://github.com/tinycld/todo

nathanstitt··on Show HN: Open-source Workspace (mail,docs,spreadsheet,drive) web/iOS
HyperFormula was the key to unlocking the entire spreadsheet, the technical foundation of sparse rendering and multi-user interactions were easy enough with Yjs and and a few other libs, but I was completely stuck on how to support formulas beyond simple SUM and such until I found it.
nathanstitt··on Show HN: Open-source Workspace (mail,docs,spreadsheet,drive) web/iOS
Yea I really did want to go Nextcloud because it is the battle tested solution as you note, but a few things held me back.

  * It's UI felt dated - which I agree is not an entirely good reason to not use it, but certain stakeholders in the org that will be using it felt it wouldn't be acceptable.
  * Collabera Office, which underpins their doc solution is kinda weird how it runs, everything renders on the server and then is displayed on the clients.  Not mobile friendly at all.
I did really like the ecosystem though and did consider just writing the plugins I needed for it. But then that went down a rabbit hole in itself with Php which I don't have fond memories of.

Ultimately it was a case of "be the change you want to see in the world". This is my opinionated answer to what an online suite of apps should work like for better or worse. I'm in a good spot where I have a small group of users who I'm close to that can stress test it out and yell at me when stuff breaks.

nathanstitt··on Show HN: Open-source Workspace (mail,docs,spreadsheet,drive) web/iOS
yep very true, everyone has their preferred stack, and greenfield is _always_ easier than maintaining years worth of past code.

I did look really closely at Nextcloud when it came time to leave Google apps. I really wanted it to work but also wanted:

* Realtime updates - Pockebase gives us this for free.

* A native app - React Native <- this one worked out but does cause pain with the web version, some things don't work _quite_ as well as a standard React ap would.

* Lightweight docs that work on mobile. Collabora is very full-featured but is also pretty slow. It remains to be seen if I've successfully here because we're only starting to use our docs "for real"

And also: I'm absolutely sure this has many bugs that I've yet to uncover. All I can say is that I am planning on using it for real-world business stuff so I'm sure we'll be uncovering and fixing them throughout the next year.

nathanstitt··on Show HN: Open-source Workspace (mail,docs,spreadsheet,drive) web/iOS
hah, so I've been fighting AI all the time as it tries to write all this on it's own vs re-using libraries. To me that's a much safer option, because the libraries all pre-date AI so I assume the authors know what they're doing.

Not to bag on Nextcloud but I do think that this is _much_ easier to understand and maintain, it's standard Go/React/Sqlite, nothing esoteric so if you did need to maintain it I'm sure anyone could pick it up. Of course I don't really know Php so that def flavors my opinions here.

I have an example of a one-shot TODO app: https://github.com/tinycld/todo just to demonstrate what's possible.

nathanstitt··on Show HN: Open-source Workspace (mail,docs,spreadsheet,drive) web/iOS
Sorry it didn't work :( I just tried and looks like it got _so close_, it did undo the insertion of values, but the selection remained. I think that's probably debatable behavior, but isn't what Google Sheets does.

I may be mis-understanding what you experienced though, If you'd like to provide more details and/or some screenshots please file a issue https://github.com/tinycld/calc/issues

nathanstitt··on Show HN: Open-source Workspace (mail,docs,spreadsheet,drive) web/iOS
yes, I'm planning to support it indefinitely - my company (~10 users) just started using it so we're very invested in it's success.

I'd love for people to write whatever crazy packages they can think of for it so it has a rich ecosystem. It has the ability for admins to add a git or NPM reference into the packages list and install packages on the fly like wordpress supports.

As for hosting as a service, maybe someday. I also own the tinycld.com so who knows.

nathanstitt··on Show HN: Open-source Workspace (mail,docs,spreadsheet,drive) web/iOS
Hey, I just made https://github.com/tinycld/mail/pull/2 which mostly implements this. Am leaving it as PR until I can fully test it out
nathanstitt··on Show HN: Open-source Workspace (mail,docs,spreadsheet,drive) web/iOS
Interesting, I wasn't aware that SES did inbound and it looks fairly affordable as well. I'll have to do this, thanks for mentioning it
nathanstitt··on Show HN: Open-source Workspace (mail,docs,spreadsheet,drive) web/iOS
Yes, Hyperformula is amazing! it's actually the primary reason TinyCld is AGPL vs MIT, doing so was totally worth it in order to be compatible with it's GPL3 license.
nathanstitt··on Show HN: Open-source Workspace (mail,docs,spreadsheet,drive) web/iOS
Good question, TinyCld does uses docx/xlsx files on the drive package as the native storage for text/calc. Drive is exported via webdav so doing so lets native clients load the files as well. Locking is used though so web & native _hopefully_ do not conflict.

Text uses https://github.com/ZeroHawkeye/wordZero to read/write the docx, parse it into a y-prosemirror and served with yjs to clients using https://github.com/skyterra/y-crdt

And Calc uses https://github.com/xuri/excelize using the same techniques but uses plain Yjs Y.Map/Y.Array using a sparsely populated table

nathanstitt··on Show HN: Open-source Workspace (mail,docs,spreadsheet,drive) web/iOS
thanks! it also has the ability for user themes but they are fairly weak. really only supports setting color swatches
nathanstitt··on Show HN: Open-source Workspace (mail,docs,spreadsheet,drive) web/iOS
currently only supports postmark but based on the conversions here i’m thinking expanding that will probably be the next thing i implement
nathanstitt··on Show HN: Open-source Workspace (mail,docs,spreadsheet,drive) web/iOS
yep i know postmark wont be everyone’s fave. i’ve abstracted all that to a single golang interface so it’d be easy to swap out. i’ll probably write a pure SMTP version as an example soon
nathanstitt··on Show HN: Open-source Workspace (mail,docs,spreadsheet,drive) web/iOS
yes, I should make this clearer: You do not actually host the email, tinycld uses a transactional host for sending and receiving. I also have a lot of scars from doing that in the past and I'm happy to pay someone else a few $$ a month for that service.

We support postmark right now (it has spam filtering), mailgun in the near future. Plus probably a pure smtp server for those who _really_ want to do it all themselves.

nathanstitt··on Show HN: Open-source Workspace (mail,docs,spreadsheet,drive) web/iOS
Yes, exactly that.

Personally I have several small (tiny really) companies where employees wear a few hats in them, this setup allows me to add people to org (and email domain) A & B while not getting C.

It is _not_ setup at all for billing or anything like that though, but that would be a easy enough feature to add

nathanstitt··on Show HN: Open-source Workspace (mail,docs,spreadsheet,drive) web/iOS
excellent, I've also tried all the products you mention but they all felt either too heavy or limited to me. I'd love any feedback you can offer, GitHub issues are open if you hit bugs.
nathanstitt··on Show HN: Open-source Workspace (mail,docs,spreadsheet,drive) web/iOS
Hey all, Nathan here, I'm the author.

I wrote TinyCld because Google in their infinite wisdom decided to cancel my 20 year old free Google Apps suite for "commercial usage". Which, to be fair it totaly was, and I obviously shouldn't complain about 20+ years of free usage.

But _still_, that wasn't the terms I signed up under, and nothing is more irratating than a good old fashioned rug pull. How hard could it be, right?

TinyCld is two things, a self contained workspace like the one we're all familiar with (mail/cal/contacts/drive/text/calc), as well as an easy to extend platform that brings all the batteries you'd need to write realtime web+native apps.

And yes, I used AI to write a lot of this. (really, ~200k loc by one author is a pretty good tell) Some may hate on that and thats fine, I get it. But I did look at each commit and there is a lot of bugfixing and tweaking features back and forth that went into it. If nothing else, I've got some good stories to tell here and have learned a lot.

Stack: Expo (React Native + web) on the frontend, PocketBase + Go on the backend. Standard protocols (IMAP/SMTP/CalDAV/CardDAV/WebDAV) so native clients work as well.

I'm currently using it myself with a few friends but has not been widely used beyond that.

Demo (no signup): https://tinycld.org/ and click the big Demo button.

One-line Docker install: https://tinycld.org/docs/installation Build a package in 10 min: https://tinycld.org/docs/creating-a-package iOS app: https://apps.apple.com/app/tinycld/id6762420971 Repo: https://github.com/tinycld

I'm very interested in any feedback anyone can offer. I've got a looong list of add-on packages I'm considering, suggestions welcomed!

nathanstitt··on Show HN: Self-hosted Workspace alternative with a plugin SDK
Hey all, Nathan here, I'm the author.

I wrote TinyCld because Google in their infinite wisdom decided to cancel my 20 year old free Google Apps suite for "commercial usage". Which, to be fair it totaly was, and I obviously shouldn't complain about 20+ years of free usage.

But __still__, that wasn't the terms I signed up for, and nothing is more irratating than a good old fashioned rug pull. How hard could it be, right?

TinyCld is two things, a self contained workspace like the one we're all familiar with (mail/cal/contacts/drive/text/calc), as well as an easy to extend platform that brings all the batteries you'd need to write realtime web+native apps.

And yes, I used AI to write a lot of this. (really, ~200k loc by one author is a pretty good tell) Some may hate on that and thats fine, I get it. But I did look at each commit and there is a lot of bugfixing and tweaking features back and forth that went into it. If nothing else, I've got some good stories to tell here and have learned a lot.

Stack: Expo (React Native + web) on the frontend, PocketBase + Go on the backend. Standard protocols (IMAP/SMTP/CalDAV/CardDAV/WebDAV) so native clients work as well.

I'm currently using it myself with a few friends but has not been widely used beyond that.

Demo (no signup): https://tinycld.org/ and click the big Demo button.

Install: https://tinycld.org/docs/installation Build a package in 10 min: https://tinycld.org/docs/creating-a-package iOS app: https://apps.apple.com/app/tinycld/id6762420971 Repo: https://github.com/tinycld

I'm very interested in any feedback anyone can offer. I've got a looong list of add-on packages I'm considering, suggestions welcomed!

nathanstitt··on Form to DB
teable looks very interesting, I hope you do follow through on open sourcing it.
nathanstitt··on Form to DB
heh, I'll throw my formial (https://github.com/nathanstitt/formial) project onto this thread. I probably need to update it a bit but it's been working well in production for 2+ years now.

Where were all these alternatives when I was looking for a WYSIWYG form builder?

nathanstitt··on Launch HN: Twenty.com (YC S23) – Open-source CRM
Ah, yep that makes complete sense if you want to per-tenant schemas. My app is multi-tenant but all have the same schema. We use a customer_id column that's matched against the JWT's customer_id token to ensure that no data is shared inadvertently by a dev missing adding a WHERE clause.

Thanks for the SF link, that's quite interesting. It seems bonkers to me to throw away all the advantages of the RDMS but you can't argue with their success.

A middle ground I've encountered in an ERP system (prophet21 if you're interested) was each table had multiple "CUSTOM_XX" columns that were initially blank. Customers could edit their UI and would drag/drop the custom columns onto the appropriate form and change the label to be whatever they'd like. That gave them some flexibility but kept the core schema coherent.

nathanstitt··on Launch HN: Twenty.com (YC S23) – Open-source CRM
Congrats on launching!

It looks like you started with Hasura GQL and switched to your own implementation (https://github.com/twentyhq/twenty/pull/156).

Would it be possible to comment on what influenced your decision here? I've built ontop of Hasura in the past and it's permissions model seems like it'd be a good fit for a CRM

nathanstitt··on Ask HN: Who is hiring? (May 2022)
OpenStax | Software Engineer II | Remote | Full-time | https://emdz.fa.us2.oraclecloud.com/hcmUI/CandidateExperienc...

The OpenStax Kinetic team is searching for a full stack software engineer. Our frontend is React/Typescript and backend is Rails. It's a small team where you'll be able to have a large role in setting the future technical direction of the product.

Kinetic is a new open-source project that helps to connect researchers with study participants. You can read more (and participate!) at https://openstax.org/kinetic/. It's source code is fully available at https://github.com/openstax/kinetic

Have questions? I'm the engineering manager for the team and am happy to answer anything, my email is in HN profile.

nathanstitt··on Ask HN: Who is hiring? (April 2022)
OpenStax | Software Engineer II | Product Manager| OpenSource | Fully Remote

The OpenStax Kinetic team is searching for a Product Manager and full stack (React/Rails) software engineer.

- Product Manager: https://emdz.fa.us2.oraclecloud.com/hcmUI/CandidateExperienc...

- Software Engineer: https://emdz.fa.us2.oraclecloud.com/hcmUI/CandidateExperienc...

Kinetic is a new open-source project that helps to connect researchers with study participants. You can read more (and participate!) at https://openstax.org/kinetic/. It's source code is fully available at https://github.com/openstax/kinetic

Have any other questions? I'm the engineering manager for the team and am happy to answer any questions, my email is in HN profile.

nathanstitt··on Show HN: I bought a SaaS and am modernizing it
I subscribed to the newsletter and browsed the listings https://feinternational.com/buy-a-website/

I contacted them about any that looked promising and they send you a prospectus that listed the name and the financials. After signing a NDA of course.

nathanstitt··on Show HN: I bought a SaaS and am modernizing it
Yeah I’m not a fan of the php, but I have written it in the past so don’t mind it that much. I’ve went through and updated it a bit but am forcing myself not to get sucked into updates that realistically wouldn’t add much value

As I’ll document next post, I’m writing new features in React with graphql. I’ve managed to integrate that fairly well without needing huge changes to the existing codebase

Page 1 of 5Next →