Live data from Hacker News

Finish your stuff

250bpm.com

71–80 of 104 posts

Re: Finish your stuff

#71
post #49

Earlier quoted context omitted.

Re TeX: That's actually covered by the author. TeX itself is complete. Knuth isn't adding new features, instead the version number is converging to pi (new digit added) with bug fixes [0]. The other variations are not TeX (they're reimplementations) or they're extension built on top of the completed TeX program. [0] https://www.tug.org/TUGboat/tb11-4/tb30knut.pdf [PDF, in case it wasn't obvious]

Yes, that's what I meant to imply. So yes, TeX is finished software but the boundary between what is known as TeX and "not TeX" is blurred by the thousands of extensions in the TeX environment that people must use when using anything beyond the basics. Basically what I'm saying with that example is that you can draw a line around some code and say "this is TeX, and it is finished." But what users mean when they say "…

> the boundary between what is known as TeX and "not TeX" is blurred by the thousands of extensions in the TeX environment that people must use when using anything beyond the basics

I would say the boundary is very well defined.

Consider Internet wire protocols: to access this website, you're using HTTP over TLS over TCP over IP [etc.]

That doesn't mean that TCP or IP are "changing" when HTTP or TLS change. TCP and IP are feature-complete, low-level layers that each just do one thing well. We add on more layers to get the effect we want, and those layers change frequently, but changing those layers doesn't mean the lower-level thing "changes" as a part of it.

I think the problem with TeX is just that people have the nomenclature flipped. People think of things like LaTeX as being "what TeX is"—that LaTeX "is an implementation of" TeX. But that's off; it'd be like saying that HTTP is an implementation of TCP/IP, or that Ubuntu is an implementation of the Linux kernel.

In reality, LaTeX et al are software distributions—they include TeX as their text-constraint-processing engine, just like a Linux distro includes the Linux kernel, or a Unity game includes the Unity engine. It's one component, with a well-defined function.

Re: Finish your stuff

#72

Out of the frustration with AMQP I've started my own ZeroMQ project. I doubt that Martin was the sole initiator of ZeroMQ project. I think that late Pieter Hintjens, the original author of AMQP, deserves some credit as well, at least out of respect[1][2]. [1] https://en.m.wikipedia.org/wiki/ZeroMQ [2] https://en.m.wikipedia.org/wiki/Pieter_Hintjens Disclaimer: I knew Pieter personally and met him several times at his…

As someone who only discovered Pieter by finding his last article posted on HN, and then subsequently learning a lot from reading many of his other articles on his website (different perspective on life, humility, consulting in tech outside of SV, presentations), here is his homepage for those who are curious: http://hintjens.com.

Three examples I'd recommend:

Life, Consulting, Humility, Calming Down: http://hintjens.com/blog:125 (confessions of a necromancer)

Presentations: http://hintjens.com/blog:107 (ten steps to better public speaking)

Life, Humility, Time: http://hintjens.com/blog:123 (fighting caner)

He's one of the few online writers who keeps my attention no matter the length. His humor is fun and his imagery and story telling style are engaging.

[edit: formatting]

Re: Finish your stuff

#73
post #61

I respectfully disagree. While it's very good to encapsulate functionality, and have stable and well-defined interfaces, there is also a great value to having a unified platform and community that builds interoperable things. Would you rather assemble your project from 250 different libraries, some of which may be incompatible with other ones? Sure, each may solve a tiny problem, and they may all be orthogonal (best…

Wow, I've heard about the leftpad package but reading this made me chuckle.

There’s a package called is-positive-integer (GitHub) that is 4 lines long and as of yesterday required 3 dependencies to use. The author has since refactored it to require 0 dependencies, but I have to wonder why it wasn’t that way in the first place.

Also as a web developer completing projects for different clients regularly I don't see the point of the whole article. Wouldn't a successful delivery of a campaign site be considered a finished project? Especially with the analogy made it's like comparing apples to oranges

Re: Finish your stuff

#74

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?

Re: Finish your stuff

#75
post #61

I respectfully disagree. While it's very good to encapsulate functionality, and have stable and well-defined interfaces, there is also a great value to having a unified platform and community that builds interoperable things. Would you rather assemble your project from 250 different libraries, some of which may be incompatible with other ones? Sure, each may solve a tiny problem, and they may all be orthogonal (best…

Tiny problems that are solved provide a common part that many people can be reasonably sure is free of bugs - if thousands of people use left-pad, you can be reasonably assured that it has no bugs (or else people wouldn't use it, or a bug report would be filed - "many eyes make all bugs shallow"), if a thousand people write left-pad, you will get many versions with bugs that are never found, because there is much higher entropy/surface area.

Re: Finish your stuff

#76
post #64

Earlier 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.

> 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.

But you shouldn't need to be that person.

Re: Finish your stuff

#77

What 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…

So true. A friend of mine that does hardware says "I like hardware because when I run out of parts to install I know I'm done." :-) I've teased him about board re-spins and feature creep, but by and large because there are some externalized costs (like getting new board fabs) it is very crisp in prioritizing adding features vs being done.

Re: Finish your stuff

#78

What 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…

Porting your program to a different platform makes it a different program. It doesn't change the completeness of the original. Modifying your program to account for API changes also qualifies as "a different program" - you can have different programs that all do the same thing, for different platforms, for different API versions of the same platform, and have them all be "complete" even if you may need to write a new one at some point because you want to run it on your wristwatch or something.

Re: Finish your stuff

#79
post #61

I respectfully disagree. While it's very good to encapsulate functionality, and have stable and well-defined interfaces, there is also a great value to having a unified platform and community that builds interoperable things. Would you rather assemble your project from 250 different libraries, some of which may be incompatible with other ones? Sure, each may solve a tiny problem, and they may all be orthogonal (best…

Tiny problems that are solved provide a common part that many people can be reasonably sure is free of bugs - if thousands of people use left-pad, you can be reasonably assured that it has no bugs (or else people wouldn't use it, or a bug report would be filed - "many eyes make all bugs shallow"), if a thousand people write left-pad, you will get many versions with bugs that are never found, because there is much hig…

I agree with that, but I just think there should be some overarching platform / interoperability into which all these small pieces can fit. And also version pinning in package managers, where you manually check diffs and compatibility before upgrading anything.

Re: Finish your stuff

#80
post #20

What 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…

That is called feature creep, and is usually not viewed in positive light. Its real art to know how to decompose problems and design neat, contained, solutions. I'd also argue that the "change" you are seeing is mostly illusionary, but that is another story altogether.

I am reminded of Zawinski's Law.

http://www.catb.org/jargon/html/Z/Zawinskis-Law.html

Post reply on HN