Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

i was all interested until i saw PHP. That's not a dis on PHP. It's just that PHP is so not the right tool for the job for a command line client. Sure, it appears you can coerce it to do that but... it's designed for embedding in web pages. that's what it's good at. if you want to write command line tools, write them in a language that's actually designed with stuff like that in mind.


I actually intended to write a comment in the README about my choice of language, but as things go, I forgot.

This was, first and foremost, an educational pet project for me. I /like/ building things in the wrong language. Hell, I run a blog called "Machine Learning in JavaScript", and I can't tell you the amount of criticism I've gotten over the years along the lines of "wrong tool for the job!".

I was actually surprised how well this worked in PHP. The only issue is that the ncurses PHP extension, not being compiled by default in most package managers' PHP distribution, does force you, the user, to take an extra step in installing it. That is unfortunate.

That would be a grave issue if I saw this as a product, but since it's a pet project, I see that as totally acceptable :) I actually never even intended to release this publicly!


> I /like/ building things in the wrong language.

That's not the issue here. You could have written that in shell script it wouldn't matter. Just that PHP(+ all the extensions required) makes it more difficult to deploy for someone who just want to try out your project.


I disagree. When I build a project for fun, or for education, as in this case, the last thing I want to be thinking about is you!


I don't believe you read the comment you're replying to.


This reminds me of people who say: "JavaScript is designed for embedding in web pages. Node.js developers are crazy too."

The Right Tool for the job is not the same for everyone. Unless you can state exact reasons what makes PHP bad and something else a better replacement, this is only PHP-bashing we see on HN all the time.

P.S. I wrote many ncurses clients in PHP, C and C++ and did not see much advantage in any of them. Unless there's some special requirement, I'd still pick PHP's duct-tape hashmaps/arrays over anything any other language has to offer.


Why not use Python then? Its implementation of arrays/dictionaries is much less duct-tapey.


Actually I see PHP's duct-tape interface as an advantage. It allows you to express the data structures and manipulate them in less verbose manner, which results in less code, which is easier to debug and maintain.


It hooks into ncurses and executes some HTTP requests. It's incredibly simple and you know what? It just works.

Virtually any language is suitable for something like this.


I'd agree with you, but somehow arcanist manages to be written in PHP.


many impressive things are written with the wrong / a bad tool. That doesn't mean it's a strategy that should be followed.


On the other hand, it could just mean that definitions of "the right tool" are more arbitrary than not.


[deleted]


You're the only person in here who criticized my use of PHP that I actually agree with.

I never intended to release this app, and wanted to build it in PHP for fun, so I stuck with it.

But you're absolutely right on the portability problem. I do agree that, had deployment been an actual interest of mine, PHP would be the wrong language for this.


that sounds harsher than i meant it. My point was more a) use the right tool for the job and b) if you do use the right tool people will be more interested in actually using and supporting it.

I can cut down a tree with a belt-sander but trying to convince other people to do the same isn't going to go over well.


So, what do you reckon is the right tool this time?


For me, my go-to tool for stuff like this is Python. It's been a while since I've done an ncurses tool with it though, I'm not sure how painful/unpainful it would be. It's easy to install on Windows, and generally just works out of the box on OSX and Linux.




Consider applying for YC's Winter 2026 batch! Applications are open till Nov 10

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: