As a system programming language, C still deserves learning today - <AUTHOR> https://nanxiao.me/en/as-a-system-programming-language-c-still-deserves-learning-today/ <comment><USER2> My view strongly aligns with John Regehr's [1] (emphases original):

> My main idea is that we need to teach C in a way that helps students > understand why a very large fraction of critical software infrastructure, > including almost all operating systems and embedded systems, is written in > C, while also acknowledging the disastrously central role that it has played > in our ongoing computer security nightmare. [...]

> We'd like students to be able to answer the question: _Is C an appropriate > choice for solving this problem?_ [...] The second big thing each student > should learn is: _How can I avoid being burned by C's numerous and severe > shortcomings?_

[1] [https://blog.regehr.org/archives/1393](https://blog.regehr.org/archives/1393)

<comment><USER3> "How can I avoid being burned by C's numerous and severe shortcomings?"

I think this is where we start bumping up against the limitations of the universe we live in, because the question becomes "where do we put the bugs?".

The biggest flaw with C is the array bounds checking, especially if that array is on the stack, or other bugs related to "raw" pointers:

\- We could enforce things through hardware, but then you've put the bugs in the microcode.

\- You can change your language, but then you've put the bugs in your compiler / interpreter / vm.

\- You can try and formally verify the correctness of your code, but it's less feasible for large codebases. And what if there's a bug in your proof? (proofs are programs)

I'm not suggesting people use C/C++, but I wouldn't blame C for the problem of natural numbers.

<comment><USER4> > \- You can change your language, but then you've put the bugs in your > compiler / interpreter / vm.

I'd rather put my bugs in one, more easily verifiable place. Verifying all code that's ever going to be compiled is close to impossible. Verifying the compiler / interpreter / VM is hard, but it's much easier.

At the end of the day our field is basically: "get rid of repetitive work". So arguing that it's better to have total manual control (and basically always re-implement things at the point of use) doesn't strike me as the best approach.

<comment><USER3> "I'd rather put my bugs in one, more easily verifiable place." We are in agreement, that is why I was saying people shouldn't use C unless they need it.

</comment></comment></comment></comment><comment><USER5> In my opinion, as a programmer who learned C when it was still in its infancy as a language, and who has used it in nearly every single project in 30+ years of professional development, what we need to do is not just teach the C LANGUAGE, but also the C RUNTIME, EXECUTION ENVIRONMENT, and .. most important of all .. the C COMPILER.

Each of these aspects of the "C ecosystem" needs to be well understood in order to be a productive, high-quality C developer. Its not enough to just type a bunch of stuff and then throw it at the compiler and see if it works - you have to understand what the compiler is doing with your language constructs and how this will be executed in the target execution environment.

So many times I've had to debug "professional C developers" who have no clue what the compiler is doing to their code, no idea what a TEXT SEGMENT is, absolutely zero responsibility for the HEAP, let alone runtime loading and linking. Its all just 'voodoo' behind the 'black box' of the compiler.

But even just having a basic understanding of these components can mean a huge difference in quality C code.

Another thing every C developer needs to know: how to debug code and read assembly language in the context of the operating/execution environment. You don't need to be able to WRITE assembly, but at least fire up the debugger and step through your program a few times to see how it behaves .. this can go a long way towards increasing a C developers understanding for what is happening and why its important to know all the other components. Too many times I've solved a major, delaying bug in a project by just re-ordering the linker commands or, even worse, cleaning up the linker commands to remove stuff that was glibly thrown at the wall by some other dev.

Also - all warnings are errors: no exceptions.

<comment><USER6> Any reading recommendations on how libc, libstdc++ and the compiler all interact, and how to manage that when the target OS is older than the toolchain?

<comment><USER5> The source. Yes, really.

<comment><USER6> Yeah, I know. Still worth asking though.

Part of me misses working on easily googleable things.

</comment></comment></comment></comment><comment><USER7> > There are many ways of writing wrong C code, but you only need to make sure > what you write is correct and in defined behavior, that's all about C > programming.

But this is a something that even experts fail to do.

<comment><USER8> Is undefined behavior really that bad when it's not causing problems?

<comment><USER9> "Undefined behavior" is a broad area which covers everything from defects in a program that make it crash, to _documented_ language and library extensions (which real-world programs can hardly avoid using).

</comment></comment></comment><comment><USER10> If a programmer can't at least read (normal) C, I'd doubt they're a fully qualified programmer. (Just my way of viewing things, I might be wrong. My reasoning is that if you don't know C and pointers, you probably don't know what a simple line like 'foo = bar + "abc"' even entails.)

It's a tiny language, has easy syntax, and "undefined" behavior (which you don't normally run into) exists for a reason -- e.g. to avoid having to check for unlikely cases every time a heavily used function (e.g. memcpy) is called.

<comment><USER11> If a programmer can't at least read (normal) assembler code, I'd doubt they're a fully qualified programmer. (Just my way of viewing things, I might be wrong. My reasoning is that if you don't know assembler code, you probably don't know what a simple line like 'foo = bar + "abc"' even entails.)

My point being, that it is a bit arrogant claiming that somebody isn't a fully qualified programmer unless they understand X technology. In my book you can be a fully qualified programmer (what ever that entails) if the only programming you have ever done is in Excel.

<comment><USER12> Comparing C to python, the lack of explicit memory management and pointers in python make it hard to understand what the machine is actually doing compared to writing in C.

Are there equivalent examples between C and assembler? What sort of conceptual stuff is C missing that assembler clarifies?

<comment><USER13> You could argue it's not conceptual, but you don't have to deal with registers in C. Also system calls. C handles dynamic library loading, I think. Not too familiar with how that works in assembly.

<comment><USER9> You have to deal with those register when debugging C, at least from time to time. C debuggers show you the registers; e.g. "info reg" in the GNU debugger. Linux kernel debugging often means working from a dump of the CPU registers, raw memory around the stack pointer, and surrounding the instruction pointer. From that you figure out what bad thing the C code did.

</comment></comment></comment></comment></comment><comment><USER14> Hmm, I'm very skeptical of this premise. Basically every halfway decent CS program has a systems level class in C. While bootcamps usually don't teach C, they're not necessarily dismissing C as much as ignoring the entirety of systems programming.

I don't want to be overly harsh on the writing, as English does not appear to be the author's first language (you should see my Chinese). However, here's some pointers (heh)

Especially with Go and Rust go viral right now => Especially with Go and Rust having gone viral

No matter you never touched C or you are a veteran => Whether you are a C novice or a C veteran ^[1]

and not as primitive => and is not as primitive

Regardless of you a system language programmer => Regardless if you are a systems language programmer

In general, I'd recommend using "you" a little less frequently and working in more. I.e. "I highly recommend you read Modern C if you haven't read it before" could become "I'd highly recommend Modern C to those who have not read it already".

But again, wonderful job all things considered. Please continue to write blog posts.

[1] I tried to rewrite this in the spirit of the original, but the double negative of "No matter...never" was too awkward to keep. Also feel free to remove the C's

<comment><USER15> > However, here's some pointers (heh)

However here are some pointers (heh) :D

[https://en.wikipedia.org/wiki/Muphry%27s_law](https://en.wikipedia.org/wiki/Muphry%27s_law)

</comment></comment><comment><USER16> I think if you are interested in systems or embedded programming C is definitely a good language to learn still. I programmed in C ( and C++ ) most of the 90s, focused on C++ and other languages for the 00s, then came back to it 2010ish, and I found it refreshing using modern techniques in C. However, I'd still say avoid it if you don't have to use it. But the key here is knowing exactly what you are trading off before choosing to avoid it. In most cases C++ is a viable alternative ( not always ). Rust is starting to look good in the embedded world, but I'd like to see more vendor support for it, and very few professional Rust devs in the embedded space. C is still often the better tradeoff. Also Electronics Engineers often only know C which lets them debug and diagnose hardware. So in the embedded world, you should know C, in the systems world, its a good idea, it will let you read a large majority of all open source system level software

</comment><comment><USER17> I would rather resist the temptation if I can avoid it. I'm so frustrated with what we've come to tolerate with software.

Ada/SPARK seems to be trying to make a comeback, something I welcome. They are interacting with the 'maker community' [1] and the online learning resources have improved a ton.[2] SPARK is even taking some inspiration from Rust. [3]

[1] [https://www.makewithada.org/](https://www.makewithada.org/) [2] [https://learn.adacore.com/](https://learn.adacore.com/) [3] [https://blog.adacore.com/using-pointers-in- spark](https://blog.adacore.com/using-pointers-in-spark)

</comment><comment><USER18> What I find fascinating about C is how mature codebases develop their own meta language with copious macros. These in turn inspired future languages and their built-in capabilities.

<comment><USER5> My current preferred language/runtime/execution environment is: just enough C to support the Lua VM.

Write low-level stuff in C as necessary, expose it as an abstraction to the Lua VM, write all app logic in Lua.

This really represents a great bridge between two worlds and I've just found it so incredibly productive.

Disclaimer: grey-beard C dev who doesn't need to learn your new-fangled language that 'fixes' everything (npm, lol) because I already did it decades ago with Lua ..

;)

<comment><USER19> What's your impression of Lua-Terra? ([http://terralang.org](http://terralang.org))

<comment><USER5> Lua-Terra is badass. :)

</comment></comment></comment></comment><comment><USER20> One thing the internet as still not learned is how not to needlessly flame. A lot of the comments here are dissing the problems of C (fine) but are completely missing the author's main point. For heaven's sake, it's even a lower bar this time, the title says it all and people are cursing about C. Their main point is simply:

