HNHacker News
TopNewBestAskShowJobs

ananthakumaran

491 karma · joined December 15, 2010

website: https://ananthakumaran.in resume: https://ananthakumaran.in/resume github: https://github.com/ananthakumaran email: ananthakumaran@gmail.com
submissionscomments
ananthakumaran··on Slumber a TUI HTTP Client
For those who are using Emacs, https://github.com/federicotdn/verb provides similar UX, I have been using it as a postman alternative for quite some time.
ananthakumaran··on The Future of SCIP
I have been using https://github.com/jacktasia/dumb-jump to quickly jump to definitions. LSP is hit or miss; in some languages, it works great, while in others, the implementation is not so good. I have been thinking about a middle ground based on Tree-sitter. GitHub uses Tree-sitter to power code navigation, but unfortunately, I can't find anything good that I can use offline. Why is there no ctags equivalent powered by Tree-sitter?
ananthakumaran··on Bridging Elixir and Python with Oban
No, it's a background job. We can easily control the Python process count by controlling the job queue concurrency on the Elixir side.
ananthakumaran··on Bridging Elixir and Python with Oban
We have a similar use case. All Elixir code base, but need to use Python for ML libraries. We decided to use IPC. Elixir will spawn a process and communicate over stdio. https://github.com/akash-akya/ex_cmd makes it a breeze to stream stdin and stdout. This also has the added benefit of keeping the Python side completely stateless and keeping all the domain logic on the Elixir side. Spawning a process might be slower compared to enqueuing a job, but in our case the job usually takes long enough to make it irrelevant.
ananthakumaran··on Elasticsearch was never a database
ES should be thought of as a json key value store and search engine. The json key value store is fully consistent and supports read after write semantics, refresh is needed for search api. In some cases it does make sense to treat it as a database provided the key value store semantics is enough.

I used it about 7 years ago. Text search was not that heavily used, but we utilized the keyword filter heavily. It's like having a database where you can throw any query at it and it would return a response in reasonable time, because you are just creating an index on all fields.

ananthakumaran··on Ask HN: Share your personal website
https://ananthakunaran.in
ananthakumaran··on Stacked Diffs with git rebase —onto
Exactly, I was reading the blog and wondering the whole time how it's better than --update-refs, which I have been using a lot recently.
ananthakumaran··on Show HN: LogLayer – Unified logger that routes logs to various logging libraries
This is one of the things Elixir got right on day 1, all the libraries in the ecosystem use the standard library and it makes dealing with logs so much easier compared to other languages.
ananthakumaran··on Lezer: A parsing system for CodeMirror, inspired by Tree-sitter
Have you checked the js grammar? It has a regex grammar, though not sure if that's what you are looking for
ananthakumaran··on How does Sidekiq really work?
> For example, you don’t need sidekiq or Redis as Elixir/Erlang is a concurrent, distributed platform. This simplifies operations and is cheaper to run.

This is simply wrong. You need a Sidekiq alternative (There is Exq which is protocol compatible with Sidekiq, others like Oban are available as well) because Erlang processes are not durable, nor do you get retry, concurrency control, etc. Everyone loves to claim Erlang is distributed and you can connect them so Redis is useless? but this is rarely utilized in the context of the web server. I have been using Elixir for more than 5+ years now, and I have never seen a valid use case for connecting two nodes.

In reality, the tech stack of the Elixir web app is mostly similar, but it makes life a lot easier if you ever have to deal with any kind of concurrency. Making concurrent requests is as simple as doing a map over a list and they just work, unlike other languages where you have to double-guess whether the library you use is thread-safe.

ananthakumaran··on Apple built iCloud to store billions of databases
It depends on the layer, some of the layers might be able to take advantage of how the data is persisted. For example, if you use avro/protobuf, the decoder will handle it for you. If that's not the case, you would have to implement the migration by yourself. There is a paper[1] on this subject called "Online, asynchronous schema change in F1", which explains how to implement it.

1: https://dl.acm.org/doi/abs/10.14778/2536222.2536230

ananthakumaran··on New job has no way of coding locally?
Salesforce has this model of development and it's horrible. They won't let you run the code locally since the environment is proprietary. Even to run the tests, the code has to be uploaded and run on their servers.
ananthakumaran··on Show HN: Paisa – Open-Source Personal Finance Manager
It does have PDF import support, I am using pdf.js to extract data and it works decently from what I have tested.
ananthakumaran··on Show HN: Paisa – Open-Source Personal Finance Manager
Got it, it's too early for i18n
ananthakumaran··on Show HN: Paisa – Open-Source Personal Finance Manager
> Question for author - Is it mostly a reporting tool or does it work similar to h/ledger where I can input my transactions from paisa?

It's a reporting + import/editor tool. The goal is to have a app that handles all the common use cases without going to command line.

ananthakumaran··on Show HN: Paisa – Open-Source Personal Finance Manager
I meant, you could download the cli using wget and run it inside the docker. There is no prebuilt docker image as of now. I will look into it later.
ananthakumaran··on Show HN: Paisa – Open-Source Personal Finance Manager
You can opt out by clicking Manage settings and then uncheck the green tick. I just realized I can enable reject button as well[1], should be available soon.

