While it does support a few additional options according to the README, I think this whole project could have consisted of no code at all and just cowsay template files that you’d copy to the cowsay template directory. Typically /usr/share/cows/
Imagine installing node.js and a json parser and 10+ other things just for a cowsay clone. I can't imagine what a clean install of all this crap would be just for this project.
Can we not do this? It's just as valid to have this kind of little thing written in node as it is to have it written in Perl.
One person's complaint about a json parser being too heavyweight is just as valid as the complaints that the arcane one-off cow template syntax is hard to use and understand.
Not to mention that this has different features than cowsay, and it's just a fun little project. It parses image files into the terminal display, it can scrape 3rd party websites to download new Pokemon images.
I think we should do this. When writing a tiny, trivial utility, it doesn't make sense to bring in a ton of dependencies. Disk space, memory usage, and download size all matter, especially to those of us who use old hardware on rural satellite connections.
Your final paragraph had a good point, though. It's not just cowsay.
Developer time is valuable too, if you feel strongly about efficiency, feel free to write one in C++ or Rust. As an industry we have come to accept that developers are not cheap, that a multitude of open source libraries is good for everyone regardless of perceived deficiencies in quality, whether this is due to supply/demand is besides the point. The thing is, there are limits to "artisan, handcrafted software". If you want your GUI or app to look good, ship without license restrictions, build quickly, not resort to sweatshop labour, then you have to use stuff like Electron or Node.js. You can't have all of your cake and eat it too. Artisanal handcrafted software is nice to build when you have exited a startup or has a trust fund and nothing better to do with your time.
(If you are a Lisp developer and you are reading this, I challenge you to build one in your favourite Lisp. Let's see how HN's favorite "secret weapon" fares against the entire ecosystem of JavaScript. The hypocrisy is unreal here, people would espouse Lisp in one breath and go back to coding their startup in Rails in another.)
I agree. Fat shaming for software. Otherwise you'll end up with a terminal emulator written with electron. Oh wait, that already exists.
But seriously. If you don't tell people politely and explain what and why it's wrong, they'll never know that what they're doing could be better. Just ranting and shaming might not be the best way. Still I agree with all the NodeJS hate.
What hate do you refer to, and why do you agree with it?
What's wrong with having a rapid development ecosystem within which to build that is fairly simple to install, run, and cycle? JavaScript, and NodeJS by extension, are just as viable as languages as any other out there. There are languages, such as Rust or Go, that people tout their benefits. However, I see no simple way to get an env set up, learn the language, and turn around anything of meaning in the time I could in JavaScript. There are some deficiencies in the platform, surely, but those (as I would expect) get resolved over time.
I could make the same argument about having to get a JRE or a Python interpreter. Each language is going to have its deficiencies and bonuses.
The complaint about "bringing in Node" and all the other dependencies is silly. Developers familiar with Node will already have it on their system - notch. Then the dependencies are just part of the ecosystem since this stuff ain't compiled. So, pointing it out is just being pedantic - that's all.
The way you phrased this makes it seem like you aren't a programmer and are looking in from outside of the programming world.
On another note: a less condescending way of conveying the same message would have been "Cool project. Pokésay would have been a great name instead of Pokemonsay."
Same here, no offence taken. I found it funny how it seemed as if you weren't a programmer, but you mention naming things as something programmers can't do, which is something programmers say. It made me imagine an outsider who agrees with the programmers are crap at naming meme. "Those shitty programmers with their constant misnaming of things." like people hating on cab driver's anti-social driving.
Then you’d have to either write the accent on the e (which is not user friendly) or name it “pokesay” which could me confusing (as in poking someone). I think this is a good utility name.
Generally they tend to mostly go after games starring their characters, and usually leave other types of fan works alone. They also don't go after all fan games either, with 99% of them being left alone and close to 100% of ROM hacks being in the same boat. It's also mostly remakes/games rather similar to remakes or official games that get targeted in most cases too.
So no, I don't think this is going to provoke a cease and desist. It's not competing with anything official, and barely even counts as a fan work at all.
If you want to run it from source then clone it and run `npm run start` which will run `npm run build && node ./dist/cli.js` for you (see the scripts entry in the package.json)
Probably a bit of a silly question, but are the new Pokemon from Ultra Sun/Ultra Moon and GO/Let'a Go Pikachu/Eevee going to be added to this?
Because the former added Zeraora as well as Poipole, Naganadel, Stakataka and Blacephalon (along with new Necrozma forms), whereas the latter added Meltan and Melmetal. Would be nice to see them added for completeness sake, though it raises the question of how 'complete' these joke projects should be character wise, especially when dealing with series that introduce about 100 new characters every three or so years.
Try building it and see which mons are included. I guess you can always publish your own version on NPM when the details for each new generation are available!
For Necrozma, its extra forms don't have pokédex entries so this tool doesn't scrape them from Bulbapedia.
This might be a bit off topic, but what are your options for putting images or "image like" drawings in the terminal now days?
This seems to just use blank spaces with terminal background color codes to draw things, which means your smallest "pixel" is the size of a terminal line.
Are there ways of getting higher definition in a terminal with fairly widespread support and keeping full color?
The hacker part of me is thinking with some combination of finding Unicode characters that "fit" an outline combined with color quantization (since every "character" has to be one color at most) might be able to cut the size in half...
Here is an example of a third-party template for cowsay: https://github.com/lochsh/alpacasay/blob/master/alpaca.cow