Things Every Hacker Once Knew - <AUTHOR> http://www.catb.org/esr/faqs/things-every-hacker-once-knew/ <comment><USER2> I always thought it was a shame the ascii table is rarely shown in columns (or rows) of 32, as it makes a lot of this quite obvious. eg, [http://pastebin.com/cdaga5i1](http://pastebin.com/cdaga5i1)

It becomes immediately obvious why, eg, ^[ becomes escape. Or that the alphabet is just 40h + the ordinal position of the letter (or 60h for lower- case). Or that we shift between upper & lower-case with a single bit.

esr's rendering of the table - forcing it to fit hexadecimal as eight groups of 4 bits, rather than four groups of 5 bits, makes the relationship between ^I and tab, or ^[ and escape, nearly invisible.

It's like making the periodic table 16 elements wide because we're partial to hex, and then wondering why no-one can spot the relationships anymore.

<comment><USER3> >"It becomes immediately obvious why, eg, ^[ becomes escape. Or that the alphabet is just 40h + the ordinal position of the letter (or 60h for lower- case). Or that we shift between upper & lower-case with a single bit."

I am not following, can you explain why ^[ becomes escape. Or that the alphabet is just 40h + the ordinal position? Can you elaborate? I feel like I am missing the elegance you are pointing out.

<comment><USER2> If you look at each byte as being 2 bits of 'group' and 5 bits of 'character';

        00 11011 is Escape
        10 11011 is [

So when we do ctrl+[ for escape (eg, in old ansi 'escape sequences', or in more recent discussions about the vim escape key on the 'touchbar' macbooks) - you're asking for the character 11011 ([) out of the control (00) set.

Any time you see \n represented as ^M, it's the same thing - 01101 (M) in the control (00) set is Carriage Return.

Likewise, when you realise that the relationship between upper-case and lower- case is just the same character from sets 10 & 11, it becomes obvious that you can, eg, translate upper case to lower case by just doing a bitwise or against 64 (0100000).

And 40h & 60h .. having a nice round number for the offset mostly just means you can 'read' ascii from binary by only paying attention to the last 5 bits. A is 1 (00001), Z is 26 (11010), leaving us something we can more comfortably manipulate in our heads.

I won't claim any of this is useful. But in the context of understanding why the ascii table looks the way it does, I do find four sets of 32 makes it much simpler in my head. I find it much easier to remember that A=65 (41h) and a=97 (61h) when I'm simply visualizing that A is the 1st character of the uppercase(40h) or lowercase(60h) set.

<comment><USER4> This single comment has cleared up so much magic voodoo. I feel like everything fell into place a little more cleanly, and that the world makes a little bit more sense.

Thank you!

</comment></comment></comment></comment><comment><USER5> A lot of hardware still uses serial, and not just industrial stuff. Everything from sewing machines to remote controlled cameras.

If you work on embedded devices you will still encounter serial/RS-232 all the time. Often through USB-to-serial chips, which only adds to the challenge because they are mostly unreliable crap. Then there are about 30 parameters to configure on a TTY. About half do absolutely nothing, a quarter completely breaks the signal giving you silence or line noise, the final quarter only subtly breaks the signal, occasionally corrupting your data.

Still, there is nothing like injecting a bootloader directly to RAM over JTAG, running that to get serial and upload a better bootloader, writing it to flash and finally getting ethernet and TCP/IP up.

<comment><USER6> Arduino got so popular because it addressed those exact problems: realiable USB to serial built in, foolproof bootloader.

 _Still, there is nothing like injecting a bootloader directly to RAM over JTAG, running that to get serial and upload a better bootloader, writing it to flash and finally getting ethernet and TCP /IP up._

I'm happy to have gotten mostly rid of this. Gone are the days of choosing motherboards based on the LPT support, and praying that the JTAG drivers would work on an OS upgrade.

<comment><USER7> > I'm happy to have gotten mostly rid of this. Gone are the days of choosing > motherboards based on the LPT support, and praying that the JTAG drivers > would work on an OS upgrade.

It's still there, and not going anywhere - the only thing that's past is LPT. Last time I used a Linux-grade Atmel SoC, it had a USB-CDC interface but the chain was still the same: boot from mask ROM, get minimal USB bootloader, load a bootstrap binary to SRAM, use that to initialize external DRAM, then load a flashing applet to DRAM, run it, use that to burn u-boot to flash, and then fire up u-boot's Ethernet & TFTP client to start a kernel from an external server and mount rootfs over NFS. Considering the amount of magic, it worked amazingly well. The whole shebang was packaged into a zip file with a single BAT to double-click and let it do the magic.

As for COM and LPT - FTDI and J-Link changed the embedded landscape forever, and thanks for that.

</comment></comment></comment><comment><USER8> Funny, had to learn all this stuff for my Master's thesis as it was a crucial part of my project to provide reliable shell command exchange via serial connection. It was really really hard to find anybody who knows anything about this lower network level and terminals.

What I can add for everybody who feels the same disappointment as ESR: It's very common for a growing community that three things happen.

A) The number of people with just a little knowledge over the holy grail of your community increases.

B) The popular communication is taken over by great communicators who care more about their publicity than your holy grail.

C) This gives the impression that the number of really cool people decreases. And that is depressing to old timers. But it's in fact often not true. Actually most often the number of cool people increases too! It's just that their voices are drowned in all the spam of what I like to call the "Party People" (see B).

So yes, you can actually cheer. It's harder to find the other dudes, but there are more of them! Trust me, I'm not the oldest guys here but I've seen some communities grow and die till now, and it's nearly always like that.

<comment><USER9> And these days

D) the B)s use various "social" tactics to tar and feather A)s that get in their way...

<comment><USER10> See also: [https://meaningness.com/metablog/geeks-mops- sociopaths](https://meaningness.com/metablog/geeks-mops-sociopaths)

<comment><USER11> As having seen and being part of the start, rise and fall of certain scene of genre of music, this article provided a great piece to reflect upon how and what really did happen :)

</comment></comment></comment></comment><comment><USER12> When you find swaths of knowledge that younger people don't know, you've found success in the overall human goal of abstracting concepts and building on the shoulders of those who came before us.

I'm not suggesting the article is a, "Gosh, Millenials!" conversation. I just get a warm tingle when reminded that I have absolutely no clue how to do something people did just a generation ago, and I don't need to. It's success!

<comment><USER13> This exactly! I like to make the car analogy:

I have no idea how my car works. I mean, I more or less understand the principles underlying the internal combustion engine, but I wouldn't be able to service one, much less assemble one. But _I don 't need to_. Typically, the only indication made available to me that something is wrong is a single bit of information ("check engine light"), but _that is enough_. You don't have to be a "car person" to make effective use of a car. I get in, I go, and well over 99% of the time that's the end of the story.

Compare this with computers. When something goes wrong, it's usually vital that you (or your users) relay the precise error message (and God help you if there isn't one). You generally have to be a "computer person" to some degree to make effective use of a computer. If you are unconvinced by this comparison, contrast how often your family asks you to perform [computer task] versus how often you would approach a mechanic family member to perform [car task]; Contrast how often you hear "I can't do this, I'm not a car person" versus "I can't do this, I'm not a computer person".

I consider swaths of modern hackers who simply don't know about much of ASCII as evidence of babysteps towards computers maturing as a technology.

<comment><USER14> I understand your argument, but I would disagree with a few points:

First, we use computers for so many more things than cars. The average user does really well with basic tasks like checking their email and simple word processing. This would be daily driving in your car analogy. Occasionally things blow up, but that isn't too different from a major problem with a car. However users are constantly trying new things with computers, new programs, websites, and tasks. Car-owners who are constantly trying new things with their cars have as many problems, if not more, than the average computer user. The difference is that the people who use the full range of their car's capabilities are deeply interested in their vehicles.

Second, abstractions like the check engine light are far from perfect. How do you know whether the light signals imminent failure or a minor inconvenience? What additional information is needed for the mechanic to diagnose the problem? I recently chased down a problem in my car that caused the check engine light to come on with a code that was physically impossible. It took a few weeks of careful experimentation and instrumentation before I was able to figure out what it thought was going on. This was a case where I absolutely needed more than a cursory knowledge of how my car works.

I also think that a hacker should be similar to a amateur mechanic: although their car might be fuel-injected, they have a cursory knowledge of how a carburetor works. They may have an automatic transmission, but they understand what a clutch is. Compare that to many developers who have never set foot outside their niche; They have never used a radically different programming language or a different OS. They've never taken the time to dig into the layers beneath the one they use. I would argue that is a weakness. How will you ever debug a problem when it inevitably occurs in the layers beneath you?

</comment></comment></comment><comment><USER15> Many of the control codes are still in active use today in the air-ground communications protocol spoken between airplanes and Air Traffic Control.

The ACARS[0] protocol I work with every day starts each transmission with an SOH, then some header data, then an STX to start the payload, then ends with either an ETX or an ETB depending on whether the original payload had to be fragmented into multiple transmissions or fits entirely into one.

These codes aren't archaic and obsolete in the embedded avionics world.

[0] ACARS: "Aircraft Communications Addressing and Reporting System" \- see ARINC specification 618[1]

