HN user

fangpenlin

708 karma

One-person-army software engineer. Opinions are my own.

Personal blog: https://fangpenlin.com GitHub: https://github.com/fangpenlin

Posts35
Comments30
View on HN
sidv.dev 4mo ago

Software Engineering in the Agentic Era

fangpenlin
4pts0
blog.makerrepo.com 5mo ago

Manufacturing as Code Is the Future, and the Future Is Now

fangpenlin
1pts0
hackaday.com 7mo ago

Origami on Another Level with 3D Printing

fangpenlin
2pts0
determinate.systems 7mo ago

Nix flakes explained: what they solve, why they matter, and the future

fangpenlin
3pts0
github.com 12mo ago

Open-source LLM powered plaintext based spreadsheet appp

fangpenlin
3pts0
fangpenlin.com 1y ago

I built an AI-gen video detection model and browser extension in a month

fangpenlin
2pts0
www.heise.de 1y ago

HTTP Feeds – Asynchronous Interfaces Without Kafka or RabbitMQ

fangpenlin
2pts0
beanhub.io 1y ago

Show HN: Open-source LLM-powered invoices/receipts email data extraction tool

fangpenlin
2pts0
yomaq.github.io 1y ago

Nvidia on NixOS WSL – Ollama up 24/7 on your gaming PC

fangpenlin
95pts49
nixcademy.com 1y ago

Setting Up Nix on macOS

fangpenlin
4pts0
ml-cheatsheet.readthedocs.io 1y ago

Machine Learning Glossary

fangpenlin
1pts0
cra.mr 1y ago

Product-Market Fit

fangpenlin
2pts0
fangpenlin.com 1y ago

Nvidia GPU on bare metal NixOS Kubernetes cluster explained

fangpenlin
41pts15
www.devoriales.com 1y ago

Understanding Kubernetes Container Runtime: CRI, Containerd and Runc Explained

fangpenlin
1pts0
github.com 1y ago

Nix-playground – CLI for patching nixpkgs package source code easily

fangpenlin
2pts1
noogle.dev 1y ago

Noogλe – Search Nix Functions

fangpenlin
2pts0
www.lesswrong.com 1y ago

LLM Basics: Embedding Spaces – Transformer Token Vectors Are Not Points in Space

fangpenlin
2pts0
github.com 1y ago

Zhang – a plain text double-accounting tool which is compatible with beancount

fangpenlin
2pts0
embassy.dev 1y ago

Rust async framework for embedded systems

fangpenlin
1pts0
neptune.ai 1y ago

Tools for Machine Learning Model Visualization

fangpenlin
1pts0
beanhub.io 2y ago

How BeanHub works, contains the danger of processing Beancount data with sandbox

fangpenlin
1pts0
fangpenlin.com 2y ago

I discovered a critical exploit in ZeroMQ with mostly pure luck

fangpenlin
204pts61
fangpenlin.com 2y ago

High-speed 10Gbps full-mesh network based on USB4 for just $47.98

fangpenlin
378pts229
beanhub.io 2y ago

New API access feature for reading and writing Beancount data easily

fangpenlin
2pts0
fangpenlin.com 4y ago

Why and how I build and maintain multiple products simultaneously

fangpenlin
2pts0
monoline.io 4y ago

Why build a messenger app only for sending to yourself?

fangpenlin
2pts0
github.com 4y ago

Python library for rendering WTForms as Bootstrap 5 form controls

fangpenlin
2pts0
beanhub.io 4y ago

Show HN: BeanHub – A GitHub for Beancount

fangpenlin
26pts0
fangpenlin.com 4y ago

A Repairable Future

fangpenlin
1pts0
livelybg.com 5y ago

Show HN: Video virtual backgrounds for virtual meetings

fangpenlin
3pts0

There's an obvious theme with lawmakers in California—they pass laws to regulate things they have zero clue about, add them to their achievement page, cheer for themselves, and declare, "There! I've made the world a better place." There are just too many examples. For instance:

- Microstamping requirements for guns—printing a unique barcode on every bullet casing (Glock gen3 cannot be retired, thus, the auto-mode switch bug cannot be patched...)

- 3D printers should have a magical algorithm to recognize all gun parts in their tiny embedded systems

- Now, you need to verify your age... on your microwave?