1: https://squidfunk.github.io/mkdocs-material/setup/ensuring-d...

ananthakumaran··on Show HN: Paisa – Open-Source Personal Finance Manager
Nothing specific, I was even looking at adding support for beancount then realized it's much more strict and doesn't support some features like periodic transactions (which I use for budgeting)
ananthakumaran··on Show HN: Paisa – Open-Source Personal Finance Manager
The project comes with a flake.nix file, you can try that (you would still need to build it manually, I use the flake only to bring the dev environment, not to build the final package). I don't plan to submit to nixpkg myself or any other package managers. I will only focus on binary builds that's downloadable from release page. I don't have any experience with maintaining distro level packages, and I don't think I can figure out the details and keep it maintained. I will leave it to the community to figure that out.
ananthakumaran··on Show HN: Paisa – Open-Source Personal Finance Manager
> Not trying to be argumentative, but every time I've heard someone claim they do envelope budgeting in ledger without virtual accounts, I've always found a flaw in their approach.[1] So let me give you the standard scenario:

I fully understand. I spent some time looking into the details and if you do it via ledger command line, this is probably the only way to do Envelope method.

Now, Paisa is a bit different, I can process the info before presenting it to the user. The fundamental data that we require is

1) what is the actual spend 2) what is the budget.

Periodic transaction is a type of transaction which is completely ignored by ledger unless you try to forecast. So this fits my use case perfectly. When I export transactions from ledger, I will know whether it's forecast/normal transaction. Forecast is ignored everywhere, so your checking account balance will show actual balance everywhere. But if you go to budget page, it will take the forecast transaction into consideration. It will show what is the current balance, month end balance if the forecasted spends are done etc.

Again, the fundamental difference is, Paisa can process the output of ledger and it can get away with asking the user to provide the bare minimum data (actual, forecast in this case)

ananthakumaran··on Show HN: Paisa – Open-Source Personal Finance Manager
Cli is already available for linux (which provides the same functionality, just that you have to use the web browser instead of desktop window)

For desktop app I plan to add support soon. The delay is because there are too many variations (appimage/flatpak/deb/snap) and I need to figure out which one to support etc. I use linux myself (NixOS).

ananthakumaran··on Show HN: Paisa – Open-Source Personal Finance Manager
Paisa supports budgeting and the model is inspired by YNAB. It doesn't use virtual account, but uses periodic transaction which is simpler from data entry perspective, but achieves the same thing
ananthakumaran··on Show HN: Paisa – Open-Source Personal Finance Manager
I don't know what you mean by multi-language support. But calendar view on Budget page is something I can think about. I will soon add a calendar view to Recurring page.
ananthakumaran··on Show HN: Paisa – Open-Source Personal Finance Manager
I have tried this and it works very well. I just copy paste my investments data from website and put it as a comment and usually copilot will figure out how to format it as a ledger transaction based on the previous transactions.

I am not sure if it will work with bulk import though. It's easy to spot mistakes with single entry, hard to do when you have lot of them

ananthakumaran··on Show HN: Paisa – Open-Source Personal Finance Manager
Unfortunately this is hosted on github pages and I can't get usage information without using 3rd party analytics.
ananthakumaran··on Show HN: Paisa – Open-Source Personal Finance Manager
Paisa supports PDF import (very rough implementation), but the problem is actually simpler compared to what tabula is trying to solve. I just need a 2 dimensional array and then the template can easily filter out non financial data by checking if specific column is Date. I have tried it personally on a few PDFs, it worked well except one which had a two column layout.
ananthakumaran··on Show HN: Paisa – Open-Source Personal Finance Manager
Feel free to open an issue if you can't get PDF import working. This is something I am interested in improving. I have tested with few PDFs and they are hit/miss based on how the data is encoded.
ananthakumaran··on Show HN: Paisa – Open-Source Personal Finance Manager
> 1. What automation, if any, exists for entering transactions? This is the most laborious/cumbersome part of personal finance. Some tools use financial data aggregators (plaid, yodlee etc.) that involves sharing login credentials with a third party, sometimes disabling 2FA, or other steps that are anti-security or anti-privacy. It sucks that in the USA at least, there is practically no way for customers to fetch their bank data via an open API. Until recently, many financial institutions supported OFX, but that is being phased out.

It has import support (can be templated using handlebars), no automated fetch though

> 2. How is categorization of transactions accomplished? Ideally, I want autocategorization based on my own previously categorized transactions, since the bulk of my transactions are repeats at the same merchants.

It has a very crude tf-idf based categorization. I do have plans to improve it.

> 3. What sort of reporting, dashboarding, and potentially sharing capabilities exist? Ideally, I want to share some reports with my partner

You can checkout the https://demo.paisa.fyi It's just a web app that works over http, so you can run it on a machine and share them access. You have to figure out the authorization part, I do plan to add some password based auth soon.

ananthakumaran··on Show HN: Paisa – Open-Source Personal Finance Manager
OFX is unheard of in my country. I would look into it if someone could open a issue and attach a few sample OFX files.
ananthakumaran··on Show HN: Paisa – Open-Source Personal Finance Manager
Yes, check the installation page https://paisa.fyi/getting-started/installation/
Page 1 of 3Next →