HNHacker News
TopNewBestAskShowJobs

PieterH

1,353 karma · joined July 29, 2008

http://hintjens.com
submissionscomments
PieterH··on Why I’m Investing $500M in Migrants
Thanks for doing this. I mean, copying the article.
PieterH··on Why I’m Investing $500M in Migrants
Doesn't work for this article, Google shows only one hit and it's paywalled.
PieterH··on Artificial Intelligence Software Is Booming, But Why Now?
Nice chart. I call this exponential drop "cost gravity". 50% every 18 months, more or less.
PieterH··on The disruption of Silicon Valley’s restaurant scene
Click on 'web' and then the first link Google offers you.
PieterH··on Static Website Generators
Tried it, liked it. How do you stop spam, link farming, etc.?
PieterH··on HP Allegedly Time Bombs Unofficial Ink Cartridges from Working in Its Printers
Haha, broscript... Sorry, thought I was on Reddit.
PieterH··on HP Allegedly Time Bombs Unofficial Ink Cartridges from Working in Its Printers
Cheap Samsung B&W around $60-70. I've used two over 5 years, very good.
PieterH··on HP Allegedly Time Bombs Unofficial Ink Cartridges from Working in Its Printers
Lexmark are also crooks. Samsung has been good (cheap lasers) but being bought by HP.
PieterH··on HP Allegedly Time Bombs Unofficial Ink Cartridges from Working in Its Printers
The replacement toner is worth buying too, lasts some thousands of pages. I love my cheap Samsung lasers.
PieterH··on HP Allegedly Time Bombs Unofficial Ink Cartridges from Working in Its Printers
Yeah, patent law, recourse of the scoundrels.
PieterH··on HP Allegedly Time Bombs Unofficial Ink Cartridges from Working in Its Printers
Sigh. Well, HP is doing their best to bring us into the paperless future, I suppose. Nice of them.
PieterH··on HP Allegedly Time Bombs Unofficial Ink Cartridges from Working in Its Printers
All you need to do is buy from a business that doesn't depend on fraud. Samsung make very nice and cheap black & white laser printers. I've bought two over the last few years, around $70. I see one on Amazon for $75 that has wifi printing as well), comes with a cartridge that lasted me 2-3 years and some thousands of pages, and replacement cartridges are $60 for branded ones, less than half that for generics. The printer is tiny, quiet, fast, etc. I can't believe people still buy anything else, after all we don't print photos at home much anymore, do we?

There are other manufacturers that do the same kind of model.

Just avoid HP and (in my experience) Canon. Laser is the way to go.

PieterH··on HP Allegedly Time Bombs Unofficial Ink Cartridges from Working in Its Printers
That is so corrupt. HP deserve a total boycott.
PieterH··on I gave commit rights to someone I didn't know
It's always a delicate balance, as there are obviously a fair number of people who don't know what they're doing (yet, if they're learning), as well as some malicious people.

There are ways to deal with that, e.g. force small patches that solve well-identified problems; use CI to test; involve projects' users in testing; and above all, to have other maintainers in the project who can catch such behavior and help you fix it. By yourself, you're rather vulnerable.

Ideally you have a core of 2-4 people you trust from previous projects, and then you can bring unknown people in little by little.

There is no tradeoff as such, but you do need to be more sophisticated than "here are full commit rights."

PieterH··on I gave commit rights to someone I didn't know
Small correction: "Hintjens". Don't blame me, some 19th century Flemish priest misspelt "Awesome" so there we are.
PieterH··on I gave commit rights to someone I didn't know
Felix and I met some time before he wrote that blog post, and I explained our C4 process to him. His pull request hack, which I merged into C4 not long after, is neat though github doesn't provide the tools to do it easily.
PieterH··on While open source is free as in beer, it’s also free as in baby (2014)
No, quite different. There are strong rules about what constitutes a valid patch. Probably stronger than in most projects.
PieterH··on From Kafka to ZeroMQ for real-time log aggregation
ZeroMQ has native stacks in Java, C#, Erlang, C. Also C++.
PieterH··on From Kafka to ZeroMQ for real-time log aggregation
ZeroMQ is a messaging layer that runs over numerous network protocols (TCP, UDP, PGM, TIPC,...), as well as inter-process and inter-thread. It provides abstractions (like pub-sub) that work over all these protocols, and it shows the developer the abstraction using a socket-like API.

In practice you build services which are internally composed and scaled using threads and processes, and which talk to each other over plain (unencrypted) protocols, e.g. TCP between boxes, IPC between processes on the same box. And when you need to talk to the outside world you build bridges that can speak any protocol you like, such as HTTP, or ZeroMQ's encrypted TCP protocol (CurveZMQ). From the developer's point of view, it's mostly transparent. Obviously you need security infrastructure, e.g. key/certificate management.