>Especially with Go and Rust go viral right now, C seems already forgotten by people. Nevertheless, IMHO, C is still a thing which is worth for you spending some time on it.

I happen to agree, especially if you have time to learn Go or Rust but don't use it for anything[0], you have time to learn modern C. They didn't make this point (they seem more on the side of you should in general) but if you don't have the time, I'd think anyone could make a decision of what's worth their time or not.

As an aside, this bit is partly true but partly isn't:

>Last but not least, because C is so "low-level", you can leverage it to write highly performant code to squeeze out CPU when performance is critical in some scenarios.

The reality is C has been around a long time and compilers are written to make fast code from C programs. See this, "C Is Not a Low-level Language; Your computer is not a fast PDP-11."[1]

[0] Point about Go or Rust is if you do intend to use it for something, then that isn't learning for edifications' sake. Ditto C. If you refuse to learn C but it's relevant to your job/work then that's simply neglect of your duties.

[1] [https://queue.acm.org/detail.cfm?id=3212479](https://queue.acm.org/detail.cfm?id=3212479)

</comment><comment><USER21> I've programmed for many years and taught programming; my trajectory through the various programming languages and paradigms seems to have worked for me. But things have changed in big ways since I learned to program.

My first job after grad school was as an assembly language programmer. It's humbling and teaches some good programming practices (like "take a small bite and then run tests"). Today, assembly language programming is not appropriate for most applications. Processors are very fast, memories are very large, and instruction sets include numerous complex features that optimizing compilers handle very well. Meanwhile there has been one new programming language after another gradually improving the high level programming tools available.

If I was designing a university curriculum for CS, I would introduce languages in this order:

First Python, its basics are easy to learn and it allows new programmers to actually tackle interesting assignments. Those that don't go on in CS will have still acquired familiarity with a useful language for writing simple programs. It's a good language to use as a lingua franca in subsequent courses.

Second simple Java and OO design, there are just so many jobs using this language.

Third C, introduced along with a study of data structures. Learning data structures as an undergraduate is mostly learning linked structures of one kind or another and C is the best language for this. C is close to what's happening at the machine level whereas Python and Java have garbage collection and language features that already include lists, maps, etc. Studying data structures in C lets students see how these higher level abstractions are implemented and prepares them for seeing kernel code.

After this there are still some big important languages left out. Lisp/Scheme can be introduced in an AI class. Javascript can be introduced in a web programming class. Assembly language can be introduced in a hardware class.

The go language would work well for an algorithms class and "modern" Java with collections, streams, modules, etc. for an undergrad compiler class or software engineering class.

Naturally SQL should be used in a database class. Git could be introduced after the first year and used for all assignments. LaTeX could be required for all writing assignments.

The important language left out here is C++. It's just seems so difficult to learn that I don't know when or whether it should be taught. C++'s new features are big improvements, but the historical baggage is a lot to take on as a new programmer. When should C++ (or Rust, or Haskell for that matter) be learned?

<comment><USER22> C++ lends itself well to large-scale, performance-intensive, cross-platform software. Rust could in theory be used for similar projects.

Using C to learn pointers & data structures gives students just enough rope to hang themselves later if they want to use C in a real project. I'd go for an STL-heavy C++ and dig into the memory handling and pitfalls.

Students need to understand how to _solve_ resource management issues in low- level programming. Since they're essentially unsolvable in C (be careful, try harder, use valgrind & pray), it doesn't seem like a good teaching language.

</comment></comment><comment><USER23> In software development (web/mobile) for about 10 years, I finally picked up learning C. 4 weeks in, I finished writing my first Gameboy (Color) game and started work on my first Neo Geo game with awesome progress already. Will share more soon, but the gist is that you can't do this in JavaScript, Go or Rust. And don't say GBStudio now :)

</comment><comment><USER24> There are two main reasons to learn C:

1 - Because C and UNIX were built for each other and we have plenty of UNIX clones around

2 - To avoid making the same mistakes regarding lack of safety in system languages.

</comment><comment><USER25> > I highly recommend you read Modern C if you haven't read it before.

I feel like I was pretty disappointed with Modern C, contrasted with Deep C Secrets which taught me a ton. Maybe I should write a book about all of the GNU C extensions and the situations in which they are useful (or the only possible solutions).

<comment><USER26> Honestly, working with gcc is the closest thing I've found to vinge's programmer archaeology. There's a lot of useful stuff in there, named / hidden behind the ugliest incantations imaginable in C and often platform specific or otherwise buggy.

</comment></comment><comment><USER27> I wasn't very interested in systems level stuff until the last few years with this new wave of systems languages. I'm itching to learn Zig whenever I get some free time!

I know most people will say Go isn't a systems language but it certainly taught me to think differently than when I use C# or Python.

<comment><USER28> Yep. With all of the PL research that has gone into Zig, Nim, Rust, and others, one would really hope that greenfield projects would be written in not-C. Of course, when does anyone really get the luxury of writing something completely from scratch--especially with low-level systems? Maybe someday!

<comment><USER29> Low level system development is very common in the embedded systems domain! There's always been a large corpus of development done on embedded systems in Ada, and there's quite a bit of interest lately in low-level development in Rust for microcontrollers. As well as interest in using Rust/Ada for operating system development.

<comment><USER24> Including Basic, Pascal and Oberon as well.

</comment></comment></comment></comment><comment><USER30> It is worth learning C because there is a lot of code written in C.

<comment><USER31> You can learn enough C to leverage existing code, and then use the FFI facilities that many languages provide to interface with it. That way you don't have to engineer your entire application with C. I think this is pretty common practice, but maybe some people don't realize how common it is that their, e.g. Python, libraries are leveraging C code.

<comment><USER32> Somebody has to learn enough C to find a fix security issues.

</comment></comment></comment><comment><USER33> Every JavaScript/python programmer that writes horrifyingly slow string/array code that needlessly allocates should be forced to take remedial C.

</comment><comment><USER34> I disagree. The C programming language is directly responsible for countless damning flaws in modern software and can be credited for the existence of the majority of the modern computer security industry.

You can write system software in many languages, including Lisp. For a less outlandish example, Ada is specifically designed for producing reliable systems worked on by teams of people in a way that reduces errors at program run time.

I find it amusing to mention UNIX fundamentals as a reason to learn C, considering UNIX is the only reason C has persisted for so long anyway. Real operating systems focused largely on interoperation between languages, not funnelling everything through a single one; Lisp machines focused on compilation to a single language, but that language was well-designed and well-equipped, unlike C.

>Last but not least, because C is so "low-level", you can leverage it to write highly performant code to squeeze out CPU when performance is critical in some scenarios.

It's actually the opposite. The C language is too high-level to correspond to any single machine, yet too low-level for compilers to optimize for the specific machine without gargantuan mechanisms. It's easier to optimize logical count and bit manipulations in Common Lisp than in C, because Common Lisp actually provides mechanisms for these things; meanwhile, C has no equivalent to logical count and its bit shifting is a poor replacement for field manipulations. Ada permits specifying the bit structures of data types at a very high level, while continuing to use abstract parts, whereas large C projects float in a bog of text-replacement macros.

Those are my thoughts on why C isn't worth learning, although this is nothing against the author.

<comment><USER32> C might not be particularly designed for high performance computing, but there has been an absolutely enormous amount of work on compilers for C. Due to its prevalence, even CPU manufacturers take care to design their chips so that C code runs fast on them. Effectively this makes C one of the fastest languages around.

The story is similar for Javascript. The language design is fairly terrible, but thanks to millions of dollars invested into Javascript JITs, it's now one of the fastest interpreted languages.

<comment><USER24> Only to catch up with what was already happening outside Bell Labs world.

C is indeed the JavaScript of systems programming.

"Oh, it was quite a while ago. I kind of stopped when C came out. That was a big blow. We were making so much good progress on optimizations and transformations. We were getting rid of just one nice problem after another. When C came out, at one of the SIGPLAN compiler conferences, there was a debate between Steve Johnson from Bell Labs, who was supporting C, and one of our people, Bill Harrison, who was working on a project that I had at that time supporting automatic optimization...The nubbin of the debate was Steve's defense of not having to build optimizers anymore because the programmer would take care of it. That it was really a programmer's issue.... Seibel: Do you think C is a reasonable language if they had restricted its use to operating- system kernels? Allen: Oh, yeah. That would have been fine. And, in fact, you need to have something like that, something where experts can really fine-tune without big bottlenecks because those are key problems to solve. By 1960, we had a long list of amazing languages: Lisp, APL, Fortran, COBOL, Algol 60. These are higher-level than C. We have seriously regressed, since C developed. C has destroyed our ability to advance the state of the art in automatic optimization, automatic parallelization, automatic mapping of a high-level language to the machine. This is one of the reasons compilers are ... basically not taught much anymore in the colleges and universities."

\-- Fran Allen interview, Excerpted from: Peter Seibel. Coders at Work: Reflections on the Craft of Programming

</comment></comment></comment><comment><USER35> I tend to treat C like English: you don't _have_ to learn it, and you can certainly get by without it if you stay within a certain semi-isolated community where it's not really used. However, it is certainly something that's a nice thing to know, if for nothing else that a lot of _other_ people will know it too.

</comment><comment><USER36> For me, the advance in thread and memory sanitizers in XCode made it much safer to use C. Its almost fun to create memory leaks now and see the sanitizer spotting them :-)

<comment><USER37> Xcode has its own C memory sanitizers? That's very surprising to me.

<comment><USER35> They're part of the LLVM project.

