50 comments

[ 2.9 ms ] story [ 98.9 ms ] thread
This looks like a fantastic, creative, and polished application for learning and debugging. I'd recommend using this to my network friends.
The cookie and auth management alone makes this worth using. Really fantastic program, will definitely displace my usage of various Chrome extensions to get the job done.
Oh wow. This is going in the bookmarks. Last time I did REST work, I had to make do with CocoaRestClient and Swagger, and neither were exactly convenient for some things.
Very cool project, thanks for sharing! :)
Looks cool!

Any non-ruby alternatives with similar features?

Why?
From my own experience:

Sometimes installing an entire programming language just to use one tool is not worth the time I could possibly waste just trying to figure out how to get it working (assuming it works). Instead looking for alternatives built around tech that's already available in my system makes more sense to me, because of a higher chance of familiarity and the benefit of less time possibly wasted.

There's also the curiosity of wanting to see the project implemented in a language you're familiar with.

> Sometimes installing an entire programming language just to use one tool is not worth the time I could possibly waste just trying to figure out how to get it working (assuming it works).

That's why I would love to see more Docker containers and docker-compose.yaml files for tools shared on HN. A Docker container for this would be super simple to build using an official Ruby Docker container and it would save so much time for anyone who wants to try the tool.

Docker for a command line tool? I thought docker was more for your public facing service sort of thing. Does it even have a full on terminal, being a container?

I'll be honest I've not been keeping up with Docker. It shows, right?

-t when running a docker container allocates a pseudo-tty.

Docker is useful for trying out cli interpreters like this, iojs, or any thing else of the sort. I wouldn't want to use docker if I planned on keeping it around to use more than a couple of times though.

A Docker container is like chroot, but portable. So yes. You can do

    docker exec -it $NAME /bin/bash
to get a shell in a running container, or

    docker run --rm -it $NAME /bin/bash
to get a shell in a new container that will remove itself upon exit. Neither of these require your docker host to be local.
I'm so sick of people wanting to package literally everything as a Docker container. That assumes:

- You're running Linux (or have access to a Linux box)

- The box running Linux is x86_64

- You have a modern kernel set up

- The box has a bunch of ram

- The box has a bunch of disk space (for installing Docker)

Docker forces you to have modern Intel-based hardware. Which excludes people with stuff like the Novena[1] or an old Thinkpad (because 32bits).

- [1]: https://www.crowdsupply.com/sutajio-kosagi/novena

This is why I advocate that software authors package their software for a variety of OS's in their native format. Yes, technically anyone can use Ruby gems or Python eggs or wheels or whatever Go calls their packages, but practically if I can apt-get/brew/emerge/rpm your package, I don't care what language it is written in. It is more effort but it makes a big difference in adoption IMO.
> whatever Go calls their packages

Just fyi, but go doesn't have packages (in this context). Just native binaries with no dependencies.

Well, it has `go get foo` which I'd consider a kind of installer/package manager. That's what I'm referring to since I've seen a good chunk of Go software distributed this way. The README usually says "install Go, then run `go get foo`".

Edit: in fact https://golang.org/doc/code.html refers to this as "Remote packages".

That's fair - i just make the distinction because there's a difference, imo.

In the case of `go get`, there is no preconfigured package, it's akin to a pull and make. Because of that, `go get` tends to be targeted at Go developers. Unlike Python/Ruby/etc, typically only Go developers have the Go compiler at hand.

I mean, i'm in a similar camp with the OP (that you replied to), i don't like installing a runtime just for a specific package. But i typically look at projects that use Ruby as targeted for Ruby developers - not me.

Go is slightly different though, because the compiler is mainly for developers. You don't have to know what Go is to run a "Go binary". So, it's worth an asterisk. That's all i meant :)

Go get is a thin wrapper around git/hg/cvs/whatever. It's supposed to be used by developers, not end users. Note that your link is titled "How to write Go code". For distribution to end users just do whatever you'd do for a program written in C/C++/Java/Erlang/whatever. No need to rub your favorite programming language into your users' face constantly.

But yeah, there's a bunch of Go programmers (presumably those coming from Python or Ruby) that don't really seem to get that you don't need to put source code and a compiler onto your production servers.

I get sad when I see a ruby tool, and don't bother. I'm lazy.

The ones I've tried have been dependant on a specific version of ruby. So you have to work through that. I'm not a resident of the ruby ecosystem, and I don't want to figure out the "why didn't you just" method of managing that. As the saying goes, it's hard to remember your objective was to drain the swamp when you're up to your ass in alligators.

