frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

fp.

Show HN: I built a synth for my daughter

https://bitsnpieces.dev/posts/a-synth-for-my-daughter/
414•random_moonwalk•5d ago•91 comments

Google is killing the open web, part 2

https://wok.oblomov.eu/tecnologia/google-killing-open-web-2/
48•akagusu•54m ago•19 comments

FreeMDU: Open-source Miele appliance diagnostic tools

https://github.com/medusalix/FreeMDU
112•Medusalix•2h ago•22 comments

Replicate is joining Cloudflare

https://replicate.com/blog/replicate-cloudflare
116•bfirsh•2h ago•34 comments

Project Gemini

https://geminiprotocol.net/
12•andsoitis•45m ago•17 comments

WBlock: A New Ad-Blocker for Safari

https://github.com/0xCUB3/wBlock
14•InfiniteVortex•47m ago•6 comments

Celtic Code: Drawing Knots with Python

https://2earth.github.io/website/20250202.html
41•HansardExpert•2w ago•9 comments

Are you stuck in movie logic?

https://usefulfictions.substack.com/p/are-you-stuck-in-movie-logic
58•eatitraw•4h ago•47 comments

Ned: ImGui Text Editor with GL Shaders

https://github.com/nealmick/ned
43•klaussilveira•4h ago•14 comments

Giving C a Superpower

https://hwisnu.bearblog.dev/giving-c-a-superpower-custom-header-file-safe_ch/
152•mithcs•5h ago•114 comments

C++ implementation of SIP, ICE, TURN and related protocols

https://github.com/resiprocate/resiprocate
58•mooreds•1w ago•1 comments

Craft Chrome Devtools Protocol (CDP) commands with the new command editor

https://developer.chrome.com/blog/cdp-command-editor
80•keepamovin•1w ago•19 comments

Building a Simple Search Engine That Works

https://karboosx.net/post/4eZxhBon/building-a-simple-search-engine-that-actually-works
221•freediver•12h ago•60 comments

Heretic: Automatic censorship removal for language models

https://github.com/p-e-w/heretic
687•melded•1d ago•315 comments

A file format uncracked for 20 years

https://landaire.net/a-file-format-uncracked-for-20-years/
263•todsacerdoti•1w ago•49 comments

Show HN: Reverse perspective camera for OpenGL (Three.js)

https://github.com/bntre/reverse-perspective-threejs
17•bntr•1w ago•2 comments

Listen to Database Changes Through the Postgres WAL

https://peterullrich.com/listen-to-database-changes-through-the-postgres-wal
158•pjullrich•6d ago•44 comments

Fastmcpp (Fastmcp for C++)

https://github.com/0xeb/fastmcpp
45•0xeb•3d ago•3 comments

Deploying Temporal on AWS ECS with Terraform

https://papnori.github.io/posts/temporal-ecs-terraform/
3•norapap•1w ago•2 comments

GCC 16 considering changing default to C++20

https://inbox.sourceware.org/gcc/aQj1tKzhftT9GUF4@redhat.com/
75•pjmlp•3h ago•64 comments

PicoIDE – An open IDE/ATAPI drive emulator

https://picoide.com/
164•st_goliath•17h ago•39 comments

A 1961 Relay Computer Running in the Browser

https://minivac.greg.technology/
116•vaibhavsagar•13h ago•31 comments

The fate of "small" open source

https://nolanlawson.com/2025/11/16/the-fate-of-small-open-source/
262•todsacerdoti•21h ago•202 comments

I finally understand Cloudflare Zero Trust tunnels

https://david.coffee/cloudflare-zero-trust-tunnels
274•eustoria•22h ago•87 comments

Living my best Sun Microsystems ecosystem life in 2025

https://www.osnews.com/story/143570/living-my-best-sun-microsystems-ecosystem-life-in-2025/
3•birdculture•10m ago•1 comments

The Pragmatic Programmer: 20th Anniversary Edition (2023)