You can build entire ZeroMQ applications using only encrypted TCP and they will run on public infrastructure. You can develop and test the same apps on a laptop. You might run the same code using IPC on a laptop, and CurveZMQ over the Internet.

So though ZeroMQ definitely uses TCP as one of its transport protocols, it's not a replacement for it.

Which means that doing things like asking for the IP address of a peer make no sense. What's the IP address of a thread, or another process on the same box? If you need identity information, you should not use the transport protocol for that.

PieterH··on From Kafka to ZeroMQ for real-time log aggregation
We use the LGPL license with a clause that makes it harmless. The MPLv2 license is not an issue. All complaints from businesses about licensing come straight to me, as they have for years. MPLv2 raises zero complaints.

ZeroMQ "memory leaks and timeouts" wasn't the issue. Do you have a reference for that?

Salt's issues with ZMTP were performance; they wanted to multicast securely, and ZMTP does not support that. I'd complain once again that making their own custom protocol (actually, it seems to be largely just CurveCP) rather than working with us to extend ZMTP was poor form. Also, Salt wanted a pure Python stack.

PieterH··on From Kafka to ZeroMQ for real-time log aggregation
ZeroMQ is hardly dominant. It's a small player in a huge market and there was and is space for many more projects in this area. I'm glad nano seems healthy again, yet it's not enough, and I'll explain why.

In the end the whole point of ZeroMQ was to build new protocols and APIs for decentralized messaging. My real disappointment with nano was that it made zero effort to build on existing work (mainly, ZMTP) and instead just started again, as if thousands of people hadn't spent years figuring out what a decentralized messaging protocol might look like.

It was worse than that, in fact. Nano launched itself on a wave of negativity. It makes good press, and poor everything else. Such hate for one's own history and knowledge base isn't healthy. If a messaging product isn't aiming at interoperability as a primary goal, it is worthless.

I'm not a fan of the "IETF or bust" approach either. That just doesn't work if you're a decentralized community. We needed and still need lightweight processes for RFC development. We use such a process (Digistan's COSS) in our RFCs. It wasn't random. I built Digistan and COSS over years after seeing AMQP swallowed up and destroyed by a committee. Why isn't nano using a process like COSS?

Without interoperable protocols, all we have is a bunch of software projects. And they die. And then all this is for nothing and the proprietary systems will rule the world and our dreams of making distributed software cheap again will die as well.

And this makes me angry: nano had the chance to push this forwards, and threw it away like old trash. What a stupid, petty waste of opportunity and goodwill.

PieterH··on While open source is free as in beer, it’s also free as in baby (2014)
Like any radical shift in technique, it's best to try on a small project. It takes a while to get the hang of it. I'll answer your questions...

- It is really seldom that a patch is reverted (that a patch is removed). As in, it only happens in exceptional cases, when someone has made an obviously toxic patch by accident on on purpose. It's far easier to move forwards with improvements to the patch. We encourage people to do this rather than provide opinions on the code in writing. What this does is interesting: it brings others in the project into the work, and creates instant mentor-mentee hookups. We see this really often and it is a wonderful thing. You make a patch, it's merged, someone sends a patch on your patch and explains why, and suddenly you have someone in the project who knows that area and can teach you.

- Large sweeping changes are sometimes the simplest way to e.g. refactor some code. It's usually a Really Bad Idea to make functional changes at the same time. It also depends a lot on the language. I'd disrecommend large sweeping changes to a C project, absolutely. The risk of introducing multiple bugs is just too high. In a scripted language, far less risk, and so it's safer. In general, functional changes appear to work better as many small testable steps, and refactoring can work as a single mass change.

- OM scales really well. It needs 2+ people in the project. After that, the limits are elsewhere. Projects with hundreds of contributors are probably too large in terms of internal structure. It means you get ad-hoc pseudo-projects inside a single repository which means poor internal contracts, etc. I'd say a project with more than 7-10 active contributors at any time is getting too large. IME a network of small projects works far better than larger monolithic projects.

- I use OM (the C4 protocol) on all projects, whether they are just starting (my first act is then to call for co-maintainers), or have been around for ages (like the libzmq C++ core library, with hundreds of contributors). We've never seen an issue of scale.

Cheers!

