HNHacker News
TopNewBestAskShowJobs

jfr

234 karma · joined December 3, 2009

submissionscomments
jfr··on Don't Copy-Paste from Website to Terminal
Ctrl-x e in zsh is '_expand_word'. The function you are talking about is 'edit-command-line', which is not loaded or bound to any key by default in zsh. You have to load it manually.
jfr··on Gmail.com being MITM'd by Iran using this certificate
gmaslov is clearly talking about the OpenSSH trust model. You are confusing it with the Trust On First Use model, which is not the same thing.
jfr··on Gmail.com being MITM'd by Iran using this certificate
Wrong.

The OpenSSH model implies that you check the fingerprint of the public key before you send encrypted data using that key. That is why SSH shows you the fingerprint of the server key when you first connect, and you have to answer "yes" in order to accept the key and add it to your keyring. You are supposed to have talked to the person managing the system and that person should have given you the fingerprint of the key.

It is virtually impossible for the ISP to intercept and sniff the stream without changing the fingerprint.

The user still has to trust its SSH client.

jfr··on Google Calendar has a new look
Calendar does have a custom view, which defaults to showing the next "4 Days" (hint), available in the bar at the top of the calendar view. You can change it to 7 days if you like in the settings (gear -> Calendar settings -> General -> Custom view).
jfr··on My Email Canary
Also, the PDF format is already compressed. Compressing it again with zip or gzip is a little strange.
jfr··on Google blocks movie service on rooted Android devices
For the users, it is either this or no movie player for them. No movie player means a big product disadvantage compared to competitors, which is very bad for Google as a company.

The problem is not Google, it is DRM and DMCA.

jfr··on The Dark Side of C++ (2007)
No, I have read it in its integrity the first time it came around, a few years ago. Please, stop judging people.
jfr··on The Dark Side of C++ (2007)
I could use your argument to describe pretty much any modern compiler or framework. "It is extremely hard to write a fast, reliable Java SDK that generates good error messages.", for example.

It took years to GCC to arrive where it is because it contained A LOT of legacy code that have been accumulating since its first versions with C++ support. GCC is a compiler that evolved little by little through long years, and many features were added with little design, to fix punctual problems, which made it difficult to converge to a clean implementation.

Clang, on the other hand, had a good deal of proper design to write a clean, robust compiler. The fact that clang reached where it is in such a short time compared with GCC is a good evidence that it is possible to write a good C++ compiler with nice performance and error reporting if you employ good engineering efforts.

jfr··on The Dark Side of C++ (2007)
Most, if not all, of his arguments were already beaten to death. The rebuttal should be floating around somewhere on the Internet, but I couldn't find it with a quick search right now.

Anyways, right at the beginning of the presentation you see the quality of his arguments as he uses a very known problem of a particular compiler (GCC) to bash the language. Sort of a straw man fallacy.

jfr··on Why C++ is vastly superior to C
> The bitching about bad compile time errors has been mostly fixed in clang.

Yes, IOW, it is a compiler problem, not a language problem. Because one particular compiler is horrible on error presentation doesn't mean that the language is bad.

> declared somewhere with static linkage, it can be hard to pin down exactly _when_ that constructor will be called.

The language doesn't define it on purpose. The language leaves it to be defined by the implementation because it goes a little beyond the purpose of the compiler. The compiler transforms C++ source into object code. You can have multiple objects linked together into a single binary, and this linkage is very platform and operating-system dependent. C++ is already horribly difficult to implement correctly; if the language were to define an order for static initialization, it would be stepping on the operating system domain, and make it even more difficult to implement on some systems.

jfr··on World IPv6 day
This is not the expected transition plan to IPv6. You do not turn IPv4 off. During the first phase of the transition period, new users are supposed to run IPv4 and IPv6 side-by-side, so they can reach both parts of the Internet without issues.

You just jumped to the third phase of the transition plan while the rest of the world is busy doing the first one. That ain't gonna work.

jfr··on June 8th: the day your phone won’t stop ringing
Tip: Point your customers to http://omgipv6day.com/ , now.

The site will tell if your Internet access will be fine on World IPv6 day. A positive answer means that you either have IPv4 only connection (no broken IPv6 DNS responses or routes), or have a fully operational IPv6 nameserver and route to the Internet. A negative answer means that your computer was tricked into using IPv6 while no actual IPv6 connectivity exists (and thus you are going to have problems on June 8th).

For a more detailed test: http://test-ipv6.com/

jfr··on Linode launches native IPv6 support
Note: in your case, customer means ISP.

From what I remember, the instructions were that ISPs receive no less than /32, which should provide end-users either /48 or /56. End users use the remaining 8-16 bits to partition their networks in /64 subnets. /64 is the minimum routeable prefix, and is the prefix used for automatic configuration.

Linode offering /128 for free and /64 at a cost is ridiculous. Users will have problems to forward since that would require breaking the /64 into smaller networks (to have at least one distinct subnet at each end of the tunnel), which is not possible for radvd.

jfr··on Linus Torvalds on Garbage Collection (2002)
> A GC system with explicitly visible reference counts (and immediate freeing) with language support to make it easier to get the refcounts right [...]

To be a little pedantic on the subject, such a system (reference counting and immediate freeing) is a form of automatic memory management, but it is not GC in any way. Garbage collection implies that the system leaves garbage around, which needs to be collected in some way or another. The usual approach to refcounting releases resources as soon as they are no longer required (either by free()ing immediately or by sending it to a pool of unused resources), thus doesn't leave garbage around, and doesn't need a collector thread or mechanism to.

There are partial-GC implementations of refcounting, either because items are not free()d when they reach zero references, or to automatically detect reference loops which are not handled directly.

I agree with Torvalds on this matter. GC as it is promoted today is a giant step that gives programmers one benefit, solving one problem, while introducing a immeasurable pile of complexity to the system creating another pile of problems that are still not fixed today. And to fix some of these problems (like speed) you have to introduce more complexity.

This is my problem with GC. I like simplicity. Simplicity tends to perform well, and being simple also means it has little space for problems. Refcounting is simple and elegant, you just have to take care of reference loops, which also has another simple solution, that is weak references. I can teach a class of CS students everything they need to know to design a refcounting resource management system in one lesson.

GC is the opposite: it is big, complex, and a problem that the more you try to fix it, the more complex it becomes. The original idea is simple, but nobody uses the original idea because it performs so badly. To teach the same class how to design a GC system that performs as well as we expect today, an entire semester may not be enough.

jfr··on Facebook will sink under the weight of socially obligated "friendships" (2007)
The boingboing article is just a link and excerpt for the actual article on InformationWeek. You could have linked directly:

http://informationweek.com/news/showArticle.jhtml?articleID=...

jfr··on Annyong, a small web server that serves static files from the current directory
Simpler:

    python -m SimpleHTTPServer
jfr··on [dead]
From the page style:

    textarea {
       font-family: monaco, courier, monospace;
       width: 500px;
       ...
    }
Web designing mistake, wrong choice of units. Depending on user's choice of font width, text will wrap inside the text area and not produce the expected result. 'width: 40em' would be a lot more sensible and produce the expected results.
jfr··on I hope IPv6 never catches on
> But I think I've fed the troll enough.

I'm glad someone said it. This apenwarr seems to have some good karma here on HN, but IMO a lot of what he says is heavily misinformed and biased.

I had the urge to go point-by-point of his post and refute each with proper references and practical examples, but I then I realized that he is just a troll and that would be feeding him.

Some of his points, like about IPv6 addresses being too long and hard to memorize and that NAT is good/enough for users, basically points that he probably doesn't have much experience with network management and how IP works (specially IPv6 networks). This is strange coming from someone who was the original author of wvdial.

I have already argued here on HN why IPv6 addresses are easier to memorize: http://news.ycombinator.com/item?id=1804038

jfr··on Don't waste your time by cd-ing in the terminal
There is dolphin, and a few others. http://unix.stackexchange.com/questions/3990/is-there-a-good...
jfr··on Bing search results showing up in Google
Sorry, the correct number was 3986.

RFC 3986 - Uniform Resource Identifier (URI): Generic Syntax

jfr··on Bing search results showing up in Google
Yes. RFC 3986, sections 6.2.2.2 and 6.2.3.
jfr··on Bing search results showing up in Google
Except for the schema and host parts (which are not part of robots.txt anyway) URLs are case sensitive (ref: RFC 3986, sections 6.2.2.2 and 6.2.3).

The problem here is that Microsoft servers respond to /search, /Search and /SeaRCh without distinction. They are all distinct URLs. If it was the intended behavior (stupid, but understandable, coming from Microsoft), then robots.txt should contain all variants in capitalization for each path. A better solution would be to force a 301 redirect to a canonical path, and have this path in robots.txt. Google would work as expected.

The original article is totally bogus. I can't imagine how it has over 90 votes.

jfr··on Tier One: C++ Beginner's Guide - free before December 31, 2010
Note: it is from Herbert Schildt. This name should ring a bell for many competent C or C++ programmers, as the technical quality and accuracy of his books are frequently disputed, and for many regarded as synonymous of bad quality.
jfr··on IPv4 Space Shrinks To 5% – Final Addresses To Be Issued In Early 2011
No way! It took us almost 20 years to start moving towards IPv6, at great costs. It was better to exaggerate on the address space so that to we don't have to bother with another transition for a long, long time. I don't expect the next transition to happen before we start colonizing Alpha Centauri.
jfr··on IPv4 Space Shrinks To 5% – Final Addresses To Be Issued In Early 2011
You mentioned twice that IPv6 addresses aren't scalar in this discussion. Why?

Are you talking about the scope identifier or the flow label? The scope identifier is not used by the Network Layer, it is used to disambiguate between addresses in different Data Link Layer outputs by the operating system, but plays no role in routing after the packet leaves the network card. There is no field for it in the IPv6 packet.

The flow label is part of the IPv6 packet, but it is used for routing and quality of service, it is not used for addressing.

So, the IPv6 address is actually just a 128-bit scalar integer, that goes from 0 to 340282366920938463463374607431768211455, with different sub-ranges designated to different purposes.

jfr··on IPv4 Space Shrinks To 5% – Final Addresses To Be Issued In Early 2011
From a purely aesthetic standpoint, IPv6 addresses look nasty.

IP addresses are supposed to be used by machines, not humans (considering network administrators are not humans). Humans should deal with domain names.

They vary in length,

IPv4 addresses also do. strlen("10.1.2.4") == 8; strlen("192.168.123.234") == 15.

The physical addresses don't vary in either case. IPv4 is always 32 bit, IPv6 is always 128 bits.

they're hard to remember,

As an administrator, you can make the particular addresses that you need to remember simple. The last 80 bits of the address are entirely yours, and the first 48 bits are fixed for your entire organisation. With IPv4 you end up having multiple very different /24s dispersed through your organisation, and having to fit your important servers in whatever free address space you can find.

So, for example, you know that 2001:db8:1245::/48 is the prefix for your organisation. It is only one you have to remember. Then you can set your DNS to 2001:db8:1245::1, your web server to 2001:db8:1245::2, etc... Not hard to remember.

they're a little bit harder to parse and print than v4s

This is the sort of problem that you have to solve only once (and it was already solved), then use that function/library wherever you want. See inet_ntop(3) and getnameinfo(3) (as a bonus, these functions work identically to both IPv4 and IPv6, the application becomes agnostic to the address class being used).

jfr··on How to keep someone with you forever
Thanks! I'm seriously thinking on finishing my Ph.D. and getting out of the university. The university is full of huge egos (with very few exceptions), and people are very hard to deal on a daily basis. There are hard people everywhere (I've worked on the software industry before, I know them), but in the university this is the rule. Also, as you predicted, I'm afraid I may become like them.
jfr··on How to keep someone with you forever
I'm still in it... I'm a Ph.D. candidate in Distributed Systems, virtualization, Cloud Computing and so on.

Everything fits perfectly. I always wonder if I'm employing my time properly in academia. But they keep me too busy to think about it deeper. Research also keeps anyone tired, too much time dealing with the same problem, lacking some fresh air once in a while to breathe. We are emotionally involved with the work, loyalty and devotion and so on. Intermittent rewards when some of your articles are accepted... And the real awards are distant, the Ph.D. itself.

jfr··on How to keep someone with you forever
This sounds too much like life in academia as a post-graduate student. It hit too close to home... too close.
jfr··on New Stackexchange like site for Ubuntu Q&A
Adding another bit from experience. About the URL from shapado.com I mentioned above, which had its length capped: If you have to limit the length of the URL (or any text string in general), try doing it at word boundaries to reduce the chances of disrupting the meaning of the text. In the title mentioned above, "Source" became "sour".

Think about what happens to "I saw him beating that assassin" if an application decided to cap the string to 26 characters to fit an URL, for example.

Breaking between words reduces the chances of these accidents happening. Sometimes it is not possible (the title is a single big word, or in a language without spaces), in which cases you may want to degrade to the normal slicing.

Page 1 of 2Next →