<comment><USER38> Yeah, Xcode is 'just' passing -fsanitize=foo flags to Clang and putting a GUI on top of the error messages that the sanitized binaries output.

Whether you're using Xcode or not, in my experience Clang's sanitizers are enormously helpful. They're also available in GCC…

</comment></comment></comment></comment><comment><USER39> The main problem with C and C++ is the development model. There is a standard committee that meets for a couple of days three times a year. At this meeting, they discuss proposals. They have been talking about ranges since maybe around 2000 and they still aren't quite in the language. It would be impossible for me to contribute to any standard even if I wanted to.

Rust's development happens all on github. I can see all the discussions as they are happening and potentially even meaningfully contribute. Rust already has essentially all the things the C++ standard committee wants to standardize in the next couple of years and then some more.

Besides the language itself, the lack of a package manager is a huge hurdle.

Is this about knowing C or developing in C? Nothing wrong with knowing C, but developing in C is a bad idea (also immoral /s).

<comment><USER31> How exactly do you learn C if you aren't supposed to be writing software in it?

<comment><USER39> I mean write some software in it but like...don't overdo it.

</comment></comment></comment><comment><USER40> I don't have a traditional CS background and learned several high level languages (interpreted and compiled) before buying Learn C the Hard Way earlier this year. I admittedly stopped short of implementing the larger projects at the end of the book (got too frustrated with the Makefile setup constantly breaking in weird ways for bigger projects...) but I still think I got a lot of value of out implementing some basic algorithms like lists or hashmaps from scratch and having to deal with how memory is used exactly. I agree with the sentiment that C is syntactic sugar for assembly. I would never date to write anything non-trivial in C but can highly recommend anyone to at least spend a couple of months fighting with it.

</comment><comment><USER41> While C is undoubtedly necessary as a systems programming language, where it really shines is in scientific computing. All the modern scientific stacks (R, julia, numpy, torch, tensorflow, octave, ...) are based mostly on C and, to a lesser extent, on Fortran.

<comment><USER24> Actually C++.

<comment><USER41> true, a part of this is unfortunately C++

<comment><USER24> Anyone that cares about safety sees it as fortunely, actually.

</comment></comment></comment></comment><comment><USER42> I don't do any systems programming, but I think it would be valuable to learn C for educational purposes. Could I get some recommendations on books or online material that could get me started?

</comment><comment><USER43> > Especially with Go and Rust go viral right now

Is Go really a system programming language? Are there any notable examples of projects made in Go that can be considered system programming?

<comment><USER44> Author refers to system programming as a broad term. Not exclusively kernel and drivers.

For example:

> Regardless of you a system language programmer, DevOps, performance engineer > or wear other hats, the more you know about the Operating System, the more > you can do your job better. Take all prevailing Unix-like Operating Systems > as an example, from kernel to command line tools, they are almost > implemented in C.

<comment><USER43> Yes I think you are right, it's a bit of a different interpretation of the term I guess

</comment></comment></comment><comment><USER45> >>> Especially with Go and Rust go viral right now, C seems already forgotten by people.

I hope the Author realise that golang isn't a system language!

<comment><USER46> In the past, I got impression that Go is a system language because how people "bragged" about Go's performance. Then someone reminded me that Go is in the same basket with Java, not C++.</comment></comment>


As Big as Net Neutrality? FCC Votes to Kill State Imposed Internet Monopolies - <AUTHOR> http://www.fastcompany.com/3042895/as-big-as-net-neutrality-fcc-takes-aim-at-state-imposed-internet-monopolies

<comment><USER3> It's almost like the regulatory capture of the FCC has been undone. Is there even a political term for that? Regulatory release?

How did this happen? Was it just the 4 million request for comment responses? Is there something else at play?

Also the quote from the congresswoman is quite brilliant how she uses tea party rhetoric to defend laws that lock in regional broadband monopolies. Her spin is artfully magnificent. Boldly rising to the defense of crony capitalism.

I only wish everyone saw it for the utter bullshit it is.

<comment><USER4> > Also the quote from the congresswoman is quite brilliant how she uses tea > party rhetoric to defend laws that lock in regional broadband monopolies. > Her spin is artfully magnificent. Boldly rising to the defense of crony > capitalism. > I only wish everyone saw it for the utter bullshit it is.

The inability to agree with "opposing" parties on some issues while still disagreeing on other issues is a symptom of a much larger issue in American politics.

