HN user

tonyonodi

386 karma
Posts15
Comments74
View on HN

I understand the point you’re making, but if this is a programme doomed to achieve nothing, that makes the risk even less acceptable.

Numpad: https://numpad.io/

It's a web-based notepad calculator, which means it's a notes app but it can evaluate inline calculations like

``` £300 in USD + 20%

09:00 to 18:30 - 45 minutes ```

I wrote the core of the calculator a few years ago, and I've just launched a big rewrite that supports

* document syncing * offline editing * markdown formatting * PDF and HTML exports * autocomplete * vim mode

Happy to hear feedback :)

I launched my web-based notepad calculator, https://numpad.io/, a few years ago.

Right now I'm working on a version 2 that has user accounts, multiple documents, markdown support, and document exports. Everything is local-first and it uses CRDTs to sync documents.

It looks like this: https://i.imgur.com/Plk1DQ4.png the calculator is mostly the same for now, with a few improvements. It's unstable right now, so I don't want to publicise the dev url, but if you'd like to become a beta tester email me at contact@numpad.io

My side project NumPad https://numpad.io got me my current job at Decipad https://www.decipad.com/ (the similar naming scheme is a coincidence!).

I came across Decipad while looking for a job, and messaged the founder, highlighting my work on NumPad. They were impressed enough that the hiring process ended up being just a few interviews, I've been there for almost a year now, and it's been pretty good!

If there's a moral to this story I think it's that you should aim for work that's highly relevant to your side project experience. In my case both NumPad and Decipad have a sort of programming language that can do calculations with units.

But ignore this advice if you can't find that work, or it doesn't seem good for whatever reason. You can still highlight your side project in an application, and they might be impressed anyway.

TypeChat 3 years ago

That's a great analogy! I'd been wondering for a while whether that's a problem with this approach; to be honest I still don't know whether it is, so it would be good to see someone test it empirically.

Oops, didn't realise I'd left source maps in, thanks for pointing it out!

Your project sounds really interesting, I'm following you on twitter now, so tweet about it if you ever finish it and hopefully I'll see.

Having CRDT-based syncing/collaboration is a direction I'd like to take NumPad in eventually, and if I have time. But I definitely think that ignoring that part completely has allowed me to get it to an MVP state.

I'm very glad you asked. I wrote my own parser combinator library in TypeScript partly based on eulalie[0], so it doesn't have a separate lexer and parser and doesn't rely heavily on regexes (though it does use them to do things like match a single alphanumeric character). I plan on open sourcing this library one day once I can tidy up the API because I think it would be useful to other people.

But to give you an idea of what that all looks like this is the code for the parser that parses the "as a % of" operator:

  append(
    string("as"),
    oneOrMore(space),
    optional(append(string("a"), oneOrMore(space))),
    percentSymbol,
    oneOrMore(space),
    string("of")
  )
[0] https://github.com/bodil/eulalie