https://www.ahalbert.com/technology/2023/12/19/the_pragmatic_programmer.html
178•ahalbert2•19h ago•54 comments

Why Castrol Honda Superbike crashes on (most) modern systems

https://seri.tools/blog/castrol-honda-superbike/
143•shepmaster•19h ago•30 comments

FPGA Based IBM-PC-XT

https://bit-hack.net/2025/11/10/fpga-based-ibm-pc-xt/
214•andsoitis•1d ago•44 comments

Neuroscientists track the neural activity underlying an “aha”

https://www.quantamagazine.org/how-your-brain-creates-aha-moments-and-why-they-stick-20251105/
141•wjb3•18h ago•35 comments

Z3 API in Python: From Sudoku to N-Queens in Under 20 Lines (2015)

https://ericpony.github.io/z3py-tutorial/guide-examples.htm
143•amit-bansil•21h ago•12 comments
Open in hackernews

Show HN: Nerdlog – Fast, multi-host TUI log viewer with timeline histogram

https://github.com/dimonomid/nerdlog
134•dimonomid•7mo ago
For more background and technical details, I wrote this up as well: https://dmitryfrank.com/projects/nerdlog/article

Comments

Zopieux•7mo ago
journalctl is mentioned once in the landing page and it seems to imply that journalctl is not supported per se, as logs need to be stored plaintext to legacy syslog (?).

I do not want to store plaintext logs and use ancient workarounds like logrotate. journald itself has the built-in ability to receive logs from remote hosts (journald remote & gateway) and search them using --merge.

tstack•7mo ago
The article makes it sound like it uses various command-line tools (bash/awk/head/tail) to process the logs. So, I imagine it's not a huge leap to extend support to using journalctl to do that work instead.
mamcx•7mo ago
One small hitch I found is that this kind of tools are fixes in what to process, so for example I can't use them for structured logging. If it has an escape hatch where I can supply my own pipe (for example `process = 'vector ....'`) then it will be enough.
dimonomid•7mo ago
That's true, as of today nerdlog doesn't use journalctl, and needs plain log files. There were a few reasons of that, primarily related to the sheer amount of logs that we were dealing with.

As mentioned in the article, my original use case was: having a fleet of hosts, each printing pretty sizeable amount of logs, e.g. having more than 1-2GB log file on every host on a single day was pretty common. My biggest problem with journalctl is that, during some intensive spikes of logs, it might drop logs; we were definitely observing this behavior that some messages are clearly missing from the journalctl output, but when we check the plain log files, the messages are there. I don't remember details now, but I've read about some kind of ratelimiting / buffer overflow going on there (and somehow the part which writes to the files enjoys not having these limits, or at least having more permissive limits). So that's the primary one; I definitely didn't want to deal with missing logs. Somehow, old school technology like plain log files keeps being more reliable.

Second, at least back then, journalctl was noticeably slower than simply using tail+head hacks to "select" the requested time range.

Third, having a dependency like journalctl it's just harder to test than plain log files.

Lastly, I wanted to be able to use any log files, not necessarily controlled by journalctl.

I think adding support for journalctl should be possible, but I still do have doubts on whether it's worth it. You mention that you don't want to store plaintext logs and using logrotate, but is it painful to simply install rsyslog? I think it takes care of all this without us having to worry about it.

whalesalad•7mo ago
can't you just read from stdin?

i use lnav in this way all the time: journalctl -f -u service | lnav

this is the ethos of unix tooling

dimonomid•6mo ago
Not really, at least not yet, because nerdlog's focus is very different than that of lnav. There is a section about it in the article as well.

In fact nerdlog doesn't even support anything like -f (realtime following) yet. The idea to implement it did cross my mind, but I never really needed it in practice, so I figured I'd spend my time on something else. Might do it some day if the demand is popular, but still, nerdlog in general is not about just reading a continuous stream of logs; it's rather about being able to query arbitrary time periods from remote logs, and being very fast at that.