I'm confused as to how this is "BS" as that is the actually one of the main stances of the tea party. If they're inconsistent about enforcing it, then call them out when they do that (or when they're doing it solely to back huge corps) and if you don't like their focus on regulating personal behavior (which is inconsistent in their idea of limiting government involvement in personal lives), but it seems like an odd to criticize them when they do something that's actually helpful.

That is, unless someone who disagrees with you is incapable of even potentially having a useful point every now and then. If that's the case, then that speaks volumes more about you than it does them.

<comment><USER5> I don't know whether that is consistent with tea party politics, but it's still fascinating contortionism to argue for states rights in order to safeguard the use of those rights to _take away_ local governments ability to do what they want, in order to try to safeguard uncompetitive monopolies.

<comment><USER6> Not when you understand how local governments are chartered. In every state I'm familiar with, the state government grants local governments a charter to exit. Local governments are essentially organs of the state and have no sovereignty.

Illinois could end Chicago's existence if it were so inclined.

So telling a state that it can't regulate it's local government is an actual and serious violation of state's rights.

<comment><USER5> I don't doubt it can be seen a violation of state's rights. But the call for state's rights is generally to bring government closer to the people. In this case it is (attempted) used to pull government further away from the people.

</comment></comment></comment></comment></comment><comment><USER7> The article title is misleading. This measure isn't about state imposed Internet monopolies, but overturning state bans on municipal broadband. On the substance: this is an excellent decision, but needs to go further. The FCC should act to ban anti-competition municipal measures like build-out requirements.

Right now, if you're an ISP startup and you identify some neighborhoods where it would make sense to build fiber, most cities won't let you. Instead, to build anywhere, you have to build everywhere. This is a huge missed opportunity, because competition in even a limited service area could cause change in incumbent behavior if that area is full of lucrative accounts.

Google is leading the way on this as part of it's Fiber deployment, but the FCC has the opportunity to make it national.

<comment><USER8> > The FCC should act to ban anti-competition municipal measures like build-out > requirements.

I'm not sure it would be a good idea for the FCC to ban buildout requirements across the board. That seems really heavy-handed.

Buildout requirements can be bad, in that they hold back an entire region to the least common denominator, but they can also be used as a bargaining chip to force service to regions that otherwise would never receive service at all.

Remember that local politicians are much more beholden to the needs of their constituents than the FCC is[0], so if an entire neighborhood is being technologically blighted, it may make sense for the city council or town to use build-out requirements to ensure that those neighbourhoods don't get remain stuck in the 20th century.

I think it makes far more sense to let cities and states negotiate these requirements than to disallow them across the board. Over time, it'll be clear that cities that don't impose all-or-nothing build requirements get much better service in wealthier and denser neighbourhoods (like Google Fiber), and other cities will either follow suit or not.

[0] and this is a _good_ thing; they _should_ be attuned to what their constituents need

<comment><USER7> > so if an entire neighborhood is being technologically blighted, it may make > sense for the city council or town to use build-out requirements to ensure > that those neighbourhoods don't get remain stuck in the 20th century.

But that's not what happens. In all but the wealthiest cities, this just becomes a focus point for class warfare, where municipal representatives for poor neighborhoods torpedo fiber build-out across the whole city.

<comment><USER8> > where municipal representatives for poor neighborhoods torpedo fiber build- > out across the whole city.

But that's an issue for the city government to address internally, perhaps by means of negotiating a deal involving some other issue that those representatives also care about. That's how city government works.

This isn't exactly the only case in which neighbourhoods within a city or town have conflicting interests in local government[0]. I don't see yet why _this one_ in particular should be special-cased (by allowing the FCC to bypass city/town governance).

[0] Arguably, that describes _all_ of local government.

<comment><USER7> What deal could representatives make that fixes the problem? Someone has to pay to service those poor neighborhoods, and it'll be the ISP's shareholders only if they can make outrageous amounts of money on the remaining subscribers. Otherwise, the options are public money, or no fiber. Most cities are broke, so the former option is off the table, so in practice the result is no fiber for anyone.

<comment><USER9> If Internet access is an essential utility, and the city can't reach an agreement with ISPs, then the city itself should pay. This is what many cities are already doing, and the state laws prohibiting municipal networks are the issue addressed by the FCC.

<comment><USER10> How are they supposed to pay for Internet buildout when they're running 8-9 figure deficits servicing 9-10 figure debt loads, watching their municipal bonds downgraded, and scrambling to figure out how to pay down defined-benefit pension plans to firefighters, police officers, and teachers?

<comment><USER9> Not all cities are in such a position. Fixing crushing debt is not an Internet problem, it's a governance problem.

<comment><USER10> Name a major US city in a strong position to build out fiber Internet at their own expense and we can drill into the numbers.

Before I wrote, I pulled up the general fund numbers (debt load and deficit) for the 5 biggest US cities, and a couple random cities down around #15. I was going to write up a little table, but got pulled into a meeting.

This is one of those discussions where we have the benefit of actual numbers to work from. They're just a Google search away. If you're right, this should be an easy debate for you to win.

 _Slightly later_

Figuring that the top 10 cities might put your argument at a disadvantage (it's harder to run a giant city than a smaller one and obviously more expensive to roll fiber out in one), I checked the next 10 cities on the list (by population). Quick observations:

* San Jose - huge deficits, pension crisis, closing police stations.

* Austin - like all the cities in Texas they seem to be doing OK.

* Indianapolis - 8 figure deficit, funding the city from reserves.

* Jacksonville - small deficit, service and pay cuts to keep the budget balanced.

* San Francisco - mid-high 8 figure deficits.

* Columbus - hard to find figures, probably doing OK.

* Charlotte - seems to be doing OK

* Fort Worth - Texas, seem to be doing OK

* Detroit - <USER2>

* El Paso - Texas, seems to be doing OK

* Memphis - 8 figure deficit, service cuts.

<comment><USER9> It's interesting that the major cities in Texas are doing OK. Even for those that aren't doing OK, I'd propose that adding fiber rollout to the city's utility maintenance budget is the right thing to do in the absence of a better alternative.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER11> I know it's popular to suggest there are no differences between the two parties. Obviously, this is the case for some issues that many people here are passionate about (privacy, to an extent, foreign policy). However, I'll be pretty sad when there's a Republican president and a Republican FCC chair and these 3-2 votes start going the other way.

Here's one undeniable difference between the two parties.

<comment><USER4> I'm confused about "parties" here. It seems all 5 current FCC members were appointed by BO.

[http://www.fcc.gov/leadership](http://www.fcc.gov/leadership)

Am I missing something?

<comment><USER12> Max of 3 can be of the same party as the president.

<comment><USER4> Stuff like this makes me mad, because it seems to do more to reinforce the "2-party" system which automatically means that the "other" party is the "bad" party.

Not sure that not having it would be any better though.

</comment></comment></comment></comment><comment><USER13> As a resident of Chattanooga, and EPB customer, I wholeheartedly support this move. Some of the things quoted in this article from politicians and ISP spokespeople strike me as laughably outlandish distortions of reality.

I know the folks at EPB quite well, and used to work with them--first as the primary developer in town who built nearly all their online software for nearly 4 years, then as an employee running their internal development department/team. Then again as a vendor when I left the company to consult full-time. They are insanely committed internally to providing the best possible service, speed, and prices they can. They're also serious about providing excellent customer service (more on that in a moment).

Moreover, at least where EPB is concerned, the bullshit posturing of big ISPs alleging these small companies would cherry-pick bigger markets falls completely flat. Come on, now. Isn't that exactly what FiOS did when it chose years ago to stop expanding? Isn't that the primary attitude we see displayed by the big telcos? Have they connected every last mile in America yet, in 2015?

Almost as soon as they'd barely proven the concept of providing insanely fast internet to a few choice, small areas of the city, EPB embarked on blanketing their entire power service area with connectivity. IIRC, it took them a couple years to pull it off--I know roughly because I built the integrated online services customers used to find out if EPB had service at their homes yet, and it was a big deal when we finally got to rip out a bunch of code that handled when the backend services couldn't return a " _Yes! We 're in your area!_". They didn't leave out the poorer areas of the city. They didn't only put it where the highest populations are. They were installing connectivity at an incredible pace--so much so, that there was actually a bit of a local stir when some residents started raising a fuss over not asking for the connectivity and having it installed in their neighborhoods (and having the upgraded power boxes installed on their houses (at no charge) that also housed the fiber-ready connections should they decide to become a customer). There's only one place they failed to be able to offer service that, afaik, may still remain to this day--MDUs[1] that have contracts with Comcast.

\----

A brief(ish) anecdote on the dedication a small municipal company has to providing top-notch customer service:

I was sitting in a meeting one day with two of the senior VPs and one VP of engineering, who reported directly to the President. We were waiting for others to join for whatever we were actually supposed to be discussing, and the VPs were discussing a host of troubles they had when they send field techs out to customer's home for installation, upgrade, and troubleshooting jobs. At the time, whenever the techs were on location and had to have something handled by the tech ops center--this is a smart grid, so they could just flip switches and make shit happen once they knew what a problem was--they had to call into a customer service line that went to tech support to get the situation resolved. That means all the techs are calling in throughout the day just like customers would call in, so they wind up spending a lot of time on hold. They were estimating it was at least a 15-minute wait at each site. Bemoaning the lack of any easy way to fix it, and the lack of any off-the- shelf third-party software they could contract in to help solve it, they expressed feeling stuck. As a customer, I'd experienced this very problem a couple of times myself. I had a great team of devs who worked for me, and they were itching for a problem to solve. So, I spoke up. I asked if it was true that all the techs had laptops in their trucks. It was. I asked if they were all connected to the network via VPN. They were. I then gave them a quick 5-minute pitch right out of my ass, saying that my team had just completed what we were doing, and we could build and launch an app on the intranet that would allow the techs to go to their trucks, answer about 3 questions telling customer's acct, the problem, and their phone number, and submit a help request. Then we'd make that pop up in real-time on tech support's displays, and anyone in tech support could immediately call the tech back as they were flipping switches and pressing buttons to verify the problem was corrected. There were some surprised and questioning looks shot back at me across the table--I was new, they didn't know me, and they definitely didn't expect me to speak up, I think. One of them, seasoned veteran of the company's many forays into having custom software built for them, said they'd looked into some things like that before and it would take months to complete something like that. When he asked how long we'd need, I told them to give us a week. The looks turned into comical disbelief--they were new to having a dedicated internal team of developers, and my department was brand new, full of devs and a designer I'd hand-picked. There was all the usual "there's no way you can do this," and my typical over-confident assurances we could.

It took us 10 days and one meeting halfway through to get all the requirements and launch the app. By the end of the first month, our little project had taken in a bit over 2,000 real-time support tickets, and we'd cut average wait time at customer's homes from a rough estimate of 25 minutes down to an exactly timed 12 minutes from ticket open to ticket closed. The VPs called us all into a room at the end of the month. They were beaming. My team felt like badasses. They were showered with praise. The VPs said they couldn't believe it, and couldn't argue with the results. Next thing on the agenda? "We've got about 5 more departments we want to roll this out to right now and get everyone doing this stuff in real-time. We can kill all the time customers are waiting on us in so many ways with this."

\----

All that to say that a small, municipal telecom has some characteristics and features the likes of Comcast don't--a personal stake in the local community, a desire to take care of the local community because it's themselves, and a willingness to do whatever it takes to make their community better. I don't think Comcast gives two shits about any of its customer areas. EPB, on the other hand, not only provides a service at crazy speed and fair prices, but they continue to invest time, money, guidance, and other resources into all kinds of things that matter to the local community--all the gig business stuff, tech councils, etc. Their internal corporate structure tends in a number of ways toward stupid political bullshit, like any other company (it's why my whole team and I eventually stopped being employees, and went back to being vendors). But it doesn't get too much or too often in the way of everyone at the company trying to constantly find any and every feasible way to make their services better than the big ISPs, take care of their customers better because they are family and friends, and take pride in finding more ways to play a part in making Chattanooga a better place[2].

[1]: multi-dwelling units, aka apartment complexes

[2]: I'm feeling really weird about this being probably one of the few times I've ever extended such effusive praise toward CHA.

<comment><USER14> Do you have a blog about CHA?

<comment><USER15> I guess this is the modern version of "Your ideas are intriguing to me and I wish to subscribe to your newsletter". :-)

<comment><USER14> Precisely.

</comment></comment></comment></comment><comment><USER16> I'm torn. Do these state bodies (Chattanooga power utility) have a state mandated monopoly or protection? Do they use those protected profits to build a network which they then sell to consumers? I would be upset if my competitor had that advantage and I didn't (note I'm wondering not certain that that's the case here)

<comment><USER17> > Do they use those protected profits to build a network which they then sell > to consumers?

I don't understand this argument at all. Having access to capital isn't an "unfair advantage" \-- it's a hard prerequisite to building a network. Nobody can do it without that.

And sources of money are never unfair. If somebody has easier access to capital than you, that isn't an "unfair" advantage, it's a completely reasonable advantage. It isn't unreasonable for large entities to invest in things they want to just because they have more money than you.

The only way it would be unfair is if they were operating below cost in the long term, which has nothing to do with where they get the money and which they aren't doing and have no reason to do.

<comment><USER16> Hmmm. Let's say people in your state love bananas and the average price of a banana is $1 with a profit of 20 cents. And your friend who is married to the daughter of the governor suddenly has an exclusive license to sell bananas in your state. What do you think will happen to the price of bananas and subsequently what do you think happens to profits your friend starts accruing? Ok, so far so good you don't really care because you don't like bananas. You are your 10 friends sell apples and you all compete hard against each other and sell an Apple for between 95 cents and $1.05 cents. One day your friend thinks the Apple business looks interesting. He's raised the price of bananas to $1.20 and is now making 40 cents a banana. Now he starts selling Apples. At 70 cents each. 10 cents below cost. He's losing 10 cents on every apple but he doesn't care because he makes 40 cents on every banana he's selling. Naturally in 9 months you and your 10 friends are out of business. You can't sell Apples at a loss. Once you leave he raises the price of Apples to $1.10. Feel tempted to jump back in? No way, he'll just drop them to 70 cents each for a while and crush you a second time.

All of this happens because your friend has an unfair advantage in terms of his access to capital. Power utilities (and cable and internet too) are great examples of law mandated monopolies who generate protected profits. Taking that protected revenue stream to subsidize your entrance into a competitive marketplace isn't fair.

<comment><USER18> As if VZW didn't have access to cheap money. RBABs, anyone?

<comment><USER16> Yes but cheap money is very different to protected money.

</comment></comment></comment></comment></comment><comment><USER19> This may be helpful, but seems to miss the point. Municipalities are the ones who created the monopolies.

The wired networks were conceived as utilities during their initial buildout, thus the monopoly. It takes years of lobbying and dealmaking for a new ISP to enter a municipality (see Google). That's unrelated to the state, in most cases.

</comment><comment><USER20> Good. It's really bizarre that some parties are so openly opposed to it, while pretending they are pro competition. Do they not care, or they simply think that public will eat that nonsense without second thought?

<comment><USER21> I think they're pro-business. They don't like competition in the form of the government competing with business.

<comment><USER22> In the case of Chattanooga, one of the cities that petitioned for this, there was little or no business to compete with. They want to expand their network to outside the city limits, largely two areas that currently have either no broadband at all, or only have low speed broadband.

This causes problems for the people in those areas. Schools assume students have access to the Internet at home, and assign homework that requires Internet for research. Parents have to frequently drive their kids to McDonalds or church or someplace else with public Wi-Fi so the kids can do their homework.

Tennessee does allow for a municipal electric company to offer municipal broadband, which is how it works in Chattanooga, but it can only serve areas where it offers electricity service which was why they could not expand the broadband to the neighboring communities.

</comment></comment></comment><comment><USER23> this is fantastic news. the FCC is doing an amazing job right now.</comment>


Is the "hot hand" real? – Numberphile (video) - <AUTHOR> https://www.youtube.com/watch?v=bPZFQ6i759g <comment><USER2> I love thinking about hot hand. When the Miller and Sanjurjo paper was published I ate it up. Here is a link to a version of that paper [https://papers.ssrn.com/sol3/papers.cfm?abstract_id=2627354](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=2627354) which has in my opinion one of the greatest openings of any statistical paper:

"Jack takes a coin from his pocket and decides to flip it, say, one hundred times. As he is curious about what outcome typically follows a heads, whenever he flips a heads he commits to writing the outcome of the next flip on the scrap of paper next to him. Upon completing the one hundred flips, Jack of course expects the proportion of heads written on the scrap of paper to be one-half. Shockingly, Jack is wrong. For a fair coin, the expected proportion of heads is smaller than one-half."

Andrew Gelman also wrote about hot hand on this blog: [http://andrewgelman.com/2015/07/09/hey-guess-what-there- real...](http://andrewgelman.com/2015/07/09/hey-guess-what-there-really-is-a- hot-hand/)

</comment><comment><USER3> So in a related study if we take a bunch of people with low basketball skills insult some and flatter the others there should be no different in shot percentage of either group?</comment>


Small stickers on ground trick Tesla autopilot into steering into opposing lane - <AUTHOR> https://boingboing.net/2019/03/31/mote-in-cars-eye.html <comment><USER2> [https://m.xkcd.com/1958/](https://m.xkcd.com/1958/)</comment>


DuckDuckGo Architecture - 1 Million Deep Searches a Day and Growing - <AUTHOR> http://highscalability.com/blog/2013/1/28/duckduckgo-architecture-1-million-deep-searches-a-day-and-gr.html <comment><USER2> Good god, the comments in this thread really show how douchy the HN community can be.

Tons of anecdotal stories with no evidence. Obvious outsiders trying to image what it is like on the inside (all the guesses about how DDG works) and of course no facts to back anything up.

I would say this pandering and uninformed behaviour is not common on HN, but it is.

People who engage in language flame wars simply do not understand that when you become a good programmer languages do not matter only the platforms matter.

<comment><USER3> Leaving aside one trolly user, most of the conversation here is either referencing data mentioned in the article or asking questions/having discussions about semi-related points.

I'd hardly call the argument over language speed a 'flame war' by any internet standard I've ever seen.

There are probably better examples than this one to pull the 'HN commenters suck' card. The conversation here is mostly civil and trying to learn things, one troll aside.

<comment><USER4> Agree. The choice of perl actually does surprise people, genuinely. As somewhere else mentioned, even blekko uses perl. So obviously these people know what they are doing.

But that said, choosing anything interpreted does come to haunt you later on, in some way or the other.

We run Java on Jettys for most of the things for our app (traffic is around 60k/70k in a day, so much less in comparison). But even with this traffic, we need to use 2 large EC2 instances in the day time. And mysteriously the Jettys keep going out of memory every now and then.*

I am sure the same thing if done in C++ would need only 1 large EC2 instance. And it will also help the latency a bit, as a parallel gain. At present am analyzing the cost/benefit of such a move. Inputs are welcome.

* With Java its always the memory which hurts you first. Latency wise, not much of a difference, in most cases.

Edit: Down vote? Surprised. Why??

</comment></comment></comment><comment><USER5> Surprised to hear that crawling still runs out of the basement. For a general- purpose search engine, what kind of bandwidth does that require? Or is it manageable only because DDG proxies so many searches to other search engines?

Also, doesn't it seem inefficient to have crawlers here and indexes there?

<comment><USER6> I run a couple of boxes that are crawl only for Nuuton right out of my office. I do have a good internet connection. But its a good way to save on infrastructure.

<comment><USER7> I don't suppose you have a blog or something for that? My hobby/interest is search engines and I love reading about peoples experiences getting them running.

<comment><USER6> There is one but I have been too busy building it that have not posted anything yet. You can always get in touch through email. I like chatting with other hackers.

<comment><USER7> That's a pity. Just for the record for anyone looking at this space here are some links to get started,

      http://www.yioop.com/blog.php
      http://www.gigablast.com/rants.html
      http://queue.acm.org/detail.cfm?id=988407
      http://blog.procog.com/
      http://www.thebananatree.org/
      http://blog.blekko.com/

I will even suggest my own small implementation (created purely for SEO value but it does work)

      http://searchco.de/blog/view/code-for-a-search-engine-in-php-part-1/

BTW email sent.

<comment><USER8> These are all great links to read if you'd like to dig deeper into search engine land.

Thanks for the searchco.de articles, they were nice to read (Saw them in the previous searchco.de HN) :-)

<comment><USER7> Thanks. I collect any that come up since its really such a dark area. I should probably write a blog post about it since I have a few more I have since dug up. Glad you like the articles :) it was something I had been writing for weeks and then finally got my act together and finished it.