[1][http://standards.globalspec.com/std/10037836/arinc-618](http://standards.globalspec.com/std/10037836/arinc-618)

<comment><USER16> Here's the origin of that - The Teletype Model 28 "stunt box".[1] This was a mechanical state machine, programmable by adding and removing metal levers with tines that could be broken off to encode bit patterns. These were used in early systems where a central computer polled mechanical Teletype machines in the field, and started and stopped their paper tape readers and other devices. Remote stations would punch a query on paper tape and put it in the reader, then wait until the central computer would poll them and read their tape. This was addressable, so many machines could be on the same circuit. Used in 1950s to 1970s, when mainframes were available but small computers were not.

[1] [https://www.smecc.org/teleprinters/28stuntbox001.pdf](https://www.smecc.org/teleprinters/28stuntbox001.pdf)

<comment><USER17> Thanks so much for sharing this. This is exactly the kind of TTY history I've always been looking for.

</comment></comment></comment><comment><USER18> Those DB9 and DB25 connectors are still kicking around the bottom of my toolbox.

Why is DEL's bit value 0xff (or 0255)? Because there was a gadget out there for editing paper tape. Yes. You could delete a character by punching out the rest of the holes in the tape frame. I used it once. It was ridiculous.

<comment><USER19> LOL, I swear it feels like the answer to every "why is this weird computer thing this way?" question I see is "because we used to do it this way on punch cards."

<comment><USER7> Wait until you find out that "coder" originally meant "someone who encodes messages into Morse". And if you start digging into the word "code", you'll find it comes from latin "codex" which is a mutation of "caudex" meaning, literally, "tree trunk".

Because back then, people would write on wooden tablets covered with wax.

So.. next time you see a kludge and think of "historical reasons", consider that "historical" goes back much farther than 20th century. :)

<comment><USER20> Huh. I remembered from school that "caudex" was a reasonable translation for the insult "blockhead"... now I know why!

</comment></comment></comment></comment><comment><USER21> I'm sad that "[FGRU]S ({Field|Group|Record|Unit} Separator)" didn't get much use, and instead we have to rely on tabs or commas (TSV / CSV), and suffer from the problem of quoting / escaping.

BTW, I use Form Feed (CTRL+L) character in my code to divide sections, and have configured Emacs to display them as a buffer-wide horizontal line.

<comment><USER22> It seems that so many programming headaches have the same root cause: the set of characters that compose "text" is the same set that we use to talk _about_ text. Hence the nightmares with levels of quoting and escaping. The use of out-of-band characters like NULLs to separate pieces of text does help, but I don't think there is a complete solution. Because, eventually, we want to explain how to use these special characters, which means we must talk _about_ them, by including them in text....

<comment><USER23> > Hence the nightmares with levels of quoting and escaping.

PostgreSQL has an interesting approach to this problem that I've found really straight forward and allows me to express text as text without getting into strange characters. What they've done is allowed using a character sequence for quoting rather than relying on a single character. They start with a character sequence that is unlikely to appear in actual text: $$, it's called dollar quoting. Beyond just $$, you can insert a word between the $$ to allow for nesting. Better explained in the docs:

[https://www.postgresql.org/docs/current/static/sql-syntax- le...](https://www.postgresql.org/docs/current/static/sql-syntax- lexical.html#SQL-SYNTAX-DOLLAR-QUOTING)

What the key here is that I am able to express string literals in PostgreSQL code (SQL & PL/pgSQL) using all of the normal text characters without escaping and the $$ quoting hasn't come with any additional cognitive load like complex escaping can (and before dollar quoting, PostgreSQL had nighmareish escaping issues). I wish other languages had this basic approach.

<comment><USER24> Perl's had something like that for a long time: quote operators. You can quote a string using " or ' (which mean different things), and you can quote a regex using /. But for each of these you can change the quote character by using a quote operator: qq for the double-quote behavior, q for the single-quote behavior, and qr for the regex behavior. (There are a few others two, but I used these most often.)

        my $str1 = qq!This is "my" string.!;
        my $str2 = qq(Auto-use of matching pairs);
        $str2 =~ qr{/url/match/made/easy};

The work I did with Perl included a LOT of url manipulation, so that qr{} syntax was really helpful in avoiding ugly /\/url\/match\/made\/hard/ style escaping.

<comment><USER25> Perl is still, I think, the gold standard for quoting and string manipulation syntax. I am to this day routinely perplexed by the verbosity and ugliness of simple operations on strings in other languages.

(Of course, this may also be one of the reasons that programmers in its broad language family have a pronounced tendency to shoehorn too many problems into complex string manipulation, but I suppose no capability comes without its psychological costs.)

<comment><USER17> Yup, the 8085 CPU emulator in VT102.pl[1] uses a JIT which is essentially a string-replacement engine.

[1]: [http://cvs.schmorp.de/vt102/vt102](http://cvs.schmorp.de/vt102/vt102) (note - contains VT100 ROM as binary data, but opens in browser as text)

</comment></comment></comment></comment></comment></comment><comment><USER26> Things that I still find hard to forget these days:

* ASCII codes for those single and double box characters, so I could draw a fancy GUI on those old IBM text monitors

* Escape codes for HP Laserjets and Epson printers for bold, compressed character sizes etc.

* Batch file commands

* Essential commands for CONFIG.SYS

* Hayes modem control codes

* Wordstar dot format commands

* WordPerfect and DisplayWriter function keys

* dBaseII commands for creating, updating and manupulating records

I wish they would all move out of my head and leave room for me to learn some new stuff quicker!

<comment><USER27> _Escape codes for HP Laserjets_

<esc>&l1O to switch to landscape :)

I'm just about to write some code to parse HP PJL so you never know when ...

<comment> mark-r PJL is easier to parse than it looks at first glance. I worked on a laser printer controller back in the late '80s that for convenience we made mostly HP compatible. Have fun!

</comment></comment></comment><comment><USER28> Fun fact about octal: every commercial and most non-commercial aircraft have a transponder to identify with Air Traffic Control. The squawk code is in octal.

[https://en.m.wikipedia.org/wiki/Transponder_(aeronautics)](https://en.m.wikipedia.org/wiki/Transponder_\(aeronautics\))

<comment><USER29> And the civilian SSR system was built on the released frequencies and protocols of Mode 3 of the military Mark X IFF system, which was adopted by civilian agencies in the mid-1950s after a particularly nasty airborne collision.

Sixty years later and we're still bounded by legacy. As a result of shortage the general-use squawk codes are namespaced into each national ATC region, so aircraft have to constantly change squawks even in supposedly contiguous regions such as Eurocontrol. Squawk 4463 means a different thing in UK airspace than in French.

Ironically, military aircraft still support Mode 3 in order to integrate with civilian ATC, who call it Mode-A, but all their special don't-shoot- me-I'm-friendly stuff is handled by more modern encrypted protocols.

</comment></comment><comment><USER30> The fact that Windows uses CR-LF as a line separator baffles me to this day (and I am not old enough to have ever used or even seen a teletype terminal!) - for a system that was developed on actual teletype terminals, it would have made perfect sense: To start a new line, you move the carriage back to the beginning of the line and advance the paper by one line.

But DOS was developed on/for systems with CRT displays.

It doesn't really bother me, but every now and then this strikes me as peculiar.

<comment> torrent-of-ions When you think about how a typewriter works it's actually correct. The "newline" handle does both a carriage return and a line feed. But you could conceivably do a carriage return without a line feed (and type over what you already have), or a line feed without a carriage return (which might have some actual use).

<comment><USER31> One use for CR without LF was to overstrike passwords on printing terminals. You'd enter your password (which would appear on the paper) then the system would go through several rounds of issuing a CR followed by overstriking the password with random characters.

<comment><USER32> I still use CR without LF all the time. If I'm writing something that features a long loop, I might want status updates, so printf("%d \r", percentage); helps tremendously. You'll need to fflush(stdout) too, since usually flush is triggered by "\n".

On the other hand, there are far fewer use cases for LF without CR, certainly nothing that isn't better done using ANSI codes.

<comment> torrent-of-ions This the use of CR without LF on a virtual TTY. On a real TTY or typewriter there is less use, but as one user pointed out one could remove information like a password which was printed.

LF without CR is something that one would do on a typewriter for typing tabulated data or mathematical formulae. It's just a way to go "down" but stay at the horizontal position you were previously at.

</comment></comment></comment></comment></comment><comment><USER33> > It is now possible that the user has never seen a typewriter, so this needs > explanation […]

Aw man… I'm only 36, but now I feel old for growing up in a time where a typewriter was still common enough to run into (even if they were rapidly being displaced by personal computers).

They still exist in the wild though as a hipster accessory — they probably do well on Instagram too I suppose.

<comment><USER34> I'm work at a global logistics company. Manual typewriters are still somehow part of our workflow for filling in forms, not even carbon backed.

It boggles my mind why that hasn't been replaced by a PDF form. Perhaps IT being siloed in another building keeps such legacy going.

<comment><USER9> With many of these things i suspect it comes down to laws and regulations more than anything else.

Meaning that your typewritten document will be accepted as evidence during a lawsuit or similar, while a PDF of same may not.

</comment></comment></comment><comment><USER35> I gave a talk on the origins of Unicode a while ago (now published on InfoQ at [https://www.infoq.com/presentations/unicode- history](https://www.infoq.com/presentations/unicode-history) if you're interested) where I talked about ASCII, and where that came from in the past (including baudot code and teletype).

The slide pertaining to ASCII is here:

[https://speakerdeck.com/alblue/a-brief-history-of- unicode?sl...](https://speakerdeck.com/alblue/a-brief-history-of- unicode?slide=6)

</comment><comment><USER36> Ah the good old days, when hackers were hackers and quiches were quiches.

Oh wait, this article is 'man ascii' & 'man kermit'.

<comment><USER36> Although interestingly enough from 'man ascii', it's clear why ^C is ETX:

      >         Oct   Dec   Hex   Char                        Oct   Dec   Hex   Char
      >         ────────────────────────────────────────────────────────────────────────
      >         000   0     00    NUL '\0'                    100   64    40    @
      >         001   1     01    SOH (start of heading)      101   65    41    A
      >         002   2     02    STX (start of text)         102   66    42    B
      >         003   3     03    ETX (end of text)           103   67    43    C
      >         004   4     04    EOT (end of transmission)   104   68    44    D
      >         005   5     05    ENQ (enquiry)               105   69    45    E

Holding Ctrl set bit 6 to '0', bit 7 to '1', and bit 8 to '0'. 'C' and 'c' differ by bit 6 only ('1' for 'c').

<comment><USER37> I remember CLU said, "Acknowledge" but I can't remember if the MCP said, "End of transmission" or "End transmission."

From now on every time I Ctrl-d I want to think the voice of the Master Control Program.

<comment><USER38> I'm pretty sure the MCP says "end of line", not "End of transmission".

It's been a while though, maybe he says both.

<comment><USER37> Ah, right. I thought there was at least one place where he said, "End transmission," but I'm probably wrong.

<comment><USER39> Then there's "End Of User" which makes their terminal explode.

[http://www.catb.org/jargon/html/E/EOU.html](http://www.catb.org/jargon/html/E/EOU.html)

</comment></comment></comment></comment></comment></comment><comment><USER40> Does anyone remember EBCDIC? IBM defined EBCDIC for the same purposes as ASCII, but ASCII took off with newer generations of machines. The last time I wrote an ASCII-EBCDIC conversion routine was the late 90's, part of generating a file for upload to a vendor's mainframe.

<comment><USER41> Some popular projects still have to support it: [https://github.com/apache/httpd/blob/2.4.x/include/util_ebcd...](https://github.com/apache/httpd/blob/2.4.x/include/util_ebcdic.h)

</comment></comment><comment><USER42> ESR forgot to give the reason for XON/XOFF: physical terminals often couldn't keep up with an output stream even at a low 9600 baud, so they'd have to back- pressure the sender (usually a dial-up or direct-connect host) to let them know when to stop and when to start.

Plus, people used them manually (control-S/control-Q) on systems to stop output scrolling by, and restart it when they've read what's on the screen, before built-in pagination filters (e.g., more(1) or less(1)) became common. (Specially back in the DECsystem-10/-20 days.)

</comment><comment> charles-salvia Not to mention how the truly ubiquitous HTTP protocol uses CRLF in the headers. The mechanical origins of the CR/LF combo were so strongly ingrained in developer culture that line oriented protocols like HTTP inexplicably continued to use it - either that or Tim Berners Lee just copied it from earlier line oriented protocols like SMTP because it just seemed like the "right way to do things".

It also doesn't help that most modern web servers also include logic to handle a single LF character to terminate lines anyway.

<comment><USER9> Well it meant you could interact with a web server via telnet in a pinch.

</comment></comment><comment><USER43> RS-232 is invaluable. Give me a new piece of hardware and as long as there are 2 wires for the serial port I can port Linux kernel to it.

I have ported Linux to a custom ARM board many years ago. Started with a boot loader written in assembly and writing a single char into serial port for a debug console. It takes a single line of assembly or C. Infinitely easier than USB. From there on, I was able to unwind the whole system, develop USB drivers, TCP tunnels, etc.

</comment><comment><USER44> The article recalls teletype terminals. I'm just putting a video showing how it worked in close: [https://www.youtube.com/watch?v=MikoF6KZjm0](https://www.youtube.com/watch?v=MikoF6KZjm0) . It hypnotizes IMO :)

I'd like to see how looks editing and running BCPL/C programs using ed on such a terminal.

<comment><USER17> I went from amazed ("it's like a mechanical watch...") to bored/irritated ("oh, so THAT's what 110 baud was like... ouch") to amused ("...but I could put up with this, I guess.") as I watched this. Thanks so much.

My conclusion is that I could probably put up with using one of these, but that I'd feel quite cramped if it was my main workstation.

The mechanics of `ed' suddenly make a lot more sense now.

The dialing bit at the end was awesome. Reminds me of relay-based lift motor rooms! (There are videos of those on YouTube.)

</comment></comment><comment><USER45> _The following table describes ASCII-1965, the version in use today. It used to be common knowledge that the original 1963 ASCII had been sightly different (lacking tilde and vertical bar) but that version went completely extinct after ASCII-1965 was promulgated._

Not quite true - early adopters like DEC kept using the 1963 version for a very long time, which prompted others to follow them. When the Smalltalk group decided to replace their own characters for ASCII in Smalltalk-80 to be compatible with the rest of the world, it was the 1963 version that they used.

Due to this, since I use the Celeste program in Squeak Smalltalk to read my email, I see a left arrow whenever someone wrote an underscore. The other difference is that I have an up arrow instead of ^. But it did adopt the vertical bar and tilde from 1967 ASCII, so it was a mix.

<comment><USER17> For anyone similarly curious what Celeste is, there are some screenshots at [http://wiki.squeak.org/squeak/1467](http://wiki.squeak.org/squeak/1467), and it's included in [http://files.squeak.org/3.7/unix- linux/](http://files.squeak.org/3.7/unix-linux/). No, it doesn't work in Squeak 5.1 :)

To the OP, I'm very curious why you're using Celeste. I take it you've been using it for years?

<comment><USER45> When switching from a KDE based Linux to a Gnome based one many years ago I had to find a replacement for KMail. Since I design Smalltalk computers, it seemed silly not to use Celeste even if I had to put up with some limitations and add a bunch of bug fixes (all dealing with tolerating broken emails).

It is not something I would give to a "normal" person to use, but it is more than good enough to me. The main problem is that it does a reasonable job of showing incoming emails (though attachments show up as links at the end of the text) but when editing an email to send it shows the raw headers and MIME for any attachment.

<comment><USER17> Welp. I didn't see your comment until now. I wonder if you'll see/get this reply.

What do you mean by "design Smalltalk computers"? That sounds really interesting. Do you mean you configure them to autoboot Linux into Squeak or similar? What are they used for? (...I'm guessing education-type environments...?)

I can understand what you mean. I tried to get it working, as I said, and while I got the main window open I had no idea how to configure it (and I must admit I don't have much incentive to.)

</comment></comment></comment></comment><comment><USER46> And yet he doesn't know the PDP-11 is an octal machine even though it's 16 bits.

<comment><USER47> This deserves a little more explanation. The PDP-11 had 8 registers and 8 addressing modes so in the days before debuggers you could dump the binary and pretty much debug straight from the octal without so much as referring to your handy-dandy pocket reference card. [http://www.montagar.com/~patj/dec/pocket/pdp11_programmingca...](http://www.montagar.com/~patj/dec/pocket/pdp11_programmingcard_1975.pdf)

EDIT: Also, the most significant bit was used for 3/4 of the instruction space as a flag for a byte vs. word operation (or add vs subtract) so having it alone in its own octal digit (0/1) made perfect sense. For example 01ssdd was MOV (word) and 11ssdd was MOVB. 06ssdd was ADD and 16ssdd was SUB.

</comment></comment><comment><USER48> > ENQ (Enquiry), ACK (Acknowledge) In the days of hardware serial terminals, > there was a convention that if a computer sent ENQ to a terminal, it should > reply with terminal type identification followed by ACK. While this was not > universal, it at least gave computers a fighting chance of autoconfiguring > what capabilities it could assume the character to have.

That's not quite right (the ACK part isn't right at all). See <[https://en.wikipedia.org/wiki/Enquiry_character>](https://en.wikipedia.org/wiki/Enquiry_character>).

</comment><comment><USER49> Why did the end-of-line indicator settle on LF and opposed to CRLF? Naively, the latter makes more sense to me by virtue of it being more explicit. Do Unix-alikes always inject a CR after a LF?

<comment><USER50> This is mostly coincidental history. A lot of teleprinters used to require that CR+LF was sent for largely mechanical reasons, and Windows was made similar to MS-DOS which was made similar to CP-M which had been built for these kinds of devices.

Unix, on the other hand, was made similar to Multics which had the clever idea of on-the-fly replacing a line feed with whatever the printer required. So text files needed only the LF, and a CR was added automatically if the printer required it. This had its upsides and downsides, but the major upside was that you could print a text file on two different systems and reliably have it come out the same way!

This is one of the reasons that in e.g. C, the '\n' character is somewhat awkwardly defined as "a one-byte number that will move the cursor to the start of the next line", when on some operating systems (Windows) this will end up actually being the two-byte CR+LF sequence (well, when output is in text mode...). Even around the time of C's development this was already an issue and newline translation magic was already required, the ancestors of Linux and the ancestors of Windows just happened to put that magic in a different place.

</comment></comment><comment><USER51> I always thought that instead of these lamentations about lost knowledge, people should just put together resource guides to maintain these skills. Hackers used to know these things? If they're still useful to know, how can I learn about them today? Otherwise, it just sounds like the worst combination of geek posturing and "kids these days."

<comment><USER52> > If they're still useful to know, how can I learn about them today?

By reading the article instead of lamenting lamentations ;)

<comment><USER51> Yeah, no, I read it :)

Some of that stuff piques my interest, but then it can be difficult to get started understanding it relative to other stuff that's more widely covered on the web. I guess I am just a little pampered when it's comparatively much easier to learn about a web framework. But that's probably part of the old school hacker ethos as well.

</comment></comment></comment><comment><USER53> Wasn't "{Field|Group|Record|Unit} Separator" meant to allow an alternative to using commas in CSV data?

<comment><USER54> It has two more levels than CSV (which only has units and records) so no. And FS is _file_ separator not field.

These were used for serial data sources, not just network but punch cards or drums or magnetic tapes. GS, RS and US were intended for databases on serial data sources, "group" is a modern-day table. Lammert Bies has more: [https://www.lammertbies.nl/comm/info/ascii- characters.html](https://www.lammertbies.nl/comm/info/ascii-characters.html)

You can repurpose the final two (record and unit) for CSV, but that's not their original role, and you'll have to make sure they're never opened via user-controlled anything as these control codes are non-printable.

</comment></comment><comment><USER55> Seeing this reminds me of how things were and to be thankful for how far things have come.

</comment><comment><USER56> Read this. Or at least take a look for some historical insight. It is both dry and interesting.

An annotated history of some character codes or ASCII: American Standard Code for Information Infiltration

[http://worldpowersystems.com/J/codes/](http://worldpowersystems.com/J/codes/)

It describes how we got here in excruciating detail, starting with Morse. Military communication systems had great influence. Before the ASCII, as we know it today, there was an "ASCII-1963" that was a bit different.

The long and winding path: Morse Baudot Murray ITA2 FIELDATA ASCII-1963 ASCII-1967

</comment><comment><USER57> > SO (Shift Out), SI (Shift In): Escapes to and from an alternate character > set. These are never interpreted in this fashion by Unix or any other > software I know of [...]

Aren't SO and SI used by the ISO-2022-JP character encoding?

<comment><USER41> Linux does do something with SI and SO, at least on the actual framebuffer console. It enables the VT100 alternate character set, for drawing things.

The k,l,m,n,o,p,q,r,s,t,u,v,w keys then become useful for drawing lines

If you have a linux desktop, switch to an actual console (Ctl-Alt-F1), then:

echo -e \\\x0E

And type a bit of lowercase characters between k and w. To get the terminal back to normal:

echo -e \\\x0F

<comment><USER58> That's what the VT100 did with SI and SO. It's been 30? 35? years since I touched a VT100, but I think I recall there being a configuration bit to enable alternate character set on SI/SO.

<comment><USER17> Here you go: [http://www.pcjs.org/devices/pcx86/machine/5170/ega/2048kb/re...](http://www.pcjs.org/devices/pcx86/machine/5170/ega/2048kb/rev3/vt100/)

Probably not what you used to use, but "ctty com2" (and a couple of Returns directed at the VT100) will make it "go." I'm not 100 on what the keymapping is when you're in the setup screen (virtual Setup key at bottom-left).

</comment></comment></comment></comment><comment><USER59> Isn't BS used in combination with other characters to encode non-character terminal information, like text color changes? In some programs, `]\b` for example will change the text color.

The `]` character itself will not be printed, since `\b` will delete it from the visual line, and this effectively creates a side-channel for communicating "invisible" information within the regular character stream.

It's a pain to work with, though, since it makes things like `strlen` behave in very non-intuitive ways. Just imagine a string becoming _longer_ when you delete the BS character. That's no fun.

<comment><USER60> ^[ (control-[) is how escape is rendered. VT100/ANSI uses escape sequences for terminal control sequences (like positioning the cursor or changing the color).

</comment></comment><comment><USER61> Ha! The first technical book I ever bought was _The RS-232 Solution_. It is not impossible that I bought it at an airport bookstore--this was in the mid-1980s.

</comment><comment><USER62> Hm, maybe _that 's_ the way how we can try fixing the "programmers don't know their ancestors' discoveries" issue? By "older" programmers blogging about things that are obvious to them, but apparently no longer to people? in a somewhat loose "old folk stories" style, but slightly more dense than the pure "funny folklore tales" like what did Jobs say to woz, or esr quip to ken?

<comment><USER63> Blogging and story telling isn't enough, if the audience doesn't care.

For example, there are lots of old papers from Xerox PARC, Burroughs, AT&T and many others freely accessible on the Internet.

Some of them, we have to thank to the laborious work from people that bothered to digitize their original form, produced by plain typewriters.

Yet, I doubt many youngsters bother to read them.

<comment><USER64> I'm 21 years old, the way Alan Kay speaks about Xeroc PARC work, Douglas Engelbart, Burroughs etc intrigues me. Then I try reading for example Engelbart's paper, it's fucking huge! I just get bored so quickly with the way they're written, especially because they're so out of context, many things were very different back then, so a lot of what I know right know either didn't exist yet, or will only confuse me due to my assumptions about how things were done back then.

Then again, I have read a few papers, it's just highly inconvenient. And in what kind of setting would you take the time to really read these anyway? Work setting? No, just get your work done. At home? I don't mind reading a bit during my own time, but I don't want to spend hours upon hours trying to understand something from a very different context. Academic? Yeah sure why not. But I'm not in academia!

<comment><USER17> If you have the resources, find out what museums are in your area, or plan trips to the museums that contain things you'd be interested in.

For example [https://www.youtube.com/watch?v=MikoF6KZjm0](https://www.youtube.com/watch?v=MikoF6KZjm0) is in a museum, as is [https://www.youtube.com/watch?v=NEbMksxQAgs](https://www.youtube.com/watch?v=NEbMksxQAgs). You can go and check them out and poke them (to some extent).

While watching videos is really awesome, actually being able to watch these things in action provides a level of context that is impossible to convey digitally.

</comment></comment></comment></comment><comment><USER65> I'm working on a greenfield project at a hotel where we've had to interface with a Mitel PBX over RS-232.

I was shocked how literally the ASCII codes were followed by the PBX. It sent an "ENQ" before each command, we had to send an ACK back, and then it sent us STX/ETX-delimited records.

I'm 32 and working today, in 2017. I hope I make stuff that lasts this long.

<comment><USER17> It's harder now, because any developer can make a fancy framework, draw some graphics, make a website, find a domain (on the .io TLD!) noone else has thought of yet, and look as good as (or better than _) multimillion dollar companies. Anybody can compete now. And so, for the sake of landing a job, or networking /personal publicity, or even just for the experience, people do.

The problem is, frameworks and libraries a) are both easy and fun to write, b) are really hard to comprehensively test with full architectural coverage, and c) suggest some form of standardized behavior. While (b) creates technical debt, the main issue is (c) vs (a): we're flooded with "do it this way!" from a thousand groups, even in situations where the developer(s) didn't really intend for that to be their predominant statement.

With all this noise and chaos, it almost feels awkward to stick to old, icky, widely-hated legacy standards in the face of all this innovation. Or at least that's what it's felt like to me. Objectively thinking about it and comparing everything, though, nothing's perfect, but what's been around for a while has the combined benefit of a) having a fairly widespread mindshare, and b) having known solution patterns for a wide range of issues.

I guess what I'm trying to say is that building software on top of tried-and- tested methodologies is likely to produce long-lived results (which is fairly logical).

I'm also reminded of [http://qdb.us/53151](http://qdb.us/53151) :D

_ \- I say "or better than" because large corporations often have standardized internal Web style guidelines and rendering toolkits/templating engines, and making sweeping changes in those is harder than for websites that are little more than a landing page and some documentation - so the bigger an enterprise is, the likelier it is that its website might look mildly dated.

</comment></comment><comment><USER66> If you want to geek-out further on ASCII have a look at Bob Bemer's site: [https://www.bobbemer.com/](https://www.bobbemer.com/) Bob is colloquially known as the "father of ASCII" (among other things) and his writing is fun to read and interesting.

</comment><comment><USER67> Good article, brought back memories! A small correction:

> 56 kilobits per second just before the technology was effectively wiped out > by wide-area Internet around the end of the 1990s, which brought in speeds > of a megabit per second and more (200 times faster)

That should read 20 times faster?

<comment><USER68> > and more...

probably refers to the first widely installed (with coaxial cables) 10 MBit Ethernet networks...

</comment></comment><comment><USER69> I wrote code on a teletype connected to an HP3000 in the mid-70's, so its always a kick to see that technology mentioned here. Especially when it's described as "really old" which obviously it, and I, are :).

</comment><comment><USER70> RS-232 is alive and well in the micro controller space, thank you very much.

</comment><comment><USER71> Pretty soon we'll have to start telling them what a command line interface is, commonly known today as a foreign and abstract concept defined by an acronym, "CLI".

<comment><USER72> I don't think so: just as reading, writing & speaking are still our primary forms of communication (rather than pointing & grunting), so too will CLIs last.

<comment><USER73> It could be deprecated fast though if either big manufacturers decide to ship GUI only systems, or if GUI systems became way more reliable. Or could live forever.

For example we ship a certain device that can be configured fully both from CLI, from web GUI and from Windows application. Customers internally have teams that are 100% polarized - some teams use GUI stuff only and some teams use CLI only. Both refuse to switch on principle. ANd in our case I think in 5-10 years CLI will die. It is just a mess - you can do fast configuration with userfriendly extras in CLI but only on small scale. It just doesn't allow userfriendly editing of kilometer long configs, especially on 100s and 1000s of devices. So if we'll continue improve GUI configuration CLI will eventually die I think. Same could happen in general IT systems, provided there is better alternative (or forced alternative).

<comment><USER17> Right, that makes a lot of sense. If you develop the CLI version more and made it easier to (for example) batch-apply patterns against many datasets, and added sufficient facility to fix the other configuration gripes that are currently harder than in the GUI, well, the CLI will win some more.

I do have to agree, GUIs can be easier to use if they're well-designed. It's also arguably easier to build GUIs than CLIs in some situations, particularly where you don't need something to be fully Turing-complete.

</comment></comment></comment></comment><comment><USER74> The FIX protocol uses the SOH control character to separate message fields.

</comment><comment><USER75> copy con com2 atz atdt ath0

</comment><comment><USER76> NO CARRIER</comment>


Fravia died on Sunday, 3rd May 2009 - <AUTHOR> http://www.fravia.com/

<comment><USER2> <http://en.wikipedia.org/wiki/Fravia>

<comment><USER3> If you don't have the time to contribute to the article, but know about some source of information about him (required to add anything to a Wikipedia biography), please drop them here :

[http://en.wikipedia.org/w/index.php?title=Talk:Fravia&ac...](http://en.wikipedia.org/w/index.php?title=Talk:Fravia&action=edit&section=9)

(link to the input form of the proper section in the talk page).

</comment></comment><comment><AUTHOR> .. and I am sad. A great man has passed.

</comment><comment><USER4> That sent shivers down my spine. I attended a lecture of his in 2003 in London. On the train there he sat onfront of me, at the time I had no idea who he was, I had never seen or heard of him, but for some reason, I just knew he was going to be talking at the series of lectures I was heading to. Don't ask me how. It was really weird. Anyway, his lecture was fascinating. Truely. For several years after I read his site and learnt incredible things. I hadn't been to the site for a few years and for some reason he popped into my head last weekend and so I went pocking about the site again. Just checked my browser history, it was the 2nd May, the day before he died. The first two lines of a Bob Marley song come to mind "Theres a natural mystic blowing through the air; If you listen carefully now you will hear". I have no doubt there was something special about the Fravia chap. RIP.

</comment><comment><USER5> He was a good human. I just realized that I have benefited from his works in the past, after watching this video about using RFID tracking for omniscient like marketing metrics: <http://www.boingboing.net/2009/05/08/rfids-on-the- brain.html>

Which reminded me of this article on his site (that I found via "reality hacking" on the wikipedia) <http://www.searchlores.org/realicra/slaves.htm>

It was so powerful to me then that I recall wondering around campus slightly dazed and confused afterwards.

He will be missed.

</comment><comment><USER6> How sad. I learned so much about searching the web from him. I always found his web site painful to use but the time spent there was very rewarding.

</comment><comment><USER7> Awful news, another great mind and soul has left us ...

</comment><comment><USER8> I've learned a lot from his pages... Thanks Fravia!

</comment><comment><USER9> There's days that I wish that people like Ray Kurzweil are correct about the Singularity. When that day comes, what we cherish the most will no longer be lost unwillingly.

<comment><USER10> I frequently wish that I was born a few hundred years later than I was. Then I remind myself that I'm lucky I wasn't born a few hundred years earlier. Which isn't quite enough to balance out my disappointment at being in this time.

<comment><USER11> You're only disappointed because you're looking at the future from a perspective of the present. People from the future won't understand why you think you're missing what they have.

If you're disappointed by the generation in which you live, you're doing it wrong. When you talk on a cell phone? That shit is being sent to _outer space!_ Incomprehensible!

<comment><USER12> I realise you're only regurgitating what you saw on a Youtube clip linked to by reddit, but you do realise that standard mobile ('cell') phone conversations don't use satellites don't you?

Anyway, RIP Fravia

<comment><USER11> Yes, and the clip was hilarious despite being inaccurate, though the inaccuracy doesn't change the point.

And since I don't visit reddit, I must have found it here ;)</comment></comment></comment></comment></comment>


Things you (probably) don't know about Go - <AUTHOR> http://nf.wh3rd.net/10things/ <comment><USER2> You can watch Andrew's talk, along with a talk from Rob Pike and one from Evan Shaw here: <https://www.youtube.com/watch?v=JE17r3n1kz4>

</comment><comment><USER3> It's broken on Chrome 19.0.1084.56 on OS X if you open it in a new tab in the background with middle click. Plain black page, arrow keys/space changes the number indicator in the URL, but shows no content.

Edit: and on a related note, personally I really dislike the trend of posting slides for review outside of the context of a presentation. As something to click on from the front page here, or to bookmark/print for future reference, a plain page with a list that you'd just scroll up/down normally instead of separate slides would be much handier.

</comment><comment><USER4> Go is the new Esperanto: Slightly nicer, slightly more regular but it's not clear what problem it solves.

<comment><USER5> Check out langalot.com. Python (for example) is a nice language but I doubt it could be used to create as brisk a similar site.

<comment><USER6> That is actually incredibly fast!

</comment></comment></comment><comment><USER7> I was at this talk. It was the best meetup I've ever gone to. So many people and so much enthusiasm. I only hope it will translate into Go's success.

</comment><comment><USER6>
       11. The gopher's name

Gordon? [<http://glenda.cat-v.org/friends/>]

<comment><AUTHOR> No. His name is not Gordon.

<comment><USER6> I see, so his name _used_ to be Gordon[1] but he changed his name so that now he has no name.

[1]: <http://reneefrench.blogspot.com/2009/10/gordon.html>

</comment></comment></comment><comment><USER8> It would be nice if it didn't hijack my attempts to zoom in and read on my phone. And some indication that swiping changes slides depending which way you swipe.

</comment><comment><USER9> I got to the landing page and didn't know how to progress either. Why not just add some visible buttons/overlays for next/previous?

</comment><comment><USER10> Gosh darn gopher. Does anyone know its name? I tried Googling it but couldn't find anything.

<comment><USER2> The recording of this talk, and two more, are here: <https://www.youtube.com/watch?v=JE17r3n1kz4>

It's revealed at the end.

<comment><USER11> For those who don't want to watch the whole thing, it's said just after 1:25:45. The gopher has no name.

</comment></comment></comment><comment><USER12> Things I still don't know because the site is just a solid black page with nothing on it.

<comment><AUTHOR> It's an HTML5 presentation. I apologize if it doesn't work in your browser of choice. Try viewing it in Chrome, instead.

<comment><USER13> I viewed it in Chrome on Linux and it took me quite a while to figure out that you advance by clicking the solid black bars on the side of the slides (which don't even show if your browser window is too narrow). More of a UX issue than a technical one, I guess.

<comment><USER14> Same here. Arrow buttons of some sort would help.

</comment></comment></comment></comment><comment><USER15> FAIL - apparently the presentation does not work properly for half the commentators here. The world is clearly not ready for HTML5 (not everyone uses chrome's flavor of it either) yet so make it work with other browsers as well.

<comment><USER16> Well, a big problem is that you're got a pretty huge sampling bias there. The people that it works for aren't going to comment to say "it works!" because that's the state that they expect it to be in.

It works fine for me -- Firefox 13.0.1, so it's not just Chrome-flavoured html5.</comment></comment>


From Idea to HackerNews First Page in 2 Hours - <AUTHOR> https://medium.com/@travelhead/i-just-built-a-website-in-1-hour-ago-that-has-35-visitors-on-it-now-e9dcfc806b46

<comment><USER2> Brings back Geocities memories.</comment>


Immigrants on Trains Near Northern Border Detained - <AUTHOR> http://www.nytimes.com/2010/08/30/nyregion/30border.html?_r=3&pagewanted=1&th&emc=th <comment><USER2> I love the part where they talk about the technology behind it all and how it relates to hacker news.

<comment><USER3> I think it relates to hacker news according to the official guidelines ( <http://ycombinator.com/newsguidelines.html> ). This qualifies as "evidence of some interesting new phenomenon"

</comment></comment><comment><USER4> single page [http://www.nytimes.com/2010/08/30/nyregion/30border.html?_r=...](http://www.nytimes.com/2010/08/30/nyregion/30border.html?_r=4&th=&emc=th&pagewanted=all)</comment>


We All Might Be Living in an Infinite Hologram - <AUTHOR> http://www.wired.com/2014/11/planck-length/

<comment><USER2> Interesting. But what's the difference whether there is a physical lower limit to distance or not? Can it be applied to help make an ansible, for instance?</comment>


Why I'm Putting All My Savings into Bitcoin (2011) - <AUTHOR> https://falkvinge.net/2011/05/29/why-im-putting-all-my-savings-into-bitcoin/ <comment><USER2> Whenever i see articles with titles like this I'm reminded that a common practice in the financial world is to encourage the general investing public to buy something we wish to have hyped, to create the next level of buyers to buy us OUT of a product we wish to divest from, as we see a peak and trough in the near future...

</comment><comment><USER3> Here's the 2011 HN posting if you want to see what people thought then. [https://news.ycombinator.com/item?id=2596475](https://news.ycombinator.com/item?id=2596475)

<comment><USER4> > Asset bubbles run on the bigger fool principle, and they end when you run > out of bigger fools to sell to. If folks have really started cleaning out > their bank accounts and borrowing money to buy bitcoins [...] then it seems > to me that the world is about to run out of bigger fools.

The fatal mistake is underestimating how many fools the world is capable of providing.

<comment><USER5> There is literally quadrillions in wealth measured in the various currencies of the world. So far crypto isn't even 0.1% of that.

The true fool is the one who believes crypto has any more or less intrinsic value than fiat.

<comment><USER6> Fiat _has_ an intrinsic value, in that it can extinguish your tax liabilities. Come April 15th, it doesn't matter whether your income is in bitcoins or onions or beanie babies, you will have to acquire USD somehow to pay the IRS their share.

[https://en.wikipedia.org/wiki/Chartalism](https://en.wikipedia.org/wiki/Chartalism)

<comment><USER7> Could it be argued that crypto has intrinsic value in it's ability to hide from these tax liabilities? I've seen Bitcoin, and other crypto-currencies, compared to the off-shore tax evasion market, as it seems to be able to fulfil much the same purpose.

Of course, Bitcoin as a vehicle for tax evasion isn't a good brand, unless you're very libertarian.

<comment><USER6> Everyone _needs_ to pay taxes if they don't want to have the police kick in their door and drag them off to prison. Most people don't have an unavoidable _need_ to evade taxes.

Using bitcoin to move around assets and evade taxes presuposes that it has a value. It cannot be an explanation for the value of bitcoin. As we've seen from all the altcoins and bitcoin forks, crypto-"currency" tokens are not exactly a scarce resource. You can create an infinite variants of them, or an infinite copies(forks) of the same blockchain. There is no fundamental reason(i.e. you can't tell just by looking at the properties of the token) why Coin A exchanges for more USD than Coin B.

Some of these tokens can have some intrinsic value, when the coin is set up in such a way that you can "redeem" them for computation time, data storage, content etc. Then it functions in a way similar to an accounting or point system. But beyond this, the price of cryptocurrency tokens is propped up by nothing more than speculation.

</comment></comment></comment></comment></comment></comment><comment><USER8> Back in 2011, there were much lesser threats to Bitcoin than what we have now. Most people did not take Bitcoin seriously until now. Most people did not want to buy it because they were scared/skeptical about it (a perfect time to invest). Recently many novices who don't understand cryptocurrencies have invested in it - And very likely that fueled the recent rally upto 10k and well beyond that. Its not a good time to invest or buy bitcoins now. Plus the transaction costs have become significant large to ignore.

As of now (near 2018), comparing these bureaucratic threats to that of just a p2p networks is just not correct and may be naive. (It was different in 2011 when this was not well recognized).

What if governments disallow converting Bitcoin to real currency? Why would a govt not use points like - Taxes, Money laundering and terrorism - to prevent bitcoin? Or may be they allow it with some kind of significant bitcoin- conversion-tax?

<comment><USER9> I am in India and am surprised how big btc here. Ex: I know 50 year old people have no connection to the tech scene who have 1000 dollars in btc, yet have no idea how it works. They think it's digital gold that will give them free money.

It makes me kind if sad. If/when btc crashes it's people like this who are going to get hurt.

<comment><USER10> Don't feel sad for them, if they made millions they also woudn't share it with you

</comment></comment></comment><comment><USER11> > Short version of what bitcoin is: it is a currency, but an entirely new kind > of currency that can't be seized or frozen by governments, one which is > integrated with its transaction system where transaction fees are optional, > and where you can transfer any amount anywhere instantly without any > authority knowing or interfering.

Ha, of course a government can seize any assets these days. We've seen this a couple of times already.

</comment><comment><USER12> In 2015, I got him to reply to a mention about this on this tweet: [https://twitter.com/KimDotcom/status/800388921255280642](https://twitter.com/KimDotcom/status/800388921255280642)

Seemed to imply that he was happy with his decision, but wouldn't do the same thing now.

</comment><comment><USER13> Isn't this inaccurate in today's climate?

> Use case: the key advantage for bitcoin is that it does away with all > bureaucracy, all transaction fees, and perhaps foremost, all transaction > delays and gatekeepers in the financial system.

Maybe in 2011 that was the case?

</comment><comment><USER14> FWIW, you could get a similar return today by buying the ETH presale in 2014.

</comment><comment><USER15> Well, what a clever man

<comment><USER16> The problem is it was probably all stolen by now.

<comment><USER17> Why do you think it would be stolen? Is this because many wallets were generated with weak security in 2011?

I've heard many anecdotes about weak Bitcoin wallet security in the earlier years but haven't really seen many definitive information about just how much Bitcoin was hacked from brainwallets, etc.

</comment></comment></comment><comment><USER18> Did he cash out yet?

<comment><USER3> [https://falkvinge.net/2017/06/11/right-money-bitcoin- hits-30...](https://falkvinge.net/2017/06/11/right-money-bitcoin- hits-3000-1000x-entry-point-six-years-ago/)

[https://falkvinge.net/2017/11/17/new-google-management- decid...](https://falkvinge.net/2017/11/17/new-google-management-decided- search-cost-20-take-eight-hours-deliberately-unreliable-bitcoin/)

Guessing that he moved it to Bitcoin Cash.</comment></comment>


A powerful Swift programmatic UI layout framework - <AUTHOR> https://github.com/mamaral/Neon <comment><USER2> This is great! I like the idea, excited to test it on on a project.

Also, massive props for MIT licensing it.

<comment><USER3> Hey angryrancor - I'm the creator of Neon, thanks! This is a brand new project I created very recently, let me know if you have any feedback!</comment></comment>


Interview with Brad Feld on Maker Mode and Living Well - <AUTHOR> http://youtu.be/yz8f7b7amd4

<comment><USER2> Pretty killer interview. Love Jonathan Fields' interview style. He really has a nice ability to get people talking.</comment>


Ask HN: Why aren't live programming environments more popular? - <AUTHOR> I have recently started using Observable notebooks for prototyping JavaScript code. The development experience is amazing - it's like a REPL on steroids. I can even write unit tests that are updated live. Now I write whatever I can inside Observable and then copy the code and test cases to the project I'm working on. (You can see an example of such a notebook here: [1])<p>I'm certainly not the first person to discover how productive a live environment like this can be. Yet I can't think of any other implementation of this idea except maybe live evaluation when editing Clojure. Why isn't this more widespread? Why aren't we all writing our code like this? Are there any other tools like Observable but less focused on presentation and more on development?<p>[1]: https://observablehq.com/@balazsbotond/js-url-library-draft <comment><USER2> > Why aren't

Because lisp and smalltalk lost the language wars. Interaction with dead text files won. No one misses what they never experienced.

</comment><comment><USER3> My initial thoughts

1\. You can setup similar experiences in a pure terminal mode

2\. Am I shipping private code to yet another 3rd party server?

3\. Having to copy/paste seems annoying, would want it on top of my VCS code directly

<comment><AUTHOR> (3) is only because Observable isn't a tool designed for this workflow. I can imagine something that works on regular text files locally on your machine. This would also solve (2).

As for (1) - this sounds great! Can you tell me how?

<comment><USER4> I create makeshift live code editing experiences primarily with scripts and fswatch. Fswatch will trigger on changes to files you've told it to monitor and execute some command (I usually have it run the compiler/test runner for this setup). It's become my go to way of writing C and C++ code since I'm not a fan of most IDEs and would rather stay in emacs.

</comment></comment></comment><comment><USER5> Scala Metals has this feature, it's very cool.</comment>


CindyJS: A framework for interactive mathematical content on the web - <AUTHOR> https://cindyjs.org/ <comment><USER2> Thank you for sharing this, I am generally interested in any tool that makes the creation of explorable explanations easier.

However, while I am passably competent as an educator/physicist/js dev, I have a hard time understanding what the use case for this library is. Is it a plotting library mainly? A plotting library with latex built in? An ODE solver? An UI-building toolkit? The showcase gallery does not make that clear and it is pretty difficult to find example snippets that go to the core of the library and how its creator imagines it being used. Could you elaborate on why I should use this instead of vanilla javascript + my favorite UI library + my favorite canvas library?

Edit: these slides seem to cover some of my questions.

<comment><USER3> I write tutorials - they're mainly CG related but they get a bit mathsy at times. I'd love to use this library to create interactive figures. It would be overkill for my use case, but if my writing was just a little bit more math focused I'd be all over this.

</comment></comment><comment><USER4> For those trying to contextualize this, CindyJS is based on Cinderella, a geometry framework developed by Jürgen Richter-Gebert. He also wrote a book called "Perspectives on Projective Geometry" where he goes into full detail about the mathematics behind this framework.

I had previously created a hackernews thread about this (amazing) book, to see if anyone wanted to do a reading group with me on it, but didn't get many takers: [https://news.ycombinator.com/item?id=23371641](https://news.ycombinator.com/item?id=23371641)

<comment><USER5> Thanks for this link. I wasn't aware of the book, but this "theoretical background" page on the Cinderella website made a big impression on me years ago. Maybe it would work as a taster for your proposed group. [https://doc.cinderella.de/tiki- index.php?page=Theoretical+Ba...](https://doc.cinderella.de/tiki- index.php?page=Theoretical+Background)

</comment></comment><comment><USER6> This is so good, the Escher & Droste effect sample is one of my favorite : [https://cindyjs.org/gallery/main/Droste/](https://cindyjs.org/gallery/main/Droste/)

</comment><comment><USER7> Kleinian fractals is super fun to play with:

[https://cindyjs.org/gallery/main/Kleinian/](https://cindyjs.org/gallery/main/Kleinian/)

<comment><USER8> It is! I'm having a blast with the optics simulation:

[https://cindyjs.org/gallery/main/Optics/](https://cindyjs.org/gallery/main/Optics/)

<comment><USER9> You should try Algodoo with the lasers and optics. It's free now. It is a 2d physics sandbox with a great GUI.

<comment><USER8> Excited to try it! Thanks!

</comment></comment></comment></comment><comment><USER10> This looks very cool. I'm gonna be using this soon!

I am curious why you'd create a new scripting language for this, how is JS limiting for building these visualizations?

<comment><USER9> It grew out of Cinderella, which released its first commercial version in 1998, so JavaScript was only around a few years, and did not have the potential it does today. I found Cinderella about 5 years ago, and I like the way CindyJS has evolved for geometry and math needs.

</comment></comment><comment><USER11> Beautiful</comment>


How Google Uses Linux[2009] - <AUTHOR> https://lwn.net/Articles/357658/

<comment><USER2> Semi-related: a video of Linus giving a talk on Git at Google <http://www.youtube.com/watch?v=4XpnKHJAok8>

Watch for the bit where he goes:

"What are you guys using?

 _pause_

Perforce?

 _longer pause_

I'm ... sorry."

<comment><USER3> Take that with a grain of salt.

Linus is snug as a bug in a rug, having solved his own problem of dealing with e-mailed patches. This also works for many coders with similar work-flows.

But, for work-flows with binaries (documents, images, executables, etc.) Perforce looks better, if you read through the comments in the LWN piece. For instance:

 _[git, problems with binaries] this has been documented several times, but it seems to be in the category of 'interesting problem, we should do something about that someday, but not a priority' right now_

P.S. a couple of months ago, in another HN discussion, stevelosh kindly contributed a link about the bfiles extension for Mercurial: <http://mercurial.selenic.com/wiki/BfilesExtension>

<comment><USER2> The article above talks about Google's work on the Linux kernel, something that is managed competently with Git outside of the company.

Granted, Linus's comment is a sweeping statement (as most snarky comments tend to be) but in this context, Perforce seems woefully inadequate for managing Google's kernel work.

</comment></comment></comment><comment><USER4> So far Linux is still the best for server storage.</comment>


Tizen (Meego Replacement) Releases Source Code and SDK Previews - <AUTHOR> http://www.cnx-software.com/2012/01/10/tizen-releases-source-code-and-sdk-previews/

<comment><USER2> It seems a bit like WebOS structurally, doesn't it?</comment>


Minecraft Server with a Bitcoin-denominated monetary system - <AUTHOR> http://bitquest.co/ <comment><USER2> How do you handle cheating?

If you're hosting all the wallets, what's to stop you (or someone who gains control of the server) taking off with all the money?

Don't get me wrong, this is very cool and using real money might solve a whole lot of Minecraft's social/"tragedy of the commons" problems, but I'm interested what other issues it brings up.

<comment><USER3> This concept should be considered experimental (and we should emphasize more this) ànd you're right, there's nothing stopping me to take off with all the money.

Or a hacker.

We suggest to players to keep the minimum stored in their game wallets and cash out frequently as a precaution.

We are experimenting with Wallets that need to be signed by both the Client and the Server to make operations and when the time comes I'll be happy to share my findings.

<comment><USER4> The only way to make it secure is for users to bring their own wallet. On first connection they would input their wallet ID so monster look can be paid out.

When a user wants to buy something he needs to make it outside of minecraft, or use a custom minecraft extension that handles the wallet client-side.

</comment></comment></comment><comment><USER5> This is really cool. Sounds like you can earn bitcoin just by playing, without an initial investment? How are these monster drops funded?

I'm also curious to see if the latency of the blockchain has any affect on gameplay.

<comment><USER3> Hi, BitQuest developer here.

In a nutshell, every item bought from villagers goes to a "loot" wallet where sort of randomly faucets out back to players who kill monsters.

This post explains it a little bit more:

[http://bitquest.co/2016/05/19/bitquest-2.html](http://bitquest.co/2016/05/19/bitquest-2.html)

<comment><USER5> Nice! How do you feel about gambling? Plans to do anything similar to BitVegas[1]?

[1] [https://en.bitcoin.it/wiki/BitVegas](https://en.bitcoin.it/wiki/BitVegas)

<comment><USER3> I've never gambled IRL or online and I won't feel comfortable to write gambling code as opposed to skill based games, which is what i've been playing my whole life.

I'll be happy to help, by making the bitquest repository easy to understand so people who want to make it can use our code.

</comment></comment></comment></comment><comment><USER6> Isn't this against the EULA for Minecraft? I thought selling in-game items for real world money was prohibited.

<comment><USER3> I can't answer your question but i want to clarify that All Bitcoin spent in items go back to the players in form of 'loot money' and not used for monetisation. I hope that makes the difference,

I will try to get legal help for intepreting the EULA and hopefully if we break it we can modify the server so it meets requirements. (Charging for access? Sell only cosmetic items?)

<comment><USER7> As I recall Notch specifically used the word "monetization" in his announcement blog post. This is the intent of the EULA, so if there's a problem I assume it would be adjusted.

<comment><USER8> Cosmetics are allowed, as well as charging for overall access to the server. But "secondary currencies" or buying in-game advantages for real money are disallowed.

You may be thinking about the original terms for mods, which was a more general "don't monetize it".

<comment><USER7> > mods, which was a more general "don't monetize it".

You're right, I was mistaken.

</comment></comment></comment></comment></comment><comment><USER9> Ethereum could work even better for this. You can implement some of the logic in smart contracts, store arbitrary data on the blockchain, and the block time is 15 seconds. It's also easy to use multisig schemes to keep the money more secure.

<comment><USER10> I concur.

This is fantastic use case for a smart contract.

</comment></comment><comment><USER11> A while back I launched Bitcoin Armory for the first time only to discover it had to download the entire blockchain(!) before it could seemingly do anything. Does a game like this bloat the blockchain, and if it does, do people care?

<comment><USER3> I am very looking forward to SegWit and the Lightning Network and if it makes sense (probably will) to make a sidechain for BitQuest servers we'll try to implement that. In the meantime, we only process a limited amount of transactions per user per second so we don't spam the Blockchain

<comment><AUTHOR> Eric Martindale here with Blockstream! Let us know if you need any help setting up a sidechain for this. It makes a lot of sense for your use-case.

<comment><USER12> Minecraft's database, and the elements worth value inside of it, are not based on a blockchain. This makes the entire server's economy as secure as the underlying code around exchanging items of value, mob kills, etc. Proposing they use a sidechain solves no problems for their use-case, as far as I can tell.

Given sidechains are already fairly complicated to understand[1], I'm not sure I get why suggesting their use without showing the use-case here makes a lot of sense for building Blockstream's business model. I guess that's the difference between promoting a company and contributing in a conversation.

[1] [https://blockstream.com/sidechains.pdf](https://blockstream.com/sidechains.pdf)

<comment><AUTHOR> Take, for example, the Asset Issuance Element [1]. Not only could the currency become a tradable asset, but individual items and mobs in shops could be tracked as digital assets as well. There is much opportunity for expansion with a sidechain implementation here.

[1]: [https://www.elementsproject.org/elements/asset- issuance/](https://www.elementsproject.org/elements/asset-issuance/)

<comment><USER12> Well, I'm intrigued. Thanks for the information.

</comment></comment></comment></comment></comment></comment><comment><USER13> I call my server currency "Gil" and "Gilcoin" would have been the crypto currency. Server is named Gilcraft, and it uses iConomy for its economy plugin. I had the idea at least a year ago, but never got around to implementing the crypto part.

<comment><USER14> I was thinking about this recently: it'd be really cool to play even a text- based game that had crypto-currency backed econ.

<comment><USER15> Why?

I mean it seems like everyone just wants to slap 'crypto currencies' and 'blockchains' onto everything nowadays.

<comment><USER16> Maybe it encourages immersion if there's real, or at least pseudo real money involved

<comment><USER17> There are other ways. I'm a big fan of Eve Online's PLEX system. PLEX is an in-game item purchasable with real money which can be cashed in for one month of play time. It does a great job of linking the in-game economy with real money.

Basically, PLEX is Eve Online's equivalent of a gold-backed currency. There's something _real_ behind the play money, even if it cannot be extracted once committed.

</comment></comment></comment></comment></comment><comment><USER18> Congrats guys! Stoked to see BitQuest evolving.

</comment><comment><USER19> As a game player and hobbyist game designer: please don't do this. It's pretty much guaranteed to become exploitive by design.</comment>


Opera browser built-in ad blocking, now in beta - <AUTHOR> http://www.opera.com/blogs/desktop/2016/03/opera-built-ad-blocking-now-beta/ <comment><USER2> I'm really beginning to wonder where the ad-blocking wars are going to leave us.

If I ran some kind of online content, and it was clear the majority of my money was made in advertising, and that the majority of my money was being eroded by ad blockers, I feel like the natural next step is to fill your content with ads that are simply not blockable.

I've started seeing this with YouTube videos, where people quickly (or not so quickly) plug audible at the start of their videos. I have no doubt that "native" advertising is becoming both more frequent and more insidious (because obvious native advertising doesn't work as well as non-obvious).

I have to be honest: I'm not really a fan of this future. I think the right future is either a) paid content (which very few people will go for) or b) ad- supported content, but those ads aren't evil animated audible malware vector infected boxes of non-relevance. This leaves a chance that the content will actually _be_ content, and not some headphone review that you're entirely unsure who has paid for the existence of.

Perhaps instead of having massive blocklists with the occasional white-listed website, there should be some kind of automated sin-binning, where websites (and ad agencies) that have proven to behave themselves (non-animated, relevant, safe advertisements) are allowed through while dodgy scum gets blocked for N months or until they have a proven amount of time where they have shown themselves to be safe.

This doesn't solve the whole "I don't want people tracking me" thing. I'm not really sure how to solve that. I don't see how you can. I see the future for that being more and more walled gardens so you can be tracked server side, which is also entirely undesirable.

<comment><USER3> Honestly, I'm a bigger fan of plugging Audible in a youtube video than the current advertising situation. It's a lot more like newspaper or TV advertising, in that the person making the video has set a price for it, vetted/approved each ad, and made sure it's targeted at their general audience.

It doesn't let 3rd parties serve me arbitrary javascript for tracking, it doesn't give me drive-by malware, and it generally isn't selling me penis enlargement or _one weird trick_ to lose weight.

<comment><USER4> Except that after the 2nd podcast you ever listen to you're either already a customer or you hate the ads for repeating.

Still waiting for good, useful ads, that are code-free. But if your product was the best it would be reviewed as such anyway, so ads are pointless.

<comment><USER3> I still don't have an email newsletter, but I don't hate MailChimp's ads. And if somebody came to me and said "Hey, you know about computers, how do I set up an email newsletter?" I'd probably point them to MailChimp (it's the only service I know by name). They're getting plenty of brand recognition even if I don't use it myself.

I'd even say I miss the Tiny Letter ads in 99% invisible.

</comment></comment></comment></comment><comment><USER5> _The exception list now contains only four websites that offer a very good experience to their users with ads on._

They say that now, but what about a year from now? Look at the scandal around the original Adblock extension. Everyone wants to maintain their own whitelist. I suppose this is the new monetization strategy? Pay us to whitelist you?

<comment><USER6> I remember when they wrote a great URL blocker which was blazingly fast and very easy for the user to edit and came with zero opinions.

It was built in the browser's engine core, had some UI elements to help add or remove things quickly, but at the end of the day was just a text file in your profile.

I remember it because it's what Opera 12 has, which is still my main browser to this day.

Edit:

!!!

As [https://news.ycombinator.com/item?id=11397230](https://news.ycombinator.com/item?id=11397230) points out, this new ad blocker is even worse than anyone could think: It has literally no user interaction, except from adding websites to a whitelist. Other than the whitelist it has exactly two settings: On / Off

If it's blocking something on a website where you don't want it to block, but also want to block ads? Tough luck. If you're on a website where it's failing to block something you want blocked? Tough luck. If you want to block something that's not an ad? Tough luck.

It's depressing how far Opera ASA has fallen.

<comment><USER7> What about security? Checking Wikipedia says there's only been two updates since 2013.

<comment><USER6> CVE has no known issues for Opera 12.18 and they recently upgraded the SSL ciphers to conform to modern standards.

</comment></comment></comment></comment><comment><USER8> Microsoft is also adding adblocking to Edge, which makes you wonder if the sites that rely on ads for finance their operation is designing a "Plan B". Granted it's not the two biggest browsers, and Google isn't likely to add ad blocking to Chrome, but still the it must make some sites rethink their business plan.

<comment><USER9> Actually, I read Google won't be too late to the party adding ad blocking to Chrome. Of course, with their ad networks whitelisted by default. To be honest, I think if they haven't done this already is because it would be such a monopolistic move. Most AdBlockers come with Google adsense whitelisted, but imagine if Google did that themselves. But considering not only how widespread the use of ad blockers is, but also how other browsers are soon going to ship with an ad blocker built in, now they'll be able to do it without anyone complaining about it.

<comment><USER10> What Google would have to do is participate in some sort of standards body for ads, like the IAB except with the sole purpose of determining "compliant" ad companies vs ad companies who will be blocked by default.

If they can get enough buy in, then they'll implement adblocking in Chrome while saying "we're not using monopoly power, we are simply implementing the standard X that Internet Explorer, Safari, Opera and Firefox have all implemented before us".

</comment></comment></comment><comment><USER11> They need to clean up their menu a little. Why is there the News, History and Speed Dial option in there if I already have them on each new tab?

Otherwise I love this new feature and that they adopted CT, but I think I speak for many people when I say that I'm a little worried about the trustworthiness of their new Chinese owners.

A quick Google search about them doesn't inspire confidence:

[http://www.pcworld.com/article/2919554/tencent-qihoo- antimal...](http://www.pcworld.com/article/2919554/tencent-qihoo-antimalware- firms-are-accused-of-cheating-stripped-of-rankings-in-antivirus-tests.html)

EDIT: Did a few tests on several websites. It seems for those that those that are lighter on ads like WashingtonPost, it can make the loading time 15-30% faster, while for the heavier ones like iMore, TheVerge, BusinessInsider, it's 50-75% (depending on the ads they show at the time, I assume). The heavier ones would even take over 30 seconds to load without ad-blocking. I'd say for most sites you should see a ~50% faster loading with this enabled.

I hope they include tracking-protection option as well in the future, as Firefox did. Then those features need to come to mobile, too. I don't think Firefox has implemented TP on mobile either yet.

</comment><comment><USER12> As a former long time Opera user, I'm a little sad to say I don't trust Opera to block ads for me. uBlock Origin does the job just fine, and my gut feeling is Opera will have a whitelist or not block everything. Ever since they switched to being a Chromium skin, I just don't trust them.

I'm also curious how this compares against uBlock Origin. I know uBlock uses a lot less memory and seems a lot faster than ABP for me, and it's curiously missing from their comparison.

</comment><comment><USER13> Wonderful!

Is it possible, like ubo, to block specific elements on the page that are not considered 'ads' by default? (like those annoying modals asking you to subscribe)

<comment><USER14> In the Opera blog, some dev said that it's coming in a couple of weeks

</comment></comment><comment><USER15> One thing I do when I benchmark is to provide all details so that other people can try to reproduce -- anybody can investigate the figures I report.

There is not enough details for me to reproduce here: no sample of which web pages were used in the benchmark, no work on settings used on various blockers. Why is it so difficult to obtain such key information?

I really doubt uBlock Origin's ("uBO") default settings were used given the reported timings (because 6s to load a web page).

Also that uBO is reportedly only 0.2 sec faster than ABP hardly make sense to me, _especially_ on any Chromium-based browsers.

In any case, for those who want to make comparisons for themselves between blockers, here are online tools:

To measure average page load speed: [http://www.raymondhill.net/ublock/pageloadspeed.html](http://www.raymondhill.net/ublock/pageloadspeed.html)

For examples, the page-load-speed tool reports ("Average (valid)" values):

[http://www.rollingstone.com/](http://www.rollingstone.com/):

\- Opera 37 + native blocker enabled: 1482.75 ms

\- Chrome 51 + uBlock Origin + default settings: 1729.20 ms

\- Chrome 51 + ABP + EasyList/EasyPrivacy minus "acceptable ads": 2467.17 ms

[http://techcrunch.com/](http://techcrunch.com/):

\- Opera 37 + native blocker enabled: 1959.10 ms (noticed ad placeholder left behind)

\- Chrome 51 + uBlock Origin + default settings: 1316.90 ms

\- Chrome 51 + ABP + EasyList/EasyPrivacy minus "acceptable ads": 2063.76 ms

And another tool, to find out what is _not_ blocked (also a rather important aspect of any blocker): [http://raymondhill.net/httpsb/har- parser.html](http://raymondhill.net/httpsb/har-parser.html)

For example, comparing what was not blocked on TechCrunch with Opera 37 native blocker and uBO + default settings:

[https://cloud.githubusercontent.com/assets/585534/14185866/b...](https://cloud.githubusercontent.com/assets/585534/14185866/b2309870-f749-11e5-8c37-2008e3f2ec10.png)

</comment><comment><USER16> A good ad-blocker should imho always keep a "shadow" DOM, so that

1\. the ad-blocker does not interfere with the normal operation of the website (or webapp), and

2\. the website can never detect that an ad-blocker is running.

I'm not sure whether Opera does this.

<comment> angry-hacker The website can always detect an adblock.

Just set a variable inside the ads.js and if it's not present, the ads are blocked. (or the file didn't load).

<comment><USER16> No, the idea is that the ads.js runs on the real DOM. The shadow DOM is a copy of that DOM minus the ads. This is the DOM shown to the user.

<comment><USER17> Then you would still get tracked. Half the point of adblockers is prevent the ad networks from tracking you.

<comment><USER16> To prevent this, the browser could use a fresh cookie every time you visit the site, except for sites you whitelist.

</comment></comment></comment></comment></comment><comment><USER18> Hmm, I haven't used Opera since about 2004. How is it on Linux platforms? I am getting tired of Firefox eating all my ram, and I've never been crazy about Chrome.

Edit: Seems like it is just a different wrapper around the Chrome internals: [https://en.wikipedia.org/wiki/Blink_%28web_engine%29](https://en.wikipedia.org/wiki/Blink_%28web_engine%29) Does it do anything differently (or better) than Chrome or FF?

<comment><USER19> Maybe take a look here [https://www.reddit.com/r/operabrowser/comments/3xb7n6/how_ex...](https://www.reddit.com/r/operabrowser/comments/3xb7n6/how_exactly_is_opera_different_from_chrome/cy4b15i)

</comment></comment><comment><USER20> What is their policy with analytics and tracking, beacons, etc? These are some of the most problematic and worrying add-ons to web pages for me, and yet very little gets talked about them. In theory, a well-designed browser (and well- written web pages) can still make all the 3rd party analytics requests without slowing down web site load time (e.g. they can be deferred until the page is loaded), and yet they are the things that I want to block most of all.

</comment><comment><USER21> Frankly the advertisers, and the sites that depends on them, lost the day they started doing anything but static images and text.

And after a few hot clickfraud cases, we have massive scripts being downloaded for each ad to track validity of "impressions".

</comment><comment><USER22> Too bad they didn't do this years ago and adopt the Adblock plus revenue model. They might still be a standalone company.

<comment><USER23> You think many publishers would have paid to be whitelisted in Opera even at the height of its popularity? Not so sure about that. I think it's kind of a sleazy business model anyway.

</comment></comment><comment><USER24> [https://code.google.com/archive/p/qtweb/](https://code.google.com/archive/p/qtweb/) has built in [http://qtweb.net/pages/ibr9700.html](http://qtweb.net/pages/ibr9700.html)

</comment><comment><USER25> How stable is Opera nowadays? I'm lazily searching for a replacement for Firefox, which even fully updated, keeps crashing on all my platforms (Android, Linux, Windows) at annoying rates.

<comment> angry-hacker I'm using now Vivaldi, but I think it's safe to say the current Opera is the most stable Chromium fork out there.

</comment></comment><comment><USER26> Looks like a good feature. Anyone here using Opera regularly? How is it on OS X? I use Chrome mainly, but I'm currently in the process of moving to Safari on El Capitan.

<comment><USER27> I switched from Firefox to Opera on Linux. Opera is faster (especially cold start), has great support for high resolution screens, support for touch input, access to Chrome extensions and built in flash. The best browser for Linux IMHO.

<comment><USER6> You can get all of that as well by just using Chrome. Opera 15+ is just a fork with a bunch of custom changes.

<comment><USER27> I know. I just don't like Chrome's UI and it's heavy integration with Google. I am trying to rely less on Google. I have switched to a different email provider, DDG is my default search engine and I use Owncloud for contacts, calendar and files.

<comment><USER6> Good reasons. Just be sure to keep an eye on things due to the upcoming purchase by Qihoo.

</comment></comment></comment></comment></comment><comment><USER28> Have all major trackers enabled on "start-page" per default, talks about ad- blocking with a mouse click - facepalm</comment>


Beijing Uses Face-Detecting Smart Looks To Curb Public Housing Abuses - <AUTHOR> https://www.engadget.com/2018/12/31/beijing-facial-recognition-public-housing/ <comment><USER2> Minor typo -- smart "locks", not "looks".</comment>


First Impressions of Microsoft's New Edge Browser - <AUTHOR> https://www.exaronews.com/first-impressions-of-microsofts-new-edge-browser <comment><AUTHOR> Has anyone discovered any issues with it yet?

<comment><AUTHOR> Found one, there's no dark mode in dev or canary.</comment></comment>