At this rate, California should just go back to the Stone Age. Modern technology is simply not compatible with clueless politicians who are more eager to virtue-signal than to solve any actual problems or even borther to study the subject about the law they are going to pass. There will be more and more technology restrictions (or outright bans on use) in California because it's becoming impossible to operate anything here without getting sued or running afoul of some overreaching regulation.

AMD YOLO 1 year ago

I heard that Nvidia's graph cards are the best in the class in terms of power consumption vs TFLOP ration. I wonder what's the number of AMD vs Nvidia? I would like to see the number because power consumption is going to take a big portion of AI training. In comparsion, hardware might not be that expensive in the long run.

Some people, myself included, prefer text-based files as a user interface. Like, some Vim users won't leave their Vim session forever and would like to do everything in it. While SQLite is immortal software and will probably be there forever, using it means changing the UI/UX from text files to SQL queries or other CLI/UI operations. I think it's a preference for UI/UX style instead of a technical decision. For that preference of UI/UX, we can push on the technical end to solve some challenges.

Hi, the author here.

If you are okay with Plaid[1], many of their bank connections are now using OAuth-style authentication instead of password sharing. I actually added a new feature called Direct Connect[2] a while back to allow any plaintext accounting book users to pull CSV directly via Plaid API through BeanHub. We don't train AI models with our customers' transactions, and if we want to, we will ask for explicit consent (not just ToS) and anonymize customers' data.

If you're okay with the above, the key to achieving a high automation level is the ability to pull CSV transaction files directly from the bank in a standard format. Maybe you can give it a try. We have 30 days free trial period.

I am not so familiar with the CMMC requirements, as you mentioned, but for us to access transactions from some banks, such as Chase, Plaid requires us to pass an auditing process about our security measurements. Is the CMMC compliance your company needs to meet to take a third-party software vendor into considerations?

[1] https://plaid.com

[2] https://beanhub.io/blog/2025/01/16/direct-connect-repository...

Hi, the author here.

I get where you're coming from. My books are also growing big right now, and indeed, they have become slower to process. Some projects in the community, such as Beanpost [1], are actually trying to solve the problem, as you said, by using an RMDB instead of plaintext.

But I still like text file format more for many reasons. The first would be the hot topic, which is about LLM friendliness. While I am still thinking about using AI to make the process even easier, with text-based accounting books, it's much easier to let AI process them and generate data for you.

Another reason is accessibility. Text-based accounting only requires an editor plus the CLI command line. Surely, you can build a friendly UI for SQLite-based books, but then so can text-based accounting books.

Yet another reason is, as you said, Git or VCS (Version control system) friendliness. With text-based, you can easily track all the changes from commit to commit for free and see what's changed. So, if I make a mistake in the book and I want to know when I made the mistake and how many years I need to go back and revise my reports, I can easily do that with Git.

Performance is a solvable technical challenge. We can break down the textbooks into smaller files and have a smart cache system to avoid parsing the same file repeatedly. Currently, I don't have the bandwidth to dig this rabbit hole, but I already have many ideas about how to improve performance when the file grows really big.

[1] https://github.com/gerdemb/beanpost

Hi, the author here.

Many customers have asked me about AI offerings, and I am considering them. While this is doable with modern LLM technologies, I need to consider many issues.

The first is that nobody, myself included, likes their data being part of someone else's machine-learning training pipeline. That's why I promised my users that I wouldn't use their data for machine learning training without asking for explicit consent (and, of course, anonymization will be needed).

While I know everything involved in AI sounds cool, do we really need LLM for a task like this? Maybe a rule-based import engine could kill 95% of the repeating transactions? And that's why I built beanhub-import[1] in the first place. Then, here comes another question: Should I make LLM generate the rule for you or generate the final transactions directly?

Yet another question is, everybody/every company's book is different from one to another. Even if you can train a big model to deal with the most common approaches, the outcome may not be what you really need. So, I am thinking about possibly using your own Git history as a source of training data to teach machine learning models to generate transactions like you would do. That would be yet another interesting blog post, I guess if I actually built a prototype or really made it a feature for BeanHub. But for now, it's still an idea.

[1] https://beanhub-import-docs.beanhub.io/

Hi, the author here.

So BeanHub is built on top of Beancount and uses double-entry accounting. It's one of the benefits of double-entry accounting. Many accounting software are not good at dealing with multi-currencies or custom currency. With Beancount, you can define any commodity you want, create transactions, and convert them with different currencies easily. For example, you can define a commodity TSM and create transactions[1] like this:

2025-01-01 commodity TSM

2025-03-05 * "Purchase TSMC"

  Assets:US:Bank:WellsFargo:Checking                        -2,000 USD @ 100 TSM
  
  Assets:US:Bank:Robinhood                                      20 TSM
I think many people trade crypto, and traditional accounting software may not be that friendly to them. That's why I emphasized a bit to the crypto target audience. But you're right; I should make it clearer that it's not just for crypto.

[1] https://beancount.github.io/docs/beancount_language_syntax.h...

By the way, one of the problems I encountered but didn't mention in the article was that the libnvidia-container has problem with the pathes for reading nvidia drivers and libraries under NixOS with its non-POSIX pathes. I had to create a patch for modifying the path files. I just created a Gist here with the patch content:

https://gist.github.com/fangpenlin/1cc6e80b4a03f07b79412366b...

But later on, since I am taking the CDI route, it appears that the libnvidia-container (nvidia-container-cli) is not really used. If you are going with just container runtime approach instead of CDI, you may need a patch like this for the libnvidia-container package.

There's a bug in k8s-device-plugin that stops the plugin from even launching, as I mentioned in the article:

https://github.com/NVIDIA/k8s-device-plugin/issues/1182

And I opened a PR for fixing that here:

https://github.com/NVIDIA/k8s-device-plugin/pull/1183

I am unsure if this bug is only for the NixOS environment because its library paths and other quicks differ from those of major Linux distros.

Another major problem was that the "default_runtime_name" in the Containerd config didn't work as expected. I had to create a RuntimeClass and assign it to the pod to make it pick up the Nvidia runtime.

Other than that, I haven't tried K3S, the one I am running is a full-blown K8S cluster. I guess they should be similar.

While there's no guarantee, if you find any hints showing why your Nvidia plugin won't work here, I might be able to help, as I skip some minor issues I encountered in the articles. If it happens to be the ones I faced, I can share how I solved them.

For training, yes, you will need to share the parameters (i.e., weights and bias); the number is huge. But for inference, you don't need that much high bandwidth to run it in a distributed manner.

According to the author of Exo https://blog.exolabs.net/day-1/:

When Shard A finishes processing its layers, it produces an activation that gets passed to Shard B over whatever network connection is available. In general these activations are actually quite small - for Llama 3.2 3B they are less than 4KB. They scale approximately linearly with the size of the layers. Therefore the bottleneck here is generally the latency between devices, not the bandwidth (a common misconception).

I think that makes sense because the activations are the numbers coming out of the whole neuron network (or part of it). Compared to the number of parameters, it's not at the same magnitude.

You can check Exo out:

https://github.com/exo-explore/exo

It's a project designed to run a large model in a distributed manner. My need for GPU is to run my own machine learning research pet project (mostly evolutionary neuron network models for now), and it's a bit different from inferencing needs. Training is yet another different story.

But yeah, I agreed. I think machine learning should be distributed more in the future.

Hatchet looks pretty awesome. I was thinking about using it to replace my Celery worker. However, the problem is that I can only use the gRPC client to create a task (correct me if I am wrong). What I want is to be able to commit a bunch of database rows altogether with the background task itself directly. The benefit of doing so with a PostgreSQL database is that all the rows will be in the same transaction. With traditional background worker solutions, you will run into two problems:

1. Commit changes in the db first: if you fail to enqueue the task, there will be data rows hanging in the db but no task to process them

2. Push the task first: the task may kick start too early, and the DB transaction is not committed yet, it cannot find the rows still in transaction. You will need to retry failure

We also looked at Celery and hope it can provide a similar offer, but the issue seems open for years:

https://github.com/celery/celery/issues/5149

With the needs, I build a simple Python library on top of SQLAlchemy:

https://github.com/LaunchPlatform/bq

It would be super cool if Hatchet also supports native SQL inserts with ORM frameworks. Without the ability to commit tasks with all other data rows, I think it's missing out a bit of the benefit of using a database as the worker queue backend.

SEEKING WORK | Remote OR on-site | SF Bay area | part-time