</comment></comment></comment></comment></comment></comment></comment><comment><USER9> DDG is using dynamic language like Perl[1] to achieve high-scalability which is slowest of all languages. This proves languages don't matter much, its all about architecture.

I guess its time to stop worrying about performance of your programming language & start building better high-salable architectures.

[1] Slowest of all languages [http://benchmarksgame.alioth.debian.org/u32/which- programs-a...](http://benchmarksgame.alioth.debian.org/u32/which-programs-are- fastest.php?gcc=on&gpp=on&ifc=on&java=on&v8=on&hipe=on&jruby=on&php=on&python3=on&yarv=on&perl=on&calc=chart)

<comment><USER10> Those benchmarks are extremely suspicious. I remember comparing Perl and Python for bioinformatic work (non-trivial computational workloads), and finding that Perl was about 2x the speed of Python, on average.

Later, I did similar, non-trivial benchmarks with Python and Ruby, and found a similar, 2x factor. Ruby has improved since then, but unless Perl has become dramatically slower in the same interval, I suspect that these benchmarks are either trivial (i.e. simple loops), or badly written.

<comment><USER11> Your benchmarks are likely very biased. The vast majority of the work done by your bioinformatics programs should be done in C code, with thin wrappers so that the code can be accessed through Perl and Python. If anything, your benchmarks only comparing specific implementations, such as BioPerl vs BioPython.

<comment><USER10> I wasn't using bioperl or biopython. I wrote the algorithms myself.

</comment></comment></comment></comment><comment><USER12> I've gotta say, I love DDG, I rarely ever use Big-G for anything anymore. If I had to guess, it saves me a couple hours a week!

<comment><USER13> Just curious, as a non-DDG user: what features are you using that are saving that much time?

<comment><USER14> The major for me is being able to do meta-queries that will be sent to the relevant website, e.g. "!maps 401 broadway to Canal St Station" or "!wa how many stars are in the galaxy"

<http://duckduckgo.com/bang.html>

<comment><USER15> But Google does that already, without needing to type !maps...

<comment><USER16> You get better (short, sane and email-friendly) URLs if you access google searches via DDG bang. !gm = google maps, !g = google search, !gi = google images, etc.

<comment><USER17> So we have DDG as a better solution when you're e-mailing links to google searches. That doesn't add up to hours a week.

</comment></comment></comment></comment></comment></comment><comment><USER18> For your own crawler, what do you estimate the size of your index (# of objects)? Just curious how your own data compares to the rest of your sources (Bing, Yandex, Blekko, etc)

</comment><comment><USER19> 1 million doesn't seem that big a number on the internet?

<comment><USER20> On average that's around 11.6 requests per second. That's about 500 million CPU cycles per request on single low end CPU. Of course DDG probably isn't CPU bound, but it does give an indication that 11 requests per second is not a lot relative to the raw power of modern hardware.

<comment><USER20> Not sure why yegg's (Gabriel Weinberg) comment was killed. It says:

> We also do about 12M API requests per day: > <http://duckduckgo.com/traffic.html>

<comment><USER21> Same comment was posted in another thread.

</comment></comment></comment></comment><comment><USER22> Seems like a mostly straightforward arch. I have only one question (and it's a genuine question as I'm not sure under what circumstances it's being used and if there is an issue that was being run up against). My question is why is Solr replication being run using a 'custom' solution rather than cloud/Zookeeper or similar, or even just the standard master/slave arch if the data was small enough?

</comment><comment><USER23> Regarding the "specialized semantic data", isn't Google already offering similar stuff and/or in the position to offer more? The only example that comes to mind is searching for word definitions, but I'm sure there's more.

</comment><comment><USER24> "Front-end development uses a lot low level JavaScript. Thinking of moving from YUI to jQuery."

So they are using node? I can't think of YUI being "low level javascript" at all.

</comment><comment><USER25> I'd be very interested to hear a ballpark estimate how much data they're storing in their PostgreSQL instances. Any word on that?

</comment><comment><USER26> startpage.com seems to have a better front end, is faster and the results actually what you're searching for. haven't dug into their security to see if it really is "the world's most private search engine"

<comment><USER27> StartPage just serves you Google results through a proxy. If you're trying to avoid Google, this is pointless.

<comment><USER28> Most people are just trying to avoid Google tracking. Startpage claims to not even record your IP address. And it was hosted outside of the USA, but it seems that isn't the case anymore...

</comment></comment></comment><comment><USER29> where can i find info on how the ddg crawler is build?

</comment><comment><USER30> When will google block DDG?

<comment><USER31> DDG don't rely on Google. There results comes from there own systems and Yahoo (through BOSS), embed.ly, WolframAlpha, EntireWeb, Bing, Yandex, and Blekko according to [http://help.duckduckgo.com/customer/portal/articles/216399-s...](http://help.duckduckgo.com/customer/portal/articles/216399-sources)

</comment></comment><comment><USER32> Custom Perl solution O_o. Ok seriously, no matter what, DuckDuckGo is still just a front end of some search engines.

<comment><USER33> Don't be so nasty.

<comment><USER32> Ok I was harsh, but I wonder if what I said was wrong. I do not understand the over protective behavior over DuckDuckGo news and brand in HN.

<comment><USER34> It's not about being protective over DDG. You are being an asshole again and again in this thread.

By your admission, you don't have any experience with search engines, and yet you have definitive opinion about everything related to it.

<comment><USER35> 1) He never called you an asshole. He just posted his views about DDG.

2) If you are offended by what he said, it doesn't give you the right to call him an asshole.

For example, I know many people whose projects you didn't complete on time and who think you are a rotten dick for rightly being one. But I didn't call you a rotten dick, did I?

And also, stop defending DDG like a pussy that's everywhere, dude.

<comment><USER34> I thought about responding, but then "wrestling, pigs" etc.

<comment><USER32> I see only one pig here

<comment><USER36> >> I see only one pig here

... and I see accounts (with davidpayne11) with just enough comments/karma to be useful for trolling -- and insults from them.

Please get a life or at least take this pathetic shit to some other place than HN. :-(</comment></comment></comment></comment></comment></comment></comment></comment>


Ray Casting – Polygon Containment - <AUTHOR> http://kennycason.com/posts/2017-04-11-ray-casting.html <comment><USER2> Typically, a better approach is branch and bound search using a variant of R-tree or Octtree, especially with axis aligned bounding boxes or circles. Ray casting does not scale to many points while more advanced space partitioning does.

GeoHashing is a kind of binning technique.

Then there are manual volume hierarchies and partitioning based on similarity. Each solves a different problem.

</comment><comment><USER3> 404 and nothing in google cache / archive.org.

<comment><AUTHOR> Oh no, It looks like my deploy failed midways through after. I probably should have left it as-is after posting to HN. :)

It's updated now.</comment></comment>


America's Cult of Ignorance (1980) [pdf] - <AUTHOR> http://aphelis.net/wp-content/uploads/2012/04/ASIMOV_1980_Cult_of_Ignorance.pdf <comment><USER2> I love Asimov, and he's right that we should educate our population better, but why would anyone pay attention to the papers when it seems completely remote and irrelevant to people's lives? People pay close attention to stuff that they feels significant to them and that they can control. People read the sports section because they can talk about that with their friends and are invested in the outcome. You and I read the politics section for the same reason even though without popular mobilization, we have basically the same effect on outcomes as a sports game.

If policies are promoted that people actually like as opposed to barely resent, they'll start reading and talking and you won't hear the end of it.

<comment><USER3> "why would anyone pay attention to the papers when it seems completely remote and irrelevant to people's lives?"

Local elections directly affect people. Local boards and councils set tax rates and allocate money to schools, police, fire and other public services. Local elections often are covered extensively by local newspapers. Yet voter turnout often is quite low. Why?

<comment><USER4> > Yet voter turnout often is quite low. Why?

The idea is that only the knowledgeable vote. If you do not feel confident that you have a good grasp on political issues, your vote dilutes the signal sent by those less ignorant.

Encouraging ignorant voters to vote is often the visible part of the propaganda iceberg, the kind of politics we have increasingly witnessed in most of the Western world in the last two decades and that used to be the preserve of third world dictatorships.

You then see elections via mud-slinging and highly visible non-issues taking on most of the mindshare, and the media is captured by interest groups who need it to hijack a larger percentage of the vote. It is harmful to the fabric of society as _all sides_ of the political debate become vote harvesting machines and the citizenry is radicalised and encouraged not to reason about issues [1] [2].

"A free society gives its citizens the right to vote but that right should come with the responsibility to not abuse that right by voting ignorantly." [3]

[1] [https://www.reddit.com/r/dataisbeautiful/comments/1qffh9/vot...](https://www.reddit.com/r/dataisbeautiful/comments/1qffh9/voting_relationships_between_senators_in_the/)

[2] [https://www.scientificamerican.com/article/what-me- care/](https://www.scientificamerican.com/article/what-me-care/) \- "the research [...] found that college students' self-reported empathy has declined since 1980, with an especially steep drop in the past 10 years. [...] during this same period students' self-reported narcissism has reached new heights"

[3] [https://www.quora.com/Is-this-reason-for-not-voting-valid- or...](https://www.quora.com/Is-this-reason-for-not-voting-valid-or- reasonable/answer/Robert-Frost-1)

<comment><USER2> The mobilization of the ignorant doesn't really matter. If they vote randomly and both sides are equally mobilized, the ignorant votes cancel out and the biased (hopefully knowledgable) participants actually determine policy. This becomes harmful when particular factions are mobilized in isolation.... thus US politics.

<comment><USER5> The culture of outrage we see in TV news is carefully crafted to capture and cultivate these votes.

</comment></comment></comment></comment></comment><comment><USER6> "Anti-intellectualism has been a constant thread winding its way through our political and cultural life, nurtured by the false notion that democracy means that 'my ignorance is just as good as your knowledge.'"

        — Isaac Asimov

</comment><comment><USER7> Before that, in 1930, the Spanish philosopher José Ortega y Gasset (two surnames) published "The Revolt of the Masses" book [1], going even further.

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

<comment><USER8> I think that's the first time I've seen a y (and) added between Spanish last names. Any idea where that practice comes from?

<comment><USER9> Jose Ortega y Gasset was a relative of mine, and I asked this as a kid. What I was told (by my grandmother, his niece) is that it is sometimes done when there's a weirdness in the combination of the two last names that would make it ambiguous, such as someone who has a compound first name like Jose-Maria that makes it harder to tell where a first name/last name breaks, or in this case, where it results in a repeated sound (ga-ga) that feels weird to say. But I have not found any corroboration of this online.

<comment><USER8> Thanks for answering. As a Spanish speaker this makes sense. My dad is from Mexico and no one in my entire family has this so maybe it's limited more to Spain?

<comment><USER7> It was until the 19th century, when it was somewhat normalized (census, etc.). Since the 20th century naming in Spain is pretty the same as Mexico and other Spanish speaking countries. All my known relatives names/surnames are without "y".

<comment><USER9> Yep, we are talking about someone who was born in the 1880s. Though as a counterexample in the modern age, there is a well-known Spanish economist at Columbia named Xavier Sala i Martin.

</comment></comment></comment></comment></comment></comment><comment><USER10> No doubt, there are benefits in being ignorant. As they say, ignorance is bliss! And they are right; especially because truth is almost always confusing, unpleasant, troubling and often downright scary. Knowledge rarely brings happiness...

<comment><USER11> I dunno how true that is. What about people who enjoy learning things

<comment><USER10> Well, one might enjoy learning about the six-legged things living under everyone's eyelids, but the knowledge of the fact can hardly make one happy.

Learning history can serve as another example.

<comment><USER12> I find some measure of joy in how remarkable that is.

Ignoring the disagreeable parts of reality may be pleasant as long as reality's ignoring you back, but when it presents real dangers, ignorance is a recipe for getting into real trouble more effectively.

Of course, being dead is an incredibly effective way of avoiding one's personal inconveniences too, but for some reason we don't seem to lionize that to anywhere near the same extent...

<comment><USER10> > _being dead_

This or, rather, the theory of having never existed in the first place, is, indeed, a very interesting subject, but in the context of the present discussion it can only be taken for what is known as a "strawman argument".

<comment><USER12> _> in the context of the present discussion it can only be taken for what is known as a "strawman argument"_

Not at all. I'm sure if you make a sincere effort you could, for instance, find a way to take it as a (little-needed) reductio ad absurdum.

Moreover, with the way you run your discussion here you are hardly in a position to throw stones with regard to disingenious argumentation. You're uncomfortably close to trolling, so if you're seriously making an argument for this position wholesale, which I find doubtful, ease off on the equivocation and cherry-picked examples and keep a civil discussion with the other commenters.

</comment></comment></comment></comment></comment></comment><comment><USER13> The go-to book on this is "Anti-Intellectualism in American Life" by Richard Hofstadter: [http://a.co/aJf0UKt](http://a.co/aJf0UKt)

I'd also highly recommend Sertillanges on the intellectual life: [http://a.co/91XX11G](http://a.co/91XX11G)

</comment><comment><USER14> OCRed version. [https://womanorgod.files.wordpress.com/2017/07/asimov_1980_c...](https://womanorgod.files.wordpress.com/2017/07/asimov_1980_cult_of_ignorance-2.pdf)

</comment><comment><USER15> The prospect for America's future is not good.

America's golden years were right after WW2, with the creation of the Bretton Woods system. But since the Nixon shock, the US dollar depends on exclusive deals to retain a relative value to other currencies. e.g: convincing oil exporting countries to only sell their oil in dollars and buying US treasury bonds.

But as these deals become redundant (e.g: as oil becomes less necessary), the US dollar will lose value, and so will things valued in dollars (e.g: savings, wages, etc).

Unless the US finds another way to keep the US dollar afloat, printing more dollars to subsidize the economy will stop helping and the US will lose its privileged position in the world, which this generation takes for granted.

</comment><comment><USER16> "Yes, _provided they can read!_ "

I'm (nominally) a professional, and somewhat educated, but I honestly question whether I can actually _read_. There are plenty of things written in good English that I cannot read. Many articles in _The Journal Nature_ , most prose written before about 1850, technical books written in other than encyclopedic form...

</comment><comment><USER17> > We can _all_ be members of the intellectual elite, and then, only then, will > a phrase "America's right to know" and, indeed, any true concept of > democracy, have any meaning

Come on. We cannot _all_ be members of the intellectual elite. And I'm not being facetious because of a few mentally disabled people. Half the population has an IQ below 100. Let that sink in for a moment. There are (more or less) innate IQ differences and some people excel at intellectual tasks while others do not and actually cannot as a matter of the body they possess. Just ask any school teacher: There are bright kids who get things easily and quickly get ahead and others who cannot progress even if they put in all the hard work and hours they can.

This entire piece seems like Asimov is salty because not everyone is an intellectual. Well, too bad, there are people who enjoy a simple life without the sorrows that come with being an intellectual.

<comment><USER18> Why the down votes? It's correct. There's tons of dumb people. We can't all be elite. That's not how variation in a species works. Intelligence leans heavily on biology so it's got to be varied. Not everyone wins the lottery. Right?

Asimov was from New York, he's f-n salty. He'd probably quickly admit it then laugh and compose a limerick about it and slap you on the ass.

Also we need dumb people. We need people happy to swim in the shallow end of the pool of ideas. And we need to help them, take care of them, love them like any human. Give them opportunities to do important work. We certainly shouldn't let them have governmental or military powers.

Now, we can shift the average intelligence to the right by a standard deviation, but that requires some real gumption. And only a rare group of people is that brave.

<comment><USER11> It's all relative. If everyone had an IQ of 150, the elites would be those with IQs of 180

<comment><USER19> You're assuming that IQ is what makes people elite.

<comment><USER18> "Intellectual elite", pay attention boy! Pedantry is only for school.

</comment></comment></comment></comment></comment><comment><USER20> Americans should be allowed to gamble on political races, they would be more invested in the discussion of policy!

<comment><USER21> This is actually not a bad idea....if they were allowed to gamble on actual individual bills, I can see how it would be worthwhile for some people to become deeply interested in the nuanced content of proposed legislation, the political actors involved and their public words vs actual actions, the public mood, etc.....because I think some people could make money at it.

Although, just as politicians are (were?) allowed to insider trade on the stock market, they'd do this (or pass tips to their friends and family) and take everyone's money.

I think modern democracy simply doesn't stand a chance against a well organized communist government in China. Long term, the only way China loses is if they make a _big_ mistake, and I just don't see anything compelling on the horizon.

</comment></comment><comment><USER22> Asimov seems to have been sitting in a room with only TV and newspapers. How can he see anything else? So he wrote this column and i see a ladder to climb (assume effort required) to get the right to know.

But today he would spin on a sit n spin with his hands out where a web of bits bury his body. Slowly

What would he write now?</comment>


The Death of SEO (Part 2): Generating Real Content - <AUTHOR> http://www.forbes.com/sites/kenkrogue/2012/08/04/the-death-of-seo-part-2-generating-real-content/ <comment><USER2> Stupid statements and headlines. Search engines continue to grow in popularity and usage. Doing good things, writing good content and structuring your site properly will never "die" - c'mahn now people.

<comment><AUTHOR> Forgive me, but it's not entirely clear to me exactly what you're saying. I've never had a great sarcasm detector, and I cant tell what of your comment is intended as criticism, and what is intended as contribution.

Would you mind being clearer? In particular, if you think the Forbes article is content-free, perhaps you could provide a better one.

Thanks.

<comment><USER2> Sorry Colin, I should have been clearer. What Ken is referring to in the article is very commonly, what anyone who has attempted to optimize their content (typically known as SEO), would go through. He is making the argument that he has made an argument on how to create real content or to quote: "consistently and cost-effectively generate real content".

He then launches into all of the tactics he would employ under the banner of "The Death of SEO" when in fact he is advocating for precisely that: SEO.

I may quite possibly be missing something or not explaining myself and my previous comment. Hope that's not the case.</comment></comment></comment>


Why the drug-discovery model is broken - <AUTHOR> http://www.xconomy.com/national/2010/06/24/fixing-the-broken-model-look-inside-your-company/

<comment><USER2> If anyone found this interesting, you should check out "In the Pipeline", a nice insider blog in the pharma industry: <http://pipeline.corante.com/index.xml>

As a free bonus, his "Things I won't work with" sub-series is a great humor read about dangerous chemicals.

</comment><comment><USER3> Single page: [http://www.xconomy.com/national/2010/06/24/fixing-the- broken...](http://www.xconomy.com/national/2010/06/24/fixing-the-broken-model- look-inside-your-company/?single_page=true)

</comment><comment><USER4> It's likely that the FDA has actually caused more deaths than they have prevented, by delaying and increasing the costs of bringing new drugs to market.

More info: <http://www.youtube.com/watch?v=dZL25NSLhEA>

</comment><comment><USER5> Its also that a lot of things that have been discovered have fallen out of use because they are no longer patentable and thus do not get any investment from drug companies.</comment>


Public Worker Pensions Find Riskier Funds Fail to Pay Off - <AUTHOR> http://www.nytimes.com/2012/04/02/business/pension-funds-making-alternative-bets-struggle-to-keep-up.html

<comment><AUTHOR> How, if at all, will this impact the ability of VCs to raise future funds.</comment>


Flojuggler - <AUTHOR> http://www.flojuggler.com/

<comment><USER2> As a woman, the underlying idea isn't actually such a bad thing, though I'm not sure about the way they're marketing it. There are several menstruation calendars on the market, they're good for a whole lot of things, from pre- warning you about potential mood swings to reminding you that you should probably take some sanitary items with you on that weekend away, to planning for baby-making :) Most of them focus on the latter though, which is a bit... conservative, really.

As for me, my partner currently lives a reasonable distance away, and so it'd be nice for me to plan my trips to visit in advance, and then expectations can be sorted in advance. Also, in my case, sometimes I don't realise when I'm suffering from mood swings, so it'd be nice to know when to expect it, rather than just thinking "oh well it was sometime at the beginning of the month last month".

Like I said though, I'm not really sure about the marketing, but I think it would definitely appeal to younger, sexually active women and their partners.

ETA: Yeah, definitely not so sure on the marketing... some of it's pretty crass. But perhaps it'll help break down some stigmas associated with talking about menstruation? (or possibly add to them?)

</comment><comment><USER3> This reminds me of an old legend from a semiconductor company where I used to work. You used to have to test your ESD protection (grounding heel/wrist straps) with an ohmmeter and log it to a notebook before going out to the factory floor to be sure that you wouldn't zap anything.

Engineers being engineers, someone analyzed the log data and discovered that the skin resistance of female workers tended to vary on a monthly cycle, and you could predict these cycles based on empirical data. This soon spread around the office.

At some point HR got involved and shut it down. The ohmmeter was replaced with a red/green light.

</comment><comment><USER4> that is pretty bad. is this one a joke?

<comment><AUTHOR> I'm really not sure.

<comment><USER5> It's bad, if it's joke, it's worse.

<comment><AUTHOR> The possibility remains it's both real and a joke.

But we won't really know unless they add check-in functionality.

</comment></comment></comment></comment><comment><USER6> Flag with extreme prejudice.

<comment><USER7> Why? Is the subject so awkward that you can't even bear to have a link which suggests it in your HN front page?

<comment><USER8> The unspoken implication behind this site is that, for several days every month, women become "unclean" and less desirable, to such an extent that one must use this application to be aware of and schedule around it. Can you see how that's offensive?

<comment><USER9> There are some cultures that do consider menstruation unclean (we can't really judge them on that) so there is an outside possibility this comes from one of them... but somehow it doesn't strike me that way.

I think it's just how this presented that makes it problematic. The crude terminology and focus on sex (and other areas of lacking sensitivity).

Because on the one hand there is a solid/useful idea here.

My girlfriends comment was "I'd maybe give it a shot if it was developed by a woman, or for a woman. This looks like something for a man, by a man"

EDIT: I thought of a similar thing a friend of mine once had, he had a few girlfriends and recorded their periods on a calendar so he could check back and figure out who would be "free". This gives me the same impression :(</comment></comment></comment></comment>


Cut the working week to a maximum of 20 hours - <AUTHOR> http://www.guardian.co.uk/society/2012/jan/08/cut-working-week-urges-thinktank?fb_action_ids=10150451814327060&fb_action_types=news.reads&fb_source=other_multiline

<comment><USER2> _"argues that if everyone worked fewer hours – say, 20 or so a week [..]"_

Except that wouldn't happen. The self employed and those whose hours couldn't be tracked would work more to get a competitive advantage, encouraging widespread disobedience of the law.

It's an absolute nonsense in any case because I don't know anyone who could "share" my job with me. If I were forced into these hours, my stay-at-home-mom wife would be forced to go to work and do something she is neither any good at nor wants to do, or we'd just fall off grid, live off the land and stop contributing to the economy at large.

<comment><AUTHOR> It seems to me that it would be good if 20 hours a week was already the norm, but for the reasons you highlight, I don't think it's something that's possible to transition to from 40 hours as we have now.

As you say, you certainly can't just say "right everyone, 20 hours only from now on..."</comment></comment>


Ancient Turing Pattern Builds Feathers, Hair and Now Shark Skin - <AUTHOR> https://www.quantamagazine.org/ancient-turing-pattern-builds-feathers-hair-and-now-shark-skin-20190102/ <comment><USER2> Turing's papers on the subject formed part of the research for my dissertation project, which culminated in a Matlab simulation of the skin patterns he described with inhibitors/activators.

I recently converted it to JS and also Ruby, as an excuse for a few coding exercises. It's still a work in progress, but can be found here:

[https://github.com/rai-hi/rails-skin-patterning](https://github.com/rai- hi/rails-skin-patterning)

Demo here:

[https://skin-simulator.herokuapp.com/](https://skin-simulator.herokuapp.com/)

<comment><USER3> Since you're in the field, maybe I could ask about your impression of Wolfram's NKS? As a layperson, I understand it's a generalization of many classes of such patterns.

[https://www.wolframscience.com](https://www.wolframscience.com)

<comment><USER2> Actually, the dissertation project was my only experience with the field. Although I read some of NKS at the time, it's a distant memory and so I wouldn't be able to say!

</comment></comment></comment><comment><USER4> In the late 90s I chatted with Brian Goodwin who was about to write this book How the Leopard Changed Its Spots [https://press.princeton.edu/titles/7043.html](https://press.princeton.edu/titles/7043.html)

Really interesting guy and the book covers a whole host of areas where self- organising systems shape organisms without necessarily much genetic intervention

</comment><comment><USER5> Cool. It's fun to see how Turing patterns are everywhere in biology. However, as Turing himself said (allegedly): 'Well the stripes are easy, but what about the horse part?'

<comment><USER6> Having developed an amateur interest in cell biology over the last few years, the single most interesting thing I've learned is that Interglobulin-M cells cells just happen to have same basic morphology as the kind of animals that they come from.

<comment><USER7> I have no idea what that means, but I'm curious to know. Can you point to anything I could read?

<comment><USER6> I'm so sorry, I should have written immunoglobulin-M and didn't notice my mistake. I don't feel qualified to recommend a text, I just follow references from here.

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

<comment><USER7> Thanks. :) That's what I found when I searched, but the spelling difference threw me off.

</comment></comment></comment></comment></comment><comment><USER6> I feel like this pattern is a great example of how mathematicians, scientists, and technologists should focus their attentions on things that are economical and 'good enough' rather than fetishizishing ever-increasing levels of precision.

While, say, calculating fundamental constants to the _n_ th degree of precision is fun and intellectually satisfying in many respect, the marginal utility of each additional digit of precision asymptotically approaches zero so it's really a self-indulgent luxury. But this fetishizing of precision also has drawbacks; it misdirects resources and effort into improvements whose benefits fall far short of the costs.

You wouldn't use a laser pointer to explore a room. Of course you _could_ ; but mapping a topological space using LIDAR is only possible because we have computers to do the vast amount of number crunching required, and it's only very recently that we've gone from very sparse representations to ones of sufficiently high resolution to give us representations that are immediately recognizable as familiar spaces.

I will take fast proximity over slow exactitude any day of the week; I want models that get me close enough with very few parameters rather than more perfect ones that require a thick book's worth of specifications to articulate.

</comment><comment><USER8> This story makes me wonder when we're going to change the culture of science so as to minimize the time it takes for something to be taken seriously.

<comment><USER7> Unfortunately, this is more a generalized problem of human disbelief in the unlikely than anything specific to science. We can't really say, 'scientists now have to be more receptive to weird ideas'.

</comment></comment><comment><USER9> And, maybe, explaining the geometrical hallucinations from psychedelics and 10hz flicker: [https://www.quantamagazine.org/a-math-theory-for-why- people-...](https://www.quantamagazine.org/a-math-theory-for-why-people- hallucinate-20180730/)

</comment><comment><USER10> This pattern of inhibitor/activator is one that can be used in social sciences as well.

This also fits well with how codebases are managed: linting, style, patterns, etc.

</comment><comment><USER11> The picture of the model vs real shark denticles isn't very compelling to me. Maybe they just chose a poor example?

</comment><comment><USER12> can this be used in generating textures for 3d models

<comment><USER13> It's one way of doing it, yes. See this project that does it [https://github.com/gollygang/ready](https://github.com/gollygang/ready)</comment></comment>


Yale Researchers image a dying brain neuron for the first time - <AUTHOR> https://medium.com/technicity/yale-researchers-image-a-dying-brain-neuron-for-the-first-time-91b6d9c0d0b5 <comment><USER2> "This is was not because of the aged glia to sense the dying cell."

I'm guessing this was supposed to say the aged glia could not sense the dying cell? Then again, maybe the opposite.</comment>


Finding bugs via bisection. - <AUTHOR> http://edumips64.blogspot.com/2011/09/finding-bugs-via-bisection.html

<comment><USER2> _> By the way, if we used git [...], we could have used the wonderful command git bisect._

Note that not only Git, but any modern version control system provides a bisect feature. (Git, Mercurial, Darcs, etc)</comment>


Elixir v0.8.0 - Better apps support, unicode and performance improvements - <AUTHOR> http://elixir-lang.org/blog/2013/01/27/elixir-v0-8-0-released/

<comment><USER2> Congrats on 0.8.0! I've just started learning Elixir, but having a lot of fun in iex! Thanks for the awesome documentation!</comment>


1/3 of my life is over and this is what I've learned - <AUTHOR> https://medium.com:443/p/bef55be397d4

<comment><USER2> One important item is missing from this list: your life could be over today. That you still have 50 years to go is an statistical expectation, it isn't a promise.

<comment><AUTHOR> Indeed. One of my best friends died a day after my birthday, so this pushes me to make an extra effort for him.</comment></comment>


Tesla stock falls 12% after NTSB announces fatal crash investigation - <AUTHOR> https://arstechnica.com/cars/2018/03/tesla-stock-falls-12-after-ntsb-announces-fatal-crash-investigation/ <comment><USER2> The downgrade by Moody's is why the stock is down as much as it is, imo, as it immediately impacts the discount rate (aka cost of capital) and makes it more expensive for TSLA to borrow money. The impact of the investigation on TSLA's future growth/financials doesn't seem quantifiable right now.

<comment><USER3> Ignoring dividends and interest, the stock price itself is the market's approximation of the expected future value of a share. That's precisely how you quantify it.

</comment></comment><comment><USER4> >Tesla says that it hasn't been able to retrieve the vehicle's logs due to extensive damage to the vehicle.

If we can build a "black box" that survives plane crashes, why can't Tesla build one of those for their logs?

>"We understand there were no occupants still in the Model X by the time the fire could have presented a risk," Tesla claims.

huh... then who died?

<comment><USER5> Do other cars have black boxes that survive crashes? Why should Telsa build one? Their car is not a plane. To build such a black box will increase the cost of production. They are trying to reduce costs. Their very existence depends on reducing the costs of manufacturing.

<comment><USER4> >Their very existence depends on reducing the costs of manufacturing.

Some might say that their very existence depends on people trusting them to purchase their cars. It always seems convenient that there is no telemetry available in the very crashes we are interested in.

<comment><USER6> Which cars _do_ provide telemetry data when they crash? Maybe one? None?

Why is Tesla held to a "standard" that no other vehicle manufacturers (that you "have to trust") are held to?

<comment><USER7> > _Why is Tesla held to a "standard" that no other vehicle manufacturers (that > you "have to trust") are held to?_

Because they are making claims about the state of their technology that no other vehicle manufacturers are.

<comment><USER6> They are? IIRC they've not said anything about their cars being completely autonomous, or that drivers should do anything behind the wheel that's different than what they should do behind the wheel of any other car..

<comment><USER3> What does the word "autopilot" mean to you?

<comment><USER6> What does the word "future" mean to you?

<comment><USER7> Coming Soon, like Theranos' blood test?</comment></comment></comment></comment></comment></comment></comment></comment></comment>


Ask HN: Why is Bitcoin price increasing? - <AUTHOR>

<comment><USER2> Supply and demand. Bitcoin used to be a niche, only followed by a few hackers and enthusiasts (low demand). At the same time, by design, mining was easier (high supply). Now Bitcoin is becoming more mainstream, and even the skeptics are starting to buy in, both literally and figuratively (increasing demand), at the same time that mining is becoming harder (decreasing supply). As Bitcoin gets wider acceptance, and as mining gets more difficult, the price will continue to rise, until it reaches a plateau.

<comment><AUTHOR> Is it possible to predict the increasing rate of difficulty?

<comment><USER3> You can gain a rough estimate based on the delivery schedules of ASICs in the market. You can calculate the pre-orders placed for xGH/s and multiply that by how many were pre-ordered. This should give a rough estimate of how much hash- power will be added in the future.

Current market situation - it's definitely going up.</comment></comment></comment>