Brilliant.
HN user
echochar
Is there any similarity between "tag-length-value" and netstrings (1997)?
What is the purpose of the .note section? If it is left out, it appears from ktrace that the kernel assumes the binary uses some other ABI, e.g., Linux, etc. (compat_linux, etc.) and the /emul shadow directory gets searched.
Is it possible to download the bulk data, e.g. CSV files via FTP, for noncommercial use in a personal database?
How about a tool to "exclude what you don't use"?
I have several personal hacks for doing this I have written over the years but I've yet to find anyone else who tried to automate it.
For example, one task is to determine the functions in a library that are not actually used in your program and exclude those from linking, instead of blindly linking libraries full of unused functions (that sometimes cause name conflicts).
From ritter.vg:
"You're browsing without Javascript! If you have no idea what that means, you should ask your technical friend about it. Otherwise - kudos."
No, kudos to you. I could count on one hand the number of times I have been congratulated by one of these capability detection messages for browsing without Javascript.
I agree firewalls and NAT are a nuisance, and today's internet is not one iota as cool as the BBS days. The nuisances introduced by "ISPs" have hindered but in the long run have not stopped reliable peer to peer internet. I will not name the commonly known examples lest it divert the conversation.
There are a variety of workarounds for dealing with firewalls and NAT, and after years of using them "experimentally", I can attest that they work reliably, at least for me. Some of them are well-known, some of them are commonly used, others are not.
If IP addresses assigned to so-called "reliably reached" servers were as static as you imply in practice, there would be little need for a mechanism like DNS. (And I'm not saying there is, just pointing out that there are a lot of folks who believe IP addresses must be able to change without notice.)
In my experience, domestic internet connections with "dynamic" IP addresses are "reliable enough" to do some "useful" things besides simply partaking in the "calf-cow" web.
Yes. But the server capability is always there. It can be launched again any time the attacker needs it.
"Those are just nice-side effects."
For me, not being baited into buying stuff is a nice side effect.
I block ads because it's fun to see how badly Google, Apple, Microsoft, apps and websites want data about computer users. It's a game (I would guess that's how they see it); one that forces the user to be vigilant about networking.
I agree. Thank you.
Understood. However try to reconcile this with the thought experiment I gave above. You would be saying that these Windows exploits would not work because users have IP addresses that are changing too frequently. Is it possible that _in practice_ many "dynamic" IP addresses are actually quite static (i.e., remaining the same for months or longer)? In _theory_ they could change by the day or week.
Many times I see commenters on HN making statements to the effect of "users cannot run their own servers" and spurring a "debate" in the context of someone trying to innovate away from the current asymmetric, client-server, "calf-cow" internet.
I saw one such commment earlier today.
Thought experiment:
What about exploits like this one, among so many others over the years, in Microsft Windows?
In many cases it sure looks like the user is "running a server".
There is a port open and listening, waiting for connections. And some remote client can connect and issue commands.
"Google makes deployment much easier by using static linking..."
Unless you only are referring to only the Go compiler, can you provide a cite for this statement?
I also use static linking as much as I can. Sometimes it requires quite a bit of work due to how open source developers structure their build systems. I wonder if some folks at Google have also spent significant amounts of time unravelling idiosyncratic build systems found in open source projects to make static, portable binaries.
I often see commenters on HN and elsewhere making commments against static linking. It would be useful to be able to cite to Google's internal practices; these commenters also seem to attribute superior knowhow to Google staff.
Even with Javascript disabled and only session cookies?
OK, so the author purports to be on the side of "end users". And he purports to share empathy with users who get annoying messages that their browser is lacking, outdated, etc.
As an "end user" who has gotten hundreds of such messages over the years, I ask: How about Silverlight? Have you ever gotten an annoying message along the lines of "Sorry, you need Silverlight"?
I have. And I assure you I do not need Silverlight to watch video.
Speaking of empathy, just this week I believe someone posted to HN about a still undisclosed 0-day for Silverlight that someone wrote years ago, that still works flawlessly and recently sold for tens of thousands of US dollars on the black market.
http://ftp.openbsd.org/pub/OpenBSD/5.8/i386/INSTALL.i386
Also, if you learn to use installboot(8) you can make your own PXE bootable images.
I would read the Makefiles in the OpenBSD source tree to see how they make their install images.
Note I'm not an OpenBSD user and have not installed it in many years so I'm not the best person to ask. I use an earlier distribution, the one that spawned OpenBSD. Similar but not the same.
"I guess people using BSD... burn an image to a USB stick..."
I always thought "burn" referred to optical storage like CD-ROM?
Not sure about others, but when I do BSD installs I do not have to click any buttons. I do not need a mouse.
I can lazily use something as small as an 8M stick for the install image. It couldn't be much easier.
With the size of today's RAM (500M+), using the install image I can make the custom image with my personal kernel configs, utilities, and settings entirely in memory without needing to write anything to a HDD. Then I just dd the image to the removable media. That is the slowest step.
My custom images are quite small too, under 16M, and need no access to a HDD. The system runs just fine in RAM, no swap.
I guess I could do the same setup with "Arch" but I imagine it would take considerable work undoing pre-configurations based on assumptions about how I would want my system configured.
Easier perhaps to just compile my own custom Linux kernel and "initrd". Build from the ground up.
I like the flexibility and control with BSD. Not to say Linux does not have flexibility and control, too. It certainly does. I just rarely see ordinary Linux users making use of it when installing. Instead many if not all decisions have already been made, and everything is pre-configured. "One click..."
Kudos to the OpenBSD folks for the network drivers.
gateways.list is quite useful.
Are there lists that include more carriers (non-US)?
progress(1) is a separate utility on BSD; one of my favorites. (Although it is also built in to BSD ftp.)
I regularly use progress with dd, tar and other utilities.
At least one BSD dd now has a "msgfmt" option that outputs parseable, printf-style format strings.
Truthfully, I prefer it when these basic utilities are static except for fixing bugs. Using the new features in scripts means the scripts might lose some portability.
"...user agent strings are a giant disaster of technical debt"
Amen.
I agree with the commenter below who suggests we use random strings instead. Unless there is some sort of published standard for what this header should contain and what each byte means, the contents may as well be random.
The "history" of "user-agents" (about 20 years) is not very long, assuming the web is going to last more than 20 years into the future. Taking a long view, we are still in the nascent phase.
"8 trillion (@ 60 percent of GDP) in ephemeral housing equity"
"loss of 8 trillion in housing wealth"
Is this true?
How do you create 8 trillion in wealth?
If it was "lost" then who has the 8 trillion now?
The article seems to suggest the fact that "email" is so old is significant. IRC is quite old too. And that's what Slack is, with some enhancements. Email has also undergone many "enhancements". Yet the article never mentions IRC. What is old is new again. Keep those articles coming.
1. Practice with new programming language and database.
2. Turn unstructured, difficult to parse data adorned with HTML, and other window dressing into structured data that is easier to parse.
In an "Ask HN:" someone is calling for a ban on Forbes.
Forbes has indeed reached a new plateau in stupidity.
Anyone using a text-only browser has seen that Forbes' most recent design transfers all the content but prevents the page from even displaying in even the most accomodating browser. The word that comes to my mind for their approach to web development is "boneheaded".
Quick and dirty script to view Forbes articles, with no ads:
curl http://www.forbes.com/sites/... \
|sed '
1i\
<html>
s/\\n/\
/g;
s/\\r//g;
s/\\"/\"/g;
$a\
</html>
/./{2,/try {/d;
/} catch/,$d;}
' > 1.html
Then view 1.html in your browser.Why did I call their web design "boneheaded"?
They include two full copies of the article.
And this is before all the ads and God knows what are injected into the page.
"No external imports required..."
I convert HTML to CSV regularly (multiple times a day). But I do not use Python; I use C. Actually I use flex to make filters which I compile as static binaries that read from stdin. This is in fact how I read HN. The HTML is converted to CSV and then the CSV is imported into a database.
Prior to using flex I primarily used sed. For many sites I still do; it's faster than having to compile, test, recompile.
If anyone has a website they want in CSV, and need something faster than Python or Ruby, just post the url. I like to think I am reasonably good at this, but I only do it for personal use on sites I'm interested in so who knows. For me HTML conversion to CSV and plain text is an art - I practice it every day.
Thanks for commenting.
I experimented with small C compilers but UNIX is too intertwined with too many "standard" C libraries. I would like to see a UNIX that used some other libraries, if for nothing else as a proof of concept; e.g., maybe use some of djb's libraries. musl is a good start.
Eventually I decided to just include "as" in the userlands in my small systems instead. I have a library of small asm routines that I keep available, similar to C's "standard" libraries but not taking up the enormous space they do.
But I think the easy way to do socket IPC is just include socat or some other alternative like tcpserver or a small httpd.
Statically compiling socat is made easy and I really admire how the author makes it possible to add/subtract features when compiling. It's the antithesis of forcing the user to accept the kitchen sink, which alas is the norm. Smart.
If the systems you are targeting have a RAM based filesystem that you can mount and transfer files to, and enough RAM to spare, you should be able to run a static binary from RAM that can listen on a socket and run scripts/programs.
When I read "pure Bourne shell" I expected just /bin/sh.
This uses cat, sed, rm, cp, grep, bc, sort, etc. too.
The shell part may be "pure Bourne shell" but there are other utilities involved besides sh.
I guess it was not the convention in 1987 and probably not today either but if it were me I would mention those other utilities.
As a challenge, I always try to minimize the number of extra utilities I have to use, and then I try to stick with the most common, basic ones.
As a result I get highly portable scripts that run just about anywhere, even in reduced functionality, embedded environments, especially non-Busybox ones.
In my experience, cp and rm are to be expected in any userland.
cat and sed are another two of the most common, basic utilities.
But things like grep -v... I would only use that if there were no other way to do the task; e.g., can we accomplish task with sed /pattern/d\;...?
If you're willing to include AWK you can do just about anything; personally I do not rely on AWK being present everywhere.
"You're making some argument..."
Not that I know of.
There's an argument, not made by me, that some IoT is foolish to which I alluded. Is that what you mean?
"The text starts with a question... "does every node need a direct Internet connection?""
I do not see the word "direct" in any part of the rant. Am I missing something? Are you sure that is what he meant? The text reads "do these computers really need to be on the Internet?"
Indeed an internetwork like any other network should be symmetric but I am not sure adpoting IPv6 is the only way to achieve that. Nor that adoption of IPv6 would be used for that purpose.
Instead I see asymmetric, data collection motivated ideas like "Internet of Things" being put forth as "the way of the future". Such ill advised ideas would more likley be the justification for using IPv6.
Do all these "things" (computers) need to be on the Internet?