IIRC, vagrant just includes the version of ruby it depends on. Or maybe it just includes a ruby in case you don't have one. I like and use vagrant.

Well, I've never encountered an ecosystem before where it is so totally painful to install and maintain programs coming from there. It's not necessarily the language but the community mindset that doesn't seem to care one tiny bit about backwards compatibility.

Say I want to run two programs an a server, both written in Ruby. Those programs depend on a bunch of libraries. Ok, so I go on and just install those libraries. WRONG. The programs need specific versions of those libraries (both of which differ from the one coming with my Linux distro) and there's no single library version that works with both of them. To make things worse, one program needs a different version of the Ruby interpreter than the other. Only one of those is included in the Linux distribution I'm running.

So instead of being able to (at least partially) rely on the maintenance done by my Linux distro, I'd have to maintain my own Ruby interpreters and libraries. Yeah, right.

For that reason I consider running Ruby programs a liability. Sure, you have to deal with stuff like that everywhere but I never encountered an ecosystem where things are that bad and things break with any other update. I've heard the Javascript/Node people do an equally crappy job but I'm not going to find out personally.

So while I saw a couple of quite nice things written in Ruby, we're not going to use them if their maintenance is such a pain.

a web browser and hitting f12 and any plugin you want
"You’ll need Ruby and RubyGems."

Nope you'll need a decent webbrowser + f12

Additionally some plugs like tamperdata,EditThisCookie etc...

Nice idea/tool :). I mainly use httpie now, does it have any clear advantages over httpie?
This is awesome for exploring an API. And, apropros of nothing, nice example site choice. :D
Looks cool, but—

The website lags on my laptop. Scrolling lags. Why does scrolling lag? How?

What's going on with the internet these days...

There's no javascript on the page at all (with the exception of two IE-compat scripts). The CSS also looks tame enough - a data uri, -webkit-font-smoothing and one Google web font are the only vaguely notable things.

Could be a browser bug on your system? (I see no lag of any kind)

I get the lag too. MBP 15" Late 2014.
No lag here, Mid 2015 MBP 15" driving 2 27" Thunderbolts.
There's also this script:

http://htty.github.io/htty/javascripts/scale.fix.js

which appears to add a 'gesturestart' event, and a weird conditional comment at the bottom that shouldn't appear for non-IE, but whose condition is to explicitly run the function defined in that script in non-IE browsers...

Definitely lagging here, brand new 12" macbook running chrome.
I fiddled around with the code and I think I found the reason for the lags:

The "stylesheets/styles.css" file contains the following rule at the beginning:

  body {
    ...
    background: url('data:image/png;base64,...') fixed;
  }
If you remove the "fixed" attribute it's... fixed! (Oh, the irony...)
That's a bit odd, what browser is this? The fixed background should be handled by compositor layers, and while it is certainly more expensive than having a scrolling background, I'm surprised it makes the experience unusable.
Unusable is a bit extreme a description but I also experience the comparatively slow scrolling. It's worse at the top of the page.

It's not a Mac thing like other commenters suspect---I'm on Linux, using Firefox.

Courtesy of https://fourword.fourkitchens.com/article/fix-scrolling-perf... , remove the fixed background and instead place it in its own layer with will-chance: transform.

  .wrapper::before {
    content: ' ';
    position: fixed;
    height: 100%;
    width: 100%;
    top: 0;
    left: 0;
    background: url('data:image/png;base64,...');
    will-change: transform;
  }
Tested with Chrome dev tools, the repaint troubles disappear. Unfortunately only supported in Chrome, Firefox, and Opera. But just checked, and at least in Chrome the performance problem goes away with this solution even with the will-change removed. YMMV
I think it's a mac thing, at least partially - no lag on Windows running Chrome or Linux running Firefox.
Slightly off topic, but does anyone know the name of the ASCII Art font used in this application's banner?
I don't think there is any special font used for the ASCII art...

You aren't asking for a font that produces ASCII art are you? If so then you might misunderstand how ASCII art is produced.

You're quite confused - please see my response, but he was looking for the FIGLET fonts that produced the "ascii art" text.
Very good!!!

Can I pre-setup a environment? To debug my service I need to go always to some address, set a referer header, disable SSL and set a cookie before starting. I would be awesome to save a state e continue from it everytime.

"Julia Child maneuver", nice
Looks nice, took me a little while to get http://httpbin.org/ back out of memory / browser history when I see this.