lenova•7mo ago
I appreciate this response, and want to say I really like your tool's UI over something like lazyjournal. But like the above commentor, I would love to see journald support as well, just because it's the default these days on the distros I use, and seems like the direction the Linux system industry has headed in.
dimonomid•6mo ago
Thanks for the feedback. I'll see what I can do. But for now, do you think the workaround of having to install rsyslog is not good enough?
lenova•6mo ago
I think it will impact first-time users giving nerdlog a quick test/trial run, and cause them to bounce to another tool when it doesn't show them logs from journald out of the box. Users can be finicky and impatient with new tools ;-)

Example: I'm running an Arch-based Linux desktop. Installing ryslog took several minutes to build and install. If I wasn't highly motivated to try out nerdlog, I would have canceled the install.

Also, can the SSH requirement for localhost be bypassed? Most users won't be running an SSH server on their desktop, and this would improve nerdlog's use-cases and make it easier for new users to give it a quick local test run.

Final suggestion: add `go get` support to your repo, so that I can install nerdlog from a single command and not have to clone the repo itself.

dimonomid•6mo ago
Yeah you're right, agree with both of your points.

The `go get` one should be easy to solve though, and my bad for not thinking of it before, thanks. I'll look into it.

lenova•6mo ago
Appreciate your receptiveness, and sorry about all of the edits... I was rethinking my thoughts in real-time ;-)
dimonomid•6mo ago
I first responded before your edit about ssh and localhost, so: yeah, as briefly mentioned in the article, as of today there's no shortcut even for localhost. I was debating whether I should implement this feature before open sourcing it, but I had to draw the line somewhere (I have TONS of ideas what could be implemented), and since reading local logs isn't the primary focus of nerdlog, I decided to skip it for now.

But yes the bypass for localhost can definitely be implemented.

mcint•6mo ago
Yeah, I'm bouncing for now on the localhost requirement. Or, on a related issue of not parsing my .ssh/config, a Match directive, and not wanting it to parse it yet. I grep'ed for an env var to override, but only USER and SSH_AUTH_SOCK are pulled in.

I did go get install ...nerdlog/cmd/nerdlog-tui@latest just fine.

Thanks for hacking in the open, and releasing early.

dimonomid•6mo ago
Sorry to hear you're having issues. I'll try to reproduce and fix the issue with the Match.

Not sure if that "Thanks" for releasing early is sarcastic, but regardless, I appreciate the feedback.

lenova•6mo ago
I would say that their thanks is sincere, and that they're applauding you for releasing a new tool to a public/critical audience while also taking feedback in very constructive manner.
dimonomid•6mo ago
Hey mcint, fyi both of these issues are addressed: the localhost one is addressed for real, and a Match issue is worked around: while it's still not properly implemented, at least it doesn't prevent Nerdlog from starting now. Just in case you wanted to give it another try.

Cheers.

dimonomid•6mo ago
Fyi I was going to create a Github issue for the journald support, but apparently someone else filed it first: https://github.com/dimonomid/nerdlog/issues/7

Just posting it in case you want to subscribe to it. Looks like it's a popular demand indeed, so I'll at least poke it and see what kind of performance we can get out of it.

dimonomid•6mo ago
Fyi I've done a simple benchmark today, and journalctl is indeed a lot slower than simply reading log files. In case you're interested: https://github.com/dimonomid/nerdlog/issues/7#issuecomment-2...
lenova•6mo ago
I have no doubt that journald is slower, and I have no real preference for it. The request for journald support goes back to it being the default on most distros these days. I have to interact with a variety of different servers in different environments, most of which are not managed by myself, and hence I have to interact with was previously setup... which is usually the default config provided by the distro.
dimonomid•6mo ago
I see, interesting. If you don't mind me asking, is it a sysadmin kind of job? Just trying to understand the use case better.

Regardless, journalctl support is the single most requested feature, so yeah I'll at least try to make that happen; hopefully on the upcoming weekend if I'm lucky.

lenova•6mo ago
My role is classified as DevOps consulting, working for several different companies, each with their own unique setup and teams... but yeah, it's basically glorified sysadmin work ;-). On the plus side though, I get to see the realities of internal company tech stacks, and that the default settings often are chosen over better solutions.

Thanks again for considering journald, and at the same time, don't forget that it's your project at the end of the day... you can always disregard feature requests if it's not a direction you want to head in. Though in this case, I do believe journald support would get your tool more traction with a larger audience in the long term.

dimonomid•6mo ago
Thanks for sharing! Good to know that nerdlog turns out to be helpful not only for devs (the original use case), but also for DevOps :)

Fyi, support for journalctl was added to master, in case you wanted to try it out. I didn't yet add automated tests with the mocked journalctl, but my manual tests show that it's working fine.

If a system doesn't have either `/var/log/messages` or `/var/log/syslog`, nerdlog will now resort to `journalctl` by default.

It can also be selected explicitly by specifying `journalctl` as the file, e.g. `myserver.com:22:journalctl`.

lenova•6mo ago
Looking good so far! Now it just needs localhost-without-SSH enabled by default (so that as a new user I test out nerdlog immediately without having to think about which server to connect it to), and your initial onboarding/out-of-the-box experience will be ready for a very wide audience! :-)
dimonomid•6mo ago
Yeah, I agree. Gonna try and get it done on some weekend.

Thanks for trying it out, and for all the suggestions, very helpful!

lenova•6mo ago
And thank you again for being so receptive to feedback!
tstack•7mo ago
Nice work! The TUI looks really sharp and I like the histogram on top. Going to play with this today.

TIL awk patterns can be more than just regexes and can be combined with boolean operators. I've written a bit of awk and never realized this.

philsnow•6mo ago
There's a ton of overlap between "powerful stuff that's easy to write in (g)awk" and "powerful stuff that's trivial to write in perl", but I find awk to be succinct without losing readability.
esafak•7mo ago
Looks nice. You might want to get help from the community to get it packaged for major linux distros, if you want more users.
dimonomid•6mo ago
Thanks, and yeah getting distro packages would be dope. Hopefully, some day.
tomerbd•7mo ago
Can i view logs from aws cloudwatch?
mdaniel•7mo ago
You'll go broke doing that, as those API calls are not free. Best to configure cloudwatch to dump into some sane place (S3, SigNoz, whatever) so you only pay the api call once and not every time for interactive viewing

I went spelunking around in the codebase trying to get the actual answer to your question and it seems it's like many things: theoretically yes with enough energy expended but by default it seems to be ssh-ing into the target hosts and running a pseudo agent over its own protocol back through ssh. So, "no"

