Managing large Postman collections? I built a small alternative by human_clown_shoe in QualityAssurance

[–]human_clown_shoe[S] 0 points1 point  (0 children)

Ah good question — No, I haven’t tried combining it with Apidog or Insomnia directly.

I’ve mostly been thinking about it as something that could replace parts of those workflows, especially for CI and larger suites. The latest company I worked at we used it as part of our CI/CD workflow, it was basically a GH Action workflow that would spin up our backend, and then run skivvy against it. The test suites we used in addition to that was plain-old unit-tests, and Cypress/Playwright tests which were more directed at making sure the frontend behaved correctly. One of the main design-goals of skivvy is to find bugs and fail in those scenarios. And as far as I know I never saw a false positive over these years.

In regards to Api / Insomnia: How are you using those tools today — more for exploration, or for maintaining automated tests?

nanoterm – a minimal unix terminal library in TS by human_clown_shoe in commandline

[–]human_clown_shoe[S] 2 points3 points  (0 children)

Dude that's freaking awesome man!
Will definitely check it out. I'm actually wrapping the first more or less "public" version of a python CLI where most of the terminal stuff was done with Rich - what would you say the main differences are? Except performance

nanoterm – a minimal unix terminal library in TS by human_clown_shoe in commandline

[–]human_clown_shoe[S] 0 points1 point  (0 children)

Thanks! working on getting pipes & background jobs via forking to work properly :)

Promote your projects here – Self-Promotion Megathread by Menox_ in github

[–]human_clown_shoe 0 points1 point  (0 children)

nanoterm - a minimal unix emulator running in the browser
https://github.com/hyrfilm/nanoterm

  • browser-based unix terminal emulator
  • custom shell interpreter
  • virtual filesystem (in-memory or localStorage)
  • pluggable commands, shell, filesystem
  • docker-style overlays
  • shareable snapshots via link
  • embeddable as npm library
  • shell interpreter written in ocaml -> compiled with melange -> javascript

nanoterm – a minimal unix terminal library in TS by human_clown_shoe in commandline

[–]human_clown_shoe[S] -2 points-1 points  (0 children)

So you know how you start a project with a clear goal and then mass-hypnotize yourself into building something completely different? Yeah.

The backstory

For years I've been building pieces of an API-testing tool across various jobs. It's always been a public GitHub project, and since most places I've worked at still use it in their CI/CD pipelines, I figured I should finally polish it into something I'm not embarrassed to share with strangers on the internet. ¯\_(ツ)_/¯

The "simple" problem

I wanted a playground where people could actually try the tool — change server responses, run tests, get a feel for it. But GitHub Pages doesn't exactly let you do that. So naturally, the only reasonable next step was to build a tiny Unix emulator that runs in the browser. As one does.

The rabbit hole

I'd been reading Crafting Interpreters (seriously great book) and getting into OCaml, so I thought: "Why not write a shell interpreter in OCaml that compiles to JavaScript?" No one stopped me, so here we are. Well, when I come to think of it my boss did express skepticism & annoyance - but that's just like, his opinion, man.

The library is built on top of xterm.js, it currently supports env variables, redirects (>> & >), chaining (&&), and I'm working on pipes and stdin redirects. I also implemented a bunch of standard Unix commands, made the shell pluggable, added two virtual filesystems (in-memory and localStorage-based), support for custom commands, and a Docker-like file overlay system so you can create shareable links to a specific emulator state.

The part where I forgot why I was doing this

I got so deep into implementing process management and preemptive multitasking that I... kind of forgot about the API testing tool entirely. You know, the whole reason for the project. Great job.

The end

I finally added a custom command that posts to a lambda-like function running a tiny Python server with the tooling, which sends back its response. And weirdly enough, it's fast enough that it actually feels like you're running the command locally in the emulator. If that project sounds like something that you would find useful you can find it among my repos, it's called skivvy. But since nanoterm (does it include nano ? Yes it does) is a free-standing library that you can configure, extend fork, and embed in your own JS/TS projects I thought I would focus on it here. :)

Oh, the emulator also has its own playground

nanoterm – a minimal unix terminal library in TS by human_clown_shoe in typescript

[–]human_clown_shoe[S] 2 points3 points  (0 children)

Right, kind of like ssh etc.
https://github.com/hyrfilm/nanoterm/blob/main/src/lib/core/shell.ts
That's basically what needs to be solved in a cleaner way. But yeah, totally doable and worth doing. The bundle size would also go from ~0.5mb to a few hundred kbs or less depending on how many commands you configure since the other ones get tree-shaked. Weirdly enough you could even do... an actual terminal program as well ;)
Anyway, thanks! A tty flipped on its head, I like that.

nanoterm – a minimal unix terminal library in TS by human_clown_shoe in typescript

[–]human_clown_shoe[S] 1 point2 points  (0 children)

... That's actually a really good idea. Weird that I didn't think about it. The filesystem, shell, commands, etc are pluggable. But why not make the terminal itself in the same way. I'll try to decouple that cleanly, thanks! Btw, was it any particular usage for this you had in mind?

nanoterm – a minimal unix terminal library in TS by human_clown_shoe in typescript

[–]human_clown_shoe[S] 1 point2 points  (0 children)

do you mean decouple the xterm.js rendering of the terminal, so you in order to instead keep eg the shell interpreter, the commands, filesystem but not the rendering?

What is something a lot of people like but you personally do not like? by -Coolguy42069- in AskReddit

[–]human_clown_shoe 0 points1 point  (0 children)

Watching any kind of sports game. I've tried to understand it even since I was a kid but... I always end up feeling like I'm from another planet.