I am a one-person-army software engineer with 23 years of intensive experience in different fields. I am currently running a small software startup, Launch Platform (https://launchplatform.com/). I spent time on the side taking contracting jobs. Recently, I have extra contracting bandwidth available, and I am currently looking for a new client.

I provide a special kind of software development service: a one-stop, high-quality, rapid software development service to my clients. I can build products from end to end, be it frontend, backend, mobile, data, security, or DevOps, with a team or by myself, with a proven track record. A good example would be I built three SaaS products listed on my company's website by myself. I usually only recommend that my client hire me if the project is high-impact and involves many ends (backend, frontend, mobile, etc.). It will be way more expensive and slower if you hire and manage each role.

You can also check my GitHub profile:

https://github.com/fangpenlin/

My resume is available upon request, but please briefly describe what project you are trying to build in the email. My email is hello [_at_] [my company domain name]

Thanks for the feedbacks. The author here. Personally I found it more "fun" (well, I guess for everybody it's different) to have some meme in between of the articles, some people hate to read too much text all in once, but yeah, I get your point. So I was thinking maybe I should add a switch like "meme off" to hide all of those at the top of article so that people don't like it can feel better while reading it.

Yeah, so for BeanHub, when you push a commit, the system will capture the accounting book into SQL database. Taking from there, I can imagine there are many data prediction model can be applied to the ingested data. I am also thinking to support "CI job" feature (run a task when you push a new commit), not for building software but for your accounting book. So even if it's not supported by the system officially, it's still possible to build your prediction model.

I really enjoy using Beancount + Git for managing the accounting book for my own startup company, but I found it a bit tedious to add entries periodically. I wonder why nobody build a service make it like GitHub but for Beancount and automate lots of stuff. I then decided to make a service for it a while back. Shameless self-promoting here, yesterday I just launched the service in very early stage of open beta:

https://beanhub.io/

Basically the idea is, as a software engineer, I believe accounting book can be automated like how we build software. There are many interesting workflow we can bring into the system, such as

- Pull request review - Commit sign off (pgp signature) - CI for generating reports

and many other interesting aspects. Also just like software, I believe many of the orgs can benefit from open sourcing their financial data, like no-profits or government. So I am thinking making open source accounting book free repository for the product just like GitHub did previously. Anyway, I just found this thread happen to appear on hacker news so just want to share the stuff I am building. Feedbacks are welcome.

I've seen way too many people in the tech said that they would only hire Ivy League, or even if they don't say it, based on who they hire it's not hard to find out that's what they do. During CVOID, you see students need to study from home, but yet the price of Ivy League school never drops a cent. It's pretty much like GUCCI or Chanel would rather destroy the products don't sell than selling them cheaply to destroy the artificial scarcity.

The problem is never why we shouldn't get more people into Ivy League, nor why don't we get more poor kids into Ivy League, or even just bring them into college. The problem is, in the era you can learn literally pretty much almost anything online, the cost of learning is very cheap, and yet people are arguing education is human right, so government should just wipe out student loans? I think the real solution is to look at how education works now and solve the problem with new technology. However, it would be very hard to do and may take very long time, given the Ivy League folks are pretty much the same group of people in power, none of them would like to make their degree looks cheap, and the irony is they often claim that they support social justice. If people truly care about social justice, it's time for people to think about the college requirement for a job and Ivy League only hiring policy.

Covid19 is pretty much a product of no free speech, they claimed it to be "misinformation" at first about human to human, no doctors were allowed to talk about it, what else evidence do you need? Like don't trust the wearing facial mask is not only helpful for others but also yourself "misinformation"? So you see, the problem is, who decide what's "misinformation"? And what if they are wrong, like they did so many times, but in a time no other voice is allowed? Think about it

Please define disinformation, and who gets the right to decide what's correct? And what if they are wrong? I still remember when experts/ CDC / WHO claimed wearing a face mask is useless. I still remember there was once a time claiming earth not flat is disinformation and could be burned to death alive.

What we are seeing here now in US is nothing new in China. Censorship, cancel culture, and now high tech terrarium. It's all following the same culture revolution path. You only need to replace landlord with who ever you want to beat here. In the end, the farmers who supported culture revolution are the final victims. Million and million people died. It seems like human can't never learned a lesson from history. And it's a shame now US is more like China, not China becomes like US if you compares now vs 20 years ago.

The BLM protests were based on objective lies. Have you watched the whole bodycam video of George Floyd's death? Or is that main stream media told you it's true that the police knee on his neck because he is black?

https://youtu.be/lJlQvOgEx58

Can you finish watching it and tell me which part of it is racist? It's unfortunately now people pick the lies they want to believe and claim it's the truth.