openWrangler•7mo ago
Seconded - it sounds like compatibility isn't there yet with AWS, but it would be great if there was a way to use nerdlog with other OSS dashboard tools like Signoz or Coroot like you mentioned. Still a really interesting graylog altnerative.
knowitnone•7mo ago
Nice. I needed this a few years ago. No license file?
dimonomid•7mo ago
Yeah right, my bad, and thanks for reminding me. Just added one (the BSD 2-clause).
adityavinodh•6mo ago
Looks great! Was just looking for something like this.
ryanhecht•6mo ago
I definitely intend on playing around with this later! I see that [gzipped log archives aren't supported](https://dmitryfrank.com/projects/nerdlog/article#depends_on_...), minimizing the use case for me personally. You've at least thought enough about that to bring it up as a limitation you think people will call attention to -- any plans to eventually support it?
dimonomid•6mo ago
Thanks for the feedback!

Yeah it would be great, and I do want to support it, especially if the demand is popular. In fact, even if you ungzip them manually, as of today nerdlog doesn't support more than 2 files in a logstream, which needs to be fixed first.

Specifically about supporting gzipped logs though, the UX I'm thinking about is like this: if the requested time range goes beyond the earliest available ungzipped file, then warn the user that we'll have to ungzip the next file (that warning can be turned off in options though, but by default I don't want to just ungzip it silently, because it can consume a signficant amount of disk space). So if the user agrees, nerdlog ungzips it and places somewhere under tmp. It'll never delete it manually though, relying on the regular OS means of cleaning up /tmp, and will keep using it as long as it's available.

Does it make sense?

ryanhecht•6mo ago
Definitely makes sense!

> In fact, even if you ungzip them manually, as of today nerdlog doesn't support more than 2 files in a logstream

Ah, interesting! I read the limitation as "we don't support zipped files," not "we only support two files!"

Best of luck, this is neat!

dimonomid•6mo ago
Yeah well the 2-files limitation is mentioned in some other place; but I agree this section could be rephrased to make it more clear too.
nodesocket•6mo ago
Very nice work. Anyway to specify a group of log files in the config that are shared across many hosts? For example:

  log_files:
    mygroup:
      - /var/log/syslog
      - /var/log/foo
      - /var/log/bar
  log_streams:
    myhost-01:
      hostname: actualhost1.com
      port: 1234
      user: myuser
      log_files: mygroup
    myhost-02:
      hostname: actualhost2.com
      port: 7890
      user: myuser
      log_files: mygroup
    myhost-03:
      hostname: actualhost3.com
      port: 8888
      user: myuser
      log_files: mygroup
dimonomid•6mo ago
Thanks. And no, as of today, there's no way to define a group like that. Might be a viable idea though.

However, before we go there, I want to double check that we're on the same page: this `log_files` field specifies only files _in the same logstream_; meaning, these files need to have consecutive logs. So for example, it can be ["/var/log/syslog", "/var/log/syslog.1"], or it can be ["/var/log/auth.log", "/var/log/auth.log.1"], but it can NOT be something like ["/var/log/syslog", "/var/log/auth.log"].

mdaniel•6mo ago
At the very grave risk of scope creep, I'll point out that the GP's yaml is very close to an Ansible inventory file so rather than just making up a new structure one could leverage any existing muscle memory (and create helpful defaults for folks who have not yet seen Ansible but have seen your tool)

https://docs.ansible.com/ansible/11/collections/ansible/buil...

e.g.

  all:
    children:
      mygroup:
        hosts:
          myhost-01:
            hostname: actualhost1.com
            port: 1234
            user: myuser
          myhost-02:
            hostname: actualhost2.com
            port: 7890
            user: myuser
          myhost-03:
            hostname: actualhost3.com
            port: 8888
            user: myuser
        vars:
          files:
          - /var/log/syslog
          - /var/log/foo
          - /var/log/bar
That first "children" key is because in ansible's world one can have "vars" and "hosts" that exist at the very top, too; the top-level "vars" would propagate down to all hosts which one can view as "not necessary" in the GP's example, or "useful" if those files are always the same for every single host in the whole collection. Same-same for the "user:" but I wasn't trying to get bogged down in the DRY for this exercise
piterrro•6mo ago
This is a really cool project — love the simplicity and the TUI approach, especially with the timeline histogram and remote-first design. I had similar pain points at my end when dealing with logs across many hosts, which led to building Logdy[1] — a tool with a slightly different philosophy.

Logdy is more web-based and focuses on live tailing, structured log search, and quick filtering across multiple sources, also without requiring a centralized server. Not trying to compare directly, but if you're exploring this space, you might find it useful as a complementary approach or for different scenarios. Although we need to work more on adding ability to query multiple hosts.

Anyway, kudos on nerdlog—always great to see lean tools in the logging space that don’t require spinning up half a dozen services.

[1] https://logdy.dev

johnisgood•6mo ago
This looks good. Any way to use date/time in RFC 3339 format without changing the source code?

Does this work with runit (Void Linux)?

dimonomid•6mo ago
Re: the date/time format, I was thinking about implementing support for an option like timefmt, so you'd be able to do :set timefmt=2006-01-02T15:04:05Z07:00 , but postponed for now.

That's not hard to implement, however to make it persistent requires implementing some config / scriptability, which is a whole other thing and requires more thought.

Re: runit, I never tested it, but after looking around briefly, it sounds like there is no unified log file, and not even unified log format? I mean it's possible to make it work, treating every log file as a separate logstream, but I've no idea what these logs look like and whether supporting the formats would be easy.

johnisgood•6mo ago
Void Linux uses svlogtail for viewing logs.

It is a simple script: https://github.com/void-linux/socklog-void/blob/master/svlog...

I think everything is in /var/log/socklog/everything/current, so this could be considered united.

Before you add the timefmt, it may be better to add a configuration file if one does not already exist, but it seems like it does? You already have ~/.config/nerdlog/logstreams.yaml, so might as well have config.yaml?

For more about logging on Void: https://docs.voidlinux.org/config/services/logging.html

dimonomid•6mo ago
That's good news that we have /var/log/socklog/everything/current, but I'm also trying to figure the format. Is it like this? (sourced from chatgpt)

2025-04-21 12:34:56 myhostname myservice: Something happened

If so, then yeah it's totally doable to make this format supported.

Re: config.yaml, yeah I thought of that, but in the long term I rather wanted it to be nerdlogrc.lua, so a Lua script which nerdlog executes on startup. Similar to vim (or rather, more like neovim in this case since it's Lua). Certainly having config.yaml is easier to implement, but in the longer term it may make things more confusing if we also introduce the Lua scripting.

johnisgood•6mo ago
Sadly no. The format is (with examples):

  2025-04-21T19:18:15.09577 user.notice: Apr 21 21:18:15 root: ACPI group/action undefined: jack/lineout / LINEOUT

  2025-04-21T19:18:15.98845 daemon.debug: Apr 21 19:18:15 rtkit-daemon[1368]: Supervising 0 threads of 0 processes of 1 users.
And yes! That is even better for configuration!
johnisgood•6mo ago
Maybe the format could be customizable per log file, too.
dimonomid•6mo ago
I don't think there's anything wrong with this format, it looks good. The most important thing for nerdlog is that all components of the timestamp must be at the fixed offsets from the beginning of each line. So I believe it can be implemented, I can look at it on the weekend. Feel free to create an issue on Github (I won't be able to test it for real, so would need your help with that)
johnisgood•6mo ago
I have a radial nerve injury, which makes it difficult to code, and I got a lot going on in my life at the moment, but hopefully I can come around it.
dimonomid•6mo ago
Damn I'm sorry to hear that. I'll see if I can get void linux installed somewhere to test it.

Good luck with whatever you're going through!

johnisgood•6mo ago
Thank you! :(. It is also referred to as wristdrop.

> If you sleep in a position that causes radial nerve compression, you may wake up experiencing numbness and tingling along the back of your arm, forearm, and hand. With more severe compression, you may also experience “wrist drop”. With wrist drop, your wrist becomes limp, and is unable to extend up.

This is what happened. It happened to me before 2 times, but this time it was only about 30 mins long compression so it is not THAT severe as it was the previous 2 times.

The reason I expanded on it is that just mere 30 minutes of sleeping on your arm may damage the nerves which results in radial nerve palsy. I would have never imagined it would happen to me, heck, I had no idea it was a thing. I had limp arms before from compression but that was related to only blood circulation, not nerve damage.

Radial nerve palsy is a nightmare for programmers. The first one was so severe that I lost my muscle memory, meaning I could not access some of my accounts.

Treatment is rest, selective electrical stimulation, and B1-B6-B12 combination, ideally injected IM. The faster the better. The first incident took months to recover, this one may only last 3 weeks.

dimonomid•6mo ago
I only had the blood circulation issues from compression during sleeping, and also had no idea until today that the nerve damage like that is possible. I wonder how could it be prevented, if it can.

I seriously hope I won't have to deal with it, but thanks for expanding on it and the treatment.

Wish you a speedy recovery!

dloss•6mo ago
Very nice! Added to my little list of log viewers at https://github.com/dloss/klp#alternative-tools
dimonomid•6mo ago
Thanks, appreciate that!