The reason this is an implicit principle of the Unix philosophy is because the Unix philosophy is to be as lazy as possible as the tool-creator and push all complexity onto the tool-user. Thus we get things like Go, regular expressions, and null pointers. People outside this school of thought don't finish their projects because their projects actually try to solve the underlying problems in computing, which are inevi…
What do null pointers have to do with the UNIX philosophy?
Finish your stuff
81–90 of 104 posts
Re: Finish your stuff
#82What would that look like? Consider an example: You have made a little web app that beeps at certain times of the day to remind me to do something. Is it complete? Oh, you want a calendar integration. That makes sense. You add it. Is it complete? Oh, you say you want to release mobile versions? Okay, now is it complete? Sorry, but the iOS version needs to be updated to remain compatible. Now is it complete? There is…
Even though the library worked perfectly fine several years ago and had many users, several years later it seems to show up some kind of errors that most people didn't experience, certain tasks require workarounds or are down right impossible to do.
And the reason fir it is that the environment where the library operates changed and most likely it is used differently than in the past, but it gives a perception as if the quality of software actually degrades with time.
Re: Finish your stuff
#83Earlier quoted context omitted.
I think the Unix philosophy would have you pipe those beeps to another program that does your calendar integration.
You'd still need to write the glue code that correctly maps one program's output to the other program's expected input. I don't see how this is materially different. If by "Unix philosophy" you mean creating modular software, then sure, we're already doing this. If you mean pushing unstructured ASCII data through actual pipe(2)s, then I'm sorry, but this is not a workable solution in 2017.
But in terms of pipes, it seems like the 2010s version would probably be JSON over HTTP.
Re: Finish your stuff
#84Earlier quoted context omitted.
But isn't that a bit like sitting on someone else's chair? You can't control things you don't own.
Yeah, I'd compare that more to living in a hotel, and coming into your room every day to find that the hotel has replaced the chairs. The hotel, here, is the web service, or your OS's package manager If you have a problem with constantly changing chairs, you're free to find a new hotel that doesn't do that—probably one with "LTS" in the name.
Re: Finish your stuff
#85Earlier quoted context omitted.
But isn't that a bit like sitting on someone else's chair? You can't control things you don't own.
This seems like the kind of question liable to open a whole can of worms about free software and what it means to "own" a program
Re: Finish your stuff
#86I don't agree. The goal of software isn't usually to discover some perfect abstraction with nothing left to add and nothing to take away, the goal is usually to solve some practical real-world problem. If your software satisfies the requirements without taking too much time or effort to create, then it's a success. If a project is going to be used by a lot of people or become some kind of industry standard, then it m…
The author's point is not that there shouldn't be new systems or that no systems should ever change. He's not arguing for a perfect abstraction, either. Following his development path (AMQP->ZeroMQ->nanomsg + libmill + others) his interest was in decomposing the larger system (AMQP which included message queues, databases for storing messages, wire protocols, etc.) into its smaller parts so that you could build back…
I think breaking things up into small pieces so that it's modular and you can work on one part at a time and then assemble a working system out of individually-testable working parts is a good thing (especially if you can re-use parts that other people have already made), but I don't think that's quite the argument the author was making.
I think the author was arguing that you should reduce the scope of the task any time you notice open-ended requirements with no clear completion criteria. I think that's good advice most of the time, but there are exceptions. It's okay to have a project that isn't "finished" if it's useful.
Re: Finish your stuff
#87Earlier quoted context omitted.
Then you split the problem into contained pieces.
But then you didn't solve the problem. You solved pieces of the problem.
I think our industry forgets that solving 50% of the problem is still a big improvement over having the whole problem.
Re: Finish your stuff
#88Earlier quoted context omitted.
What do null pointers have to do with the UNIX philosophy?
It's not on the stated list, but null pointers is a classic expedient unsafe shortcut for those too lazy to design a better type system. C is full of such shortcuts (c.f. Algol 68).
Re: Finish your stuff
#89What would that look like? Consider an example: You have made a little web app that beeps at certain times of the day to remind me to do something. Is it complete? Oh, you want a calendar integration. That makes sense. You add it. Is it complete? Oh, you say you want to release mobile versions? Okay, now is it complete? Sorry, but the iOS version needs to be updated to remain compatible. Now is it complete? There is…
I think the Unix philosophy would have you pipe those beeps to another program that does your calendar integration.
Re: Finish your stuff
#90Earlier quoted context omitted.
This seems like the kind of question liable to open a whole can of worms about free software and what it means to "own" a program
I don't think so, as this comment won't be seen all that much; but I'd say that that's a can of worms that we should open.