PieterH··on From Kafka to ZeroMQ for real-time log aggregation
Thanks for the updates. I've edited my comment. I've always wanted nano to succeed, just disliked the negative attitude to ZeroMQ expressed in its docs, which seemed unnecessary and damaging.
PieterH··on From Kafka to ZeroMQ for real-time log aggregation
If you try to use ZeroMQ to replace TCP with the same semantics, then no, it won't work.
PieterH··on Torrent Site Founder, Moderator and Users Receive Prison Sentences
There is no case law in France.

Copyright and patent violations fell under criminal law some years ago. There was a long battle in the EU to stop this happening. The movie industry won. In France the law was passed under Sarkozy iirc.

When you download a movie, this is now a criminal offense. However the sanctions are mild (warnings) for first time offenders, and only turn to jail time for those making a lot of money from it (I think, IANAL.)

In all cases however the rights holders don't sue, it's the state that sues. Big win for the content cartels as they get these cases prosecuted for free now.

PieterH··on From Kafka to ZeroMQ for real-time log aggregation
It never happened because (IMO, I'm guessing), no-one actually needs nanomsg. I've never really understood the hostility some people had towards e.g. the ZeroMQ protocols, since these RFCs are as plastic and open to contributions as any part of the project. Yet people like to react against things, and this was a large part of nano's reason for existence. In reality, people who need stable working code just take ZeroMQ and that's it.

Which is all kind of a shame since it would have been so nice to see a new C engine in the community. We have new engines in C#, Erlang, Java, yet the old core project is still that somewhat clunky C++ engine.

PieterH··on While open source is free as in beer, it’s also free as in baby (2014)
The set of problems that any particular design will answer (it's a general thing, not just software) will change over time as economies change. That's why you probably don't own a horse, and certainly don't ride to work on one. Software may be 100% stable and yet will become gradually less accurate over time, doing work no-one needs and yet which places a cost on the project.

You cannot prevent this. The right thing to do is to learn to abandon old solutions when they're no longer economical, and to move rapidly to build new ones that fit the same APIs, yet know more about the modern world.

Hence your car seat is approximately the same API as a horse saddle, built on different technology.

PieterH··on While open source is free as in beer, it’s also free as in baby (2014)
This is so true and so sad. It's what kills many projects: maintainers who think they have some holy mandate for "quality" and create such a difficult environment for new contributors that we fork the project instead.

Read my longer comment in this thread about the C4 process and imagine: you send a patch, and it's merged onto project master within half an hour, and you can then depend on it being available to you forever, as long as you invest in some documentation and tests (if it's a new feature).

PieterH··on While open source is free as in beer, it’s also free as in baby (2014)
> Does anyone have examples to share of open source projects that have very low friction for drive-by contributions while still maintaining quality? Projects with very clear documentation and instructions for contributing?

Yes, absolutely. Read https://rfc.zeromq.org/spec:42/C4/.

We developed the C4 contract (in the form of an RFC) precisely to teach maintainers how to welcome new contributors while keeping quality high. It took many years to refine this approach. By formalizing it, it becomes really simple for projects to adopt: all you need in your README 'Contributing' section is a license (we recommend MPLv2), a link to this RFC, and later a style guide to ensure consistent code style.

The thing about C4 is that it teaches people to make small testable patches, and to trust new contributors. We know from experience that it's users of a project who keep it alive. Original authors and core maintainers burn out, get full time jobs, start new projects. As long as you have users, though, you have potential contributors.

Small patches, merged immediately, with reviews and improvements made asynchronously over time. This style is lovely to work with, kills bike shedding (we argue with new patches rather than comments), and reduces the friction in the project to as low as possible.

More on optimistic merging: http://hintjens.com/blog:106

In terms of friction: we aim to get a patch live on master within a few minutes. If that breaks master, we fix it either with a new patch, or a revert. Anyone can submit a patch, anyone can revert or improve previous patches. You can't merge your own pull requests. We work straight on master so new code is pushed aggressively towards users capable and willing to use it (those who build off master). We use CI heavily to test backwards compatibility, i.e. that existing APIs and protocols haven't broken.

There is also a whole theory of how incremental testable patches remove the need for "intelligent design" and thus the dependency on brilliant key individuals. That's another story which I cover in my book "Social Architecture". Free to read online if you want it.

Best of all, this process works. We know because we've been using it quietly and successfully in the ZeroMQ community for years.

Of all the things I've done in open source, I consider this my most important work, as it solves the really essential problem raised in TFA, which is how to keep open source projects alive over the long term.

PieterH··on From Kafka to ZeroMQ for real-time log aggregation
See http://hintjens.com/blog:112 for my opinion on why nano isn't (wasn't, perhaps, as it seems to be doing better) a good choice.
← PreviousPage 2 of 10Next →