WebAssembly Micro Runtime - <AUTHOR> https://github.com/intel/wasm-micro-runtime <comment><USER2> Cool. The whole repo is about 24K lines, and the vmcore_wasm dir is ~8300 lines.

       ~/git/languages/wasm-micro-runtime$ find . -name '*.[ch]' |xargs wc -l |sort -n
       ...
        472 ./core/iwasm/runtime/vmcore_wasm/wasm-opcode.h
        478 ./core/shared-lib/utils/runtime_timer.c
        537 ./core/shared-lib/platform/zephyr/bh_thread.c
        581 ./core/iwasm/runtime/platform/zephyr/wasm_math.c
        590 ./core/shared-lib/mem-alloc/ems/ems_alloc.c
        841 ./core/iwasm/lib/native-interface/attr-container.c
        893 ./core/iwasm/lib/native/libc/libc_wrapper.c
       1220 ./core/iwasm/runtime/vmcore_wasm/wasm-runtime.c
       2160 ./core/iwasm/runtime/vmcore_wasm/wasm-interp.c
       2874 ./core/iwasm/runtime/vmcore_wasm/wasm-loader.c
      24534 total

There is also a C++ VM here that's ~7700 lines. I haven't tried either one but it would be interesting to see how they compare!

[https://github.com/WebAssembly/wabt/tree/master/src/interp](https://github.com/WebAssembly/wabt/tree/master/src/interp)

       ~/git/languages/wabt/src/interp$ wc -l *.cc *.h
      1863 binary-reader-interp.cc
      3585 interp.cc
       642 interp-disassemble.cc
       740 interp-trace.cc
        43 binary-reader-interp.h
       735 interp.h
        94 interp-internal.h
       7702 total

</comment><comment><USER3> Interesting, apparently WebAssembly is a relatively small spec to implement; someone at our local Rust usergroup has also shown off a WASM runtime that runs on microcontrollers.

<comment><USER4> Arduino-compatible?

</comment></comment><comment><USER5> How does this compare to Mozilla's wasi? [1]

[1] - [https://wasi.dev/](https://wasi.dev/)

<comment><AUTHOR> WASI is a system interface for WebAssembly modules, it is not an implementation. Therefore, these are quite different.

However, they could have decided to use WASI as the interface for their wasm runtime, but it looks like they didn't

<comment><USER6> a bit off topic, but I was wondering, can WASI API be used directly from c/c++ without compiling to wasm ? Basically to have native perf but still benefit from the crossplatform APIs that WASI will expose

<comment><USER7> That depends entirely on the implementation (and leaves open the question of ABI and binary file format).

<comment><USER6> Doesn't WASI defines a sort of ABI (what are the data types, the functions, arguments, return types etc...) ?

<comment><USER8> Yes, but WASI doesn't define calling convention and binary format, because they are defined by WASM. Your proposed WASI-native would need to define them.

<comment><USER6> ah okay I see, thanks for your answer

</comment></comment></comment></comment></comment></comment></comment><comment><USER9> Gosh, somebody should be proofreading that README. It seems a little unprofessional of Intel when I cannot understand what's meant in certain sentences...

<comment><USER10> It was quite readable for me, although there were some sentences which stood out. How I see it is: A developer whose first language is not English (or even any of the Western Languages which share similarities) made a fairly good README - which could be improved further by native speakers.

If you ask me to write a similar README in Japanese/Chinese/Thai, I wouldn't even know where to start.

<comment><USER11> I envy people who suck at grammar but are still capable of expressing their ideas because they know their vocabulary. They somehow managed to succeed at the hard parts before mastering the easy parts of a language.

<comment><USER12> Arguably, vocabulary _is_ the easy part.

<comment><USER8> No, vocabulary is the hard part. It's where you spend most of learning time.

<comment><USER12> If you define vocabulary to include not just the words, but the appropriate usage-in-context, then sure. Arguably that's not a short formal list of rules you memorize, but an intuitive understanding of thousands of specific cases that can only be acquired through massive exposure to the language.

I'm not sure what the word for that is, it's neither vocabulary nor grammar, and yet more important than either of them -- actually even more important than both vocabulary and grammar put together (lists of words and lists of rules).

</comment></comment></comment></comment></comment></comment><comment><USER13> I was wondering if it would be suitable for micro controllers (with let's say a few hundred kB of memory, not MB). I can't immediately find the answer but there appears to be a port to Zephyr OS in the repo so that is promising.

There's also the beginnings of a sensor manager and API so clearly small embedded use cases are intended.

It's still a very small project (looks like one contributor so far), but that's no bad thing...

<comment><USER14> What would be the advantage of running WASM on a microcontroller instead of compiling the code directly for the microcontroller's architecture?

<comment><USER15> I'm interested in WASM for microcontrollers to have the application guaranteed free of side-effects (due to the sandboxing). This allows to be test the logic thoroughly in isolation, and have reasonably high certainty that it does not do anything funky - like write to some hardware register in some edge-case.

Such code would not be able to do I/O directly, but must receive it from outside the sandbox. It could be a pure function implementing a state machine on form `state, outputs = next(state, inputs)`, where state,inputs and outputs are plain data. This structure is amendable to generating testcases, be it via property testing or fuzzing. Or regression tests by capturing a stream of state transitions in serialized form.

There are languages which makes this possible, like Haskell, or maybe even Rust or Ada. However in the embedded world, C is what everyone knows and uses, so there would be a benefit to staying within that ecosystem.

<comment><USER16> Cool, but aren't side-effects just what you want when using a microcontroller to, you know, control things?

I work in embedded development and the amount of pure logic is really small in our software but I guess that varies with the niche you're in.

<comment><USER15> Yes, you are very right. The function of most microcontroller/embedded systems are almost all input/output (sensing/actuating). The challenge is that combined software+hardware systems can be hard to test, especially together.

The traditional way to simplify QA is to use a Hardware Abstraction Layer in the code, which hardware side-effects happen through. So you have a classic layer cake like:

        | App Logic (imperative, stateful)         |
        | Hardware Abstraction Layer (interface)   |
        | Input/Output (implementations)           |

Then during testing of the software application logic, a mocked implementation of the HAL can be used. When done with due care, this works OK. In this basic model it is OK to read input and cause outputs "anywhere" in the application logic. That is easy and convenient, but (I argue) that this _causes_ pure logic to be rare. Which is unfortunate, since it would be much easier to test. State also tends to be spread across the code-base, which can hide stateful behavior that is critical to test.

In the proposed model, the HAL functionality is split into two distinct parts: input and output drivers. And the application logic does not call the HAL, but gets called with Input and produces a description of Output. So the layer cake kinda tips sideways:

        HW input driver > Input (data) >  App Logic (pure) > Output (data) > HW output driver
                                       |                   |
                                       <      State        <

During test of application logic we have:

        input generator -> App Logic -> output capture

and can then perform validations on who sequences of Input/Output pairs. And debugging can trivially access whole sequences of State changes.

Those familiar with dataflow programming might find this very familiar. Frontend people might see parallels to unidirectional flow of data in reactive UI frameworks like React. Simulation minded people might see that this structure is very amendable to Discrete-Event Simulation.

I have used this model to good effect across many (relatively simple) embedded/IoT systems over the last few years. One thing I _really_ like, is that it makes temporal logic very easy. Because in this model the current time (be it ticks or wall-time) is just a type of input. So it is easy to stimulate, visualize and make assertions across whole timelines of behavior, and one can see many such timelines at the same time. Similar to what Brett Victor showed with Mario in Inventing on Principle.

Have been meaning to write more about this for a long time, so apologies for the mini blogpost :) Some very related writing in [http://www.jonnor.com/2017/03/host-based-simulation-for- embe...](http://www.jonnor.com/2017/03/host-based-simulation-for-embedded- systems/)

PS: the comment by pault is to the point, and right on the money.

<comment><USER2> It's great to see these software ideas being used in embedded systems. From my limited experience with embedded code, most engineers in the domain treat their software more like hardware. They test it WITH specific hardware and don't abstract it, abstraction being more of a software thing.

I would like to read a blog post about what you're doing. It would also be great to connect it to the other software communities doing similar things with different names.

I think this encountered these ideas in the Java world around 2005, with their strong focus on testing. It's basically "dependency injection" or dependency inversion.

I just did some Googling and found this good overview:

[https://gist.github.com/kbilsted/abdc017858cad68c3e7926b0364...](https://gist.github.com/kbilsted/abdc017858cad68c3e7926b03646554e)

It's very much an idea in the "enterprise" software world. I've never been in that world but it does seem like they are grappling with complex problems and systems, and this architecture has proven itsef in that domain. It's not surprising to me that it's also useful in the embedded domain.

I would say it's just "modularity". If your dependencies are hard-coded, then you have no modularity in your software at all. The whole thing is one big ball of mud which you can either take or leave. "Functions" aren't really modular if they have nontrivial hard-coded dependencies! (i.e. particularly ones that do I/O or depend on state).

Other names:

\- capability based security / Object capabilities (WASM is influenced by these ideas, which originated from Eros OS as far as I know. The E language was an influential object capability language.) The idea of "ambient authority" is useful.

\- [https://news.ycombinator.com/item?id=14523728](https://news.ycombinator.com/item?id=14523728) \-- a thread where Go programmers are rediscovering dependency injection. You can "invert" state or I/O. Those are independent decisions, but the same concept. In my larger programs, I tend to abstract both of them.

\- In Haskell, you use State and IO monads. They are parameters, not things you go "looking for".

\- Good overview of enterprise world: [https://blog.cleancoder.com/uncle- bob/2012/08/13/the-clean-a...](https://blog.cleancoder.com/uncle- bob/2012/08/13/the-clean-architecture.html) (Clean architecture, ports and adapters, onion architecture, hexagonal architecture, functional core / imperative shell, etc.)

I think Java eventually went overboard with "DI frameworks", which I never used. I just wire up the dependencies manually in main() and it works fine.

\-----

Also, I bought a somewhat obscure many years about dataflow programming and hardware, which I think it somewhat related:

[https://www.amazon.com/Programming-SIMPL-Way-John- Collins/dp...](https://www.amazon.com/Programming-SIMPL-Way-John- Collins/dp/0557471311)

 _At its most fundamental, SIMPL is a set of library functions which allow the passing of encapsulated messages between cooperating processes. These processes may be local to one host computer or spread over a network._

</comment></comment></comment></comment></comment></comment><comment><USER17> I'm always interested in running WASM in microcontrollers, but AFAIK there is a severe limitation of WASM spec: the minimum size of heap (WASM memory page) is 64KiB, which is too big for many of microcontrollers. Otherwise a WASM module must run in stack-only mode.

Unless this problem is resolved I don't think WASM can be adopt widely in the world of microcontrollers.

<comment><USER18> I'm working on a Wasm interpreter. Yes, Wasm ideally needs a smaller page size for embedded applications. But, the 64kB page size is more of an interoperability specification. If you own the environment and you're already doing bounds checking on memory accesses, you can treat the memory size as virtual and dynamically allocate only what is used.

<comment><USER17> > But, the 64kB page size is more of an interoperability specification.

Could you tell me a bit more on it? Does the particular number 64kB have something to do with?

</comment></comment></comment><comment><USER19> The README says "small footprint" but does not seem to mention what this is numerically?

</comment><comment><USER20> Big companies like Intel should be able to afford to pay technical writers whose native language is English. Consider:

> WASM is already the LLVM official backend target

This implies that the only thing LLVM compiles to is WASM.

Better would be something like "WASM is already an official LLVM backend target" or "LLVM already compiles to WASM".

<comment><USER21> They don't seem to require a CLA right now, so, how about you send a pull request?

<comment><USER22> The "submit a pull request" method of responding to problems, especially for a project supported by billion dollar companies, needs to die in a fire.

I really prefer to have documentation written by people who understand how things actually work on the inside.

<comment><USER23> ... but whose native language often isn't English.

</comment></comment></comment></comment><comment><USER24> Hold on... so if I implement a wasm runtime somewhere, I can compile random things for it. brb, writing wasm runtime for avr and z80

</comment><comment><USER25> Note:

"Features

WASM interpreter (AOT is planned)"

You'll compile a program to have it interpreted at the end.

Does anybody know some specific case where this direction is advantageous?

<comment><USER26> This is how a lot of interpreters work - they compile source code to some intermediary bytecode (usually an imaginary stack or register machine) and then interpret that.

It's usually faster than executing directly over some sort of AST, and also fast when you re-execute the same script over again (that's why Python creates .pyc files for modules).

<comment><USER27> In this instance I think that by AOT they mean that at some point the runtime will be able to compile WASM into machine code ahead of time and execute that instead of interpreting it during run-time.

WASM already is the intermediate format and VM that you describe.

</comment></comment></comment><comment><USER28> Seems quite interesting and hope to have more info about actual device.

</comment><comment><USER21> Every time someone submits wasm related content, I feel obliged to link this classic talk:

[https://www.destroyallsoftware.com/talks/the-birth-and- death...](https://www.destroyallsoftware.com/talks/the-birth-and-death-of- javascript)

Bernhardt, Gary – The Birth & Death of JavaScript (PyCon 2014)

<comment><USER29> Honest question, why is this talk so relevant? I agree it had a good foresight, but I watched it and am a bit surprised by how much it is mentioned.

<comment><USER30> My guess as to why it's mentioned so much is that the general expectation is that many people haven't seen it yet. When people do watch it, they're surprised by how much good foresight there was, and so they repeat the cycle.</comment></comment></comment>


Two CIA Prisoners in China, 1952–73  - <AUTHOR> https://www.cia.gov/library/center-for-the-study-of-intelligence/csi-publications/csi-studies/studies/vol50no4/two-cia-prisoners-in-china-1952201373.html

<comment><USER2> I hate the text color so freaking much. I changed it to black with firebug, but it's a major issue with that site.

</comment><comment><USER3> Wow. Thanks for sharing that. I had never heard of these two men until now.

</comment><comment><USER4> 20 years gone...must require quite the will!

</comment><comment><USER5> This isn't loading for me...

<comment><USER6> Redacted.</comment></comment>


Why The 'Reasons to Ban Handheld Devices Article" is Wrong, Stupid - <AUTHOR> http://nostrikethat.com/2014/03/10/10-reasons-why-the-10-reasons-to-ban-handheld-devices-article-is-stupid/

<comment><USER2> This comment pretty much sums it up:

      I, too, have not read the original article and have no urge
      to. This article is brilliant and just my cup of smart-
      ass-take-that kind of writing.

<comment><USER3> I concur. Besides, who believes what HuffPo says, anyway?

<comment><USER2> To clarify: The quality of the comment I quoted is indicative of the quality of TFA.

</comment></comment></comment><comment><USER4> Can we change the title to match the page's title: "10 reasons why the '10 reasons to ban handheld devices' article is wrong, stupid" ?

That way people can see that it's sloppy click-bait listicle + "funny" picture garbage and ignore it as I wish that I had?

</comment><comment><USER5> _. . . from HuffPost_

Well there's your first problem.

</comment><comment><USER6> So, you sell apps for children or something?</comment>


Map Reduce: A simple introduction (2010) - <AUTHOR> http://ksat.me/map-reduce-a-really-simple-introduction-kloudo/

<comment><USER2> Map Reduce seems very interesting, but every example I have seen explains it in terms of counting frequency of words in documents. I would love to have someone explain it with an actual business example. I can't think of many real world uses where counting the frequency of words would matter to most businesses. (besides maybe some analysis of log files)

<comment><USER3> Think of the SQL GROUP BY functionality as an example. You have a giant terabyte-scale text file that is a CSV of observations (say the raw US census results). You want to group people by some facet (say zipcode and household income) and compute some complex, arbitrary function for each group.

Your map function scans the rows and outputs the kv pair (zipcode+","+income, csv line). All the csv lines in a group go to the same instance of the reduce function, where you can run any code you like (compute averages, do deep learning, etc). The output is the results of what you want to compute for each group.

This is a pretty simple example, but does demonstrate where the power of mr comes from -- arbitrary functions in the map and reduce functions that are allowed restricted one-way communication from the mapper to the reducer. It also should help you understand the glib "you can implement SQL on mapreduce" comment below, which is what Apache Hive does.

</comment></comment><comment><USER4> This is a good explanation and I would love to share it but the poor spelling and grammar makes it un-shareable.

<comment><USER5> Perfectionist much?

While I can agree that pointing out the spelling and/or grammar mistakes could be constructive, calling the article "un-shareable" because of them seems terribly over-the-top.

<comment><USER6> Unless you're already familiar with the material, spelling and grammar lends credibility to the content of the article. Similar to a code smell, it makes you ask "are you sure you know what you're doing?"

<comment><USER5> While I agree that numerous spelling and grammar mistakes can indicate a lack of maturity in writing skills, I also know that some of the most brilliant people I've ever worked with were absolutely terrible at spelling. One guy in particular was an amazing programmer. He produced libraries of code that were fast, efficient, and easy to read and understand. They were also very well documented. I know, because I went through the documentation and fixed the dozens and dozens of spelling errors. If I didn't know otherwise, I'd have thought he made a game out of how poorly he spelled words.

I can appreciate numerous spelling/grammar errors making you analyze an article with a bit more scrutiny. However, I can't think of a single example of an article with those kind of errors where I couldn't figure out from the content whether I thought the author really knew what they were talking about.

At any rate, I think there is a big difference between an article needing a little bit more scrutiny, and the article being "unsharable".

<comment><USER4> Just my personal opinion, no disrespect intended. I have personally authored posts that needed a bit more time on the proofreading table and I did worry that people would question my authority on the subject due to grammatical errors in the article.

<comment><USER5> Fair enough.

Just to be clear, I don't want to give the impression that I don't think spelling/grammar matter (even for blog posts). I just think it is easy to get so pedantic about it that you place far too much weight on them.

I have my own set of pet peeves, and am probably guilty of allowing the violation of one of them to taint my view of an article too quickly and too often.

And of course, there are always those articles that are _so_ bad grammatically that it looks like a first-grader wrote them (but I don't think that's the kind of article we were discussing).

</comment></comment></comment></comment></comment></comment><comment><USER7> I love the punchline, besides the ridiculous requirements and the deadline the way it is dealt with upon completion is way too close to comfort, I may have worked at some point in the distant past for that particular boss.

</comment><comment><USER8> Am I right in thinking MapReduce seems to be going out of fashion somewhat as even Google themselves have moved towards using something they term Millwheel.

Which is a stream based processing system.

I have seen one paper on a streaming MapReduce solution though.

<comment><USER9> Wow. I worked on Millwheel as a summer intern the summer before last. At the time it was a team of about 11 people. I'm honestly pretty surprised to see this comment as I thought it was just a small internal research project.

Have you seen any references to it in the wild other than the Google Research paper?

<comment><USER8> Oh maybe I'm wrong, I really thought I saw something that said it was used for the index creation. I'm just having a look over the papers I've read.

They do definitely seem to have switched from MapReduce though at least - [http://www.theregister.co.uk/2010/09/09/google_caffeine_expl...](http://www.theregister.co.uk/2010/09/09/google_caffeine_explained/)

</comment></comment></comment><comment><USER10> This is a fantastic explanation. anyone got any favourite uses of this / other resources to share of similar clarity?

<comment><USER11> I'm a big fan of (and occasional poster to) Reddit's Explain Like I'm Five, where you can ask questions and people are supposed to answer them in simple, accessible terms (if not in the "Little Timmy" literal 5yo sort of speech)

You can find it at [http://www.reddit.com/r/explainlikeimfive](http://www.reddit.com/r/explainlikeimfive)

</comment></comment><comment><USER12> So this is essentially analogous to division of labour efficiencies. Or am I missing something?

<comment><USER13> It's more a technique/architecture for parallelizing highly parallelizable tasks.

</comment></comment><comment><USER14> The many typos of the text make it almost difficult to read...

</comment><comment><USER15> Great explanation, quite cheeky as well :)

</comment><comment><USER16> At first I thought you were making fun of the CEO with the misspellings. Then I continued reading and realized you just don't use spell check. ;)

Interesting article, thanks.</comment>


Uber Expands Driverless-Car Push with Deal for 24,000 Volvos - <AUTHOR> https://www.bloomberg.com/news/articles/2017-11-20/uber-steps-up-driverless-cars-push-with-deal-for-24-000-volvos <comment><USER2> Extensive discussion a few days ago: [https://news.ycombinator.com/item?id=15741019](https://news.ycombinator.com/item?id=15741019)

</comment><comment><USER3> I'm not in Pittsburgh or any of the places where people are taking rides in Uber's autonomous test vehicles, but from a few YouTube videos it appears they can't get more than a few blocks in urban traffic without needing human intervention. They've been at it for about 2.5 years now, not including the work that was inherited from the CMU robotics department.

I think if a company can program and train an autonomous vehicle to reliably go 5 or 10 miles in city traffic, then it's an indicator they've got the genius level problems solved. Safety validation is a whole other ball game, labour intensive but not super difficult.

A few companies have passed that benchmark. There are others who, in spite of being ambitious and well-capitalized, and having had a few years to incubate, appear to be painting by numbers, and don't seem to know what to do when the instruction manual runs out of instructions.

Talent is the big X factor in this race and not everybody's got it. Do you think Uber will be ready to receive another 24,000 Volvo's on top of the ~200 they've got somewhere in the 2019/2020 timeframe?

I'm not betting on it.

</comment><comment><USER4> To give some perspective about these numbers: currently there are 13,587 medaillons in NYC alone.

<comment><USER5> It's hard to compare the numbers though. Autonomous cars work 24/7, so you definitely need fewer to provide the same coverage as human taxis.

How efficient it will be though, we still don't know.

<comment><USER6> Medallion cabs (leased by the owner to other drivers) are generally worked all shifts that fares can be found.</comment></comment></comment>


High-School Dropouts and College Grads Are Moving to Very Different Places - <AUTHOR> http://www.citylab.com/work/2014/06/high-school-dropouts-and-college-grads-are-moving-to-very-different-places/372065/?utm_source=digg&utm_medium=facebook <comment><USER2> This is a very interesting topic, but unfortunately the information is marred by a very poor presentation.

Is that really the best way he could think of to present that data?

Both the chart and the map are virtually unreadable if you want to get an idea of the movement patterns in relation to education.

And it doesn't help that it's not scaled by the size of the cities, instead showing the absolute number of the change.

<comment><USER3> > Both the chart and the map are virtually unreadable if you want to get an > idea of the movement patterns in relation to education.

I think this map does a fine job of showing movement patterns in relation to education:

[http://cdn.theatlantic.com/newsroom/img/posts/2014/06/Migrat...](http://cdn.theatlantic.com/newsroom/img/posts/2014/06/Migration_by_Education_Metro_Chart/c908bc7ed.jpg)

<comment><USER2> > I think this map does a fine job of showing movement patterns in relation to > education

It most definitely does not. It does a mediocre job of showing movement patterns, and a terrible job of relating them to education.

To show movement patterns it needs to show relative change, not absolute change.

To show education changes it needs a completely different format. (And that's not a map.)

</comment></comment></comment><comment><USER4> This seems horribly flawed, it's counting students moving out; all of the large "university cities" are negative.

</comment><comment><USER5> I really question their methods. The Boston area for example has exploded with biotech and finance companies over the last 10-15 years, and high tech and big pharma have moved in as well more recently. People are also constantly complaining about lack of affordable housing, which would lead me to believe that lesser educated people are being priced out of the market and are likely leaving, not coming in droves.

Their findings also very conveniently align with the overall views of the Atlantic.

</comment><comment><USER6> That seems like a staggering amount of people leaving New York.

<comment><USER7> There are a few things in the chart that just seem... odd. For example, it says that Boston is losing people (EXCEPT for less than high school graduates) to almost the same degree as Detroit is. That just doesn't seem right to me whether it's the Biotech buildings going up all over Cambridge or the real estate prices which I think I can safely assume are a lot higher than Detroit's. (Not picking on Detroit but for those who may not be as familiar with US cities, it's pretty much the poster child for urban decay right now.)

<comment><USER8> Not helping: I think they've done an exceptionally poor job of clarifying how they defined the metropolitan areas. For example, the label for the data in the Boston area (lifted off the map, which was the only place I could find the slightest mention) is "Boston-Cambridge-Quincy, MA-NH". Grouping MA and NH?! Conversely, Riverside and Los Angeles are separated despite covering a similar geographic range. I'd love to see the geographic regions in this study shown as polygons on a map, along with some sense of the total population per region.

<comment><USER9> They did an exceptionally poor job of defining metro areas. Separating Greenville and Spartanburg SC is dubious on its own but defining "Greenville" as the unimaginably small city plus the two smallest suburbs is a bit ludicrous. I know several companies that have individually relocated more employees to the region than this map credits for the whole metro area.

South Carolina has some weird outliers in terms of city limits and Greenville is one of them. The city itself is only 26.1 square miles and is mostly commercially zoned.

</comment></comment></comment></comment><comment><USER10> I'm curious why Los Angeles has an increase in Bachelor degrees but a significant decrease in levels above and below.

The article doesn't address that, only noting:

> [...] immigrants continue to flow into places like New York and Los Angeles. > But these places are seeing a net loss of Americans of all education levels.

> San Francisco, Los Angeles, Washington, D.C., and Miami all saw their ranks > of educated residents grow and less educated residents shrink.

<comment> mkr-hn Cost of living would be my guess.

</comment></comment><comment><USER11> This map is useless. It shows net domestic migration, but has no information on international arrivals.

New York is growing even as the map says it's shrinking because it's the number one destination of foreign immigrants. We'd need to know a lot about foreign migration levels and education to make the kind of conclusions people are proposing from this map.

</comment><comment><USER12> What a horrible chart

[http://cdn.theatlantic.com/newsroom/img/posts/2014/06/Migrat...](http://cdn.theatlantic.com/newsroom/img/posts/2014/06/Migration_by_Education_Metro_Chart/c908bc7ed.jpg)

Three shades of blue, thick white borders around bars, I can barely see the colors.

</comment><comment><USER13> Hmm. Separating Los Angeles and Riverside seemed pretty strange to me. I mean, yes, they're 60 miles apart, but in the LA basin, people commute that far all the time.

<comment><USER14> They are probably using MSA instead of PSA: [http://en.wikipedia.org/wiki/List_of_primary_statistical_are...](http://en.wikipedia.org/wiki/List_of_primary_statistical_areas_of_the_United_States) .

</comment></comment><comment><USER15> The interactive visualization is focused on net migration, but the article is focused on _differences_ in migration based on education.

Is there a place I can get the raw data?

</comment><comment><USER16> This really just seems to imply that people are moving south...

<comment><USER17> More accurately: people are fleeing the North East.

<comment><USER18> If you look at a map of population density, the North East, as a region, has the highest density. (LA is probably similar, but it's a much smaller area.)

You can look at this two ways: one is pure physics... particles in a high pressure zone tend to move towards a low pressure zone. In human terms, people can be moving from more-crowded to less-crowded. That may not be the only reason, but the density gradient is high enough that this could be a significant factor that clouds other factors.

The other way to look at it is that there are simply more people in the North East who are moving at any given time, and it's likely that there are more people moving out of the region at any time than there are people moving out of less dense regions. That can make it look like a significant flight from the NE, when really it's a random bias effect of the relative densities.

<comment><USER19> In 30 years there will be nowhere left to run. If current rates of immigration continue we're looking at over 400 million crammed in. Everywhere will be congested and expensive.

<comment><USER20> 400 million in a country the size of the US is not exactly "crammed in".

There are plenty of congested and expensive places, mostly big coastal cities. If your view of "everywhere" only includes those places, then it will seem like "everywhere" is congested and expensive. But if you ever drive across Wyoming, Texas, Montana, or Kansas, you'll see plenty of wiiiiiiiide open space too. $50k will get you a decent house in small-town Kansas.

<comment><USER19> The wide open places where there is no major city lack major cities because they are unsuitable sites. There isn't enough fresh water and/or the energy demands of logistics are unfeasible. Newsflash: we are not building brand new urban areas, and we won't be. People will continue to increase congestion and sprawl at the existing metropolitan areas. The ecology and quality of life will continue to degrade.

<comment><USER21> There is plenty of fresh water and infrastructure in Kansas...it is not Nevada! We can probably double the number of cities in the USA no problem; we have the resources, we just lack the people.

The USA is not China, where what you say is actually true (lack of arable land, resources, overcrowded cities, not much ability to build new cities because all the good space is already taken).</comment></comment></comment></comment></comment></comment></comment>


Leaving "gifts" behind on dedicated server hosts - <AUTHOR> https://rachelbythebay.com/w/2018/04/14/flash/ <comment><USER2> > I don't have an easy solution for this one. Building your own box and doing > the co-lo thing is just far too annoying for a lot of people.

VPS on Vultr: $2.50/month.

Additional IP address on Vultr: $2.00/month.

Forwarding additional routable IP address to dynamically addressed server with a 1-line IPSec config on each end: $0.00.

You can of course use OpenVPN or Wireguard instead of IPsec, but it's a little more complicated as you need to forward the IP across a tunnel with two known end points[1], which you obviously don't yet have. To get the two known end points you'd need to establish a privately addressed[2] VPN plus configure explicit routes to forward the fixed IP over the VPN. With IPSec the initiator (i.e. the box lacking a fixed external address) can dynamically establish a tunnel for the additional IP _directly_ , without the indirection.

It's one case (and perhaps the only typical case) where IPSec's flow-based rather than route-based configuration policies are clearly beneficial. Otherwise IPSec's flow-based policies are an endless source of confusion as most people and most systems' network stacks are primarily route based.

[1] Because they use routed-based configuration policies which require, a priori, having a known end point to route _to_ , as opposed to IPSec's flow- based policies which can capture a packet and forward to whatever peer (and whatever IP address) has been most recently authorized (by IKE) to receive it.

[2] Unless you have a whole routable subnet to spare, in which case you wouldn't even be facing the hosting dilemma.</comment>


The Little Book of Semaphores - <AUTHOR> http://greenteapress.com/semaphores/

<comment><AUTHOR> This is a brilliant free textbook about synchronization for concurrent programming. It doesn't only present the essential knowledges, problems and solutions, but also the underlying patterns that are useful for synchronization problems.

</comment><comment><USER2> Interesting, I was just tackling semaphores on Windows this past month. The result was an open source class, written in VB6, that uses semaphores to communicate across the user boundary in Windows. (<http://www.vbforums.com/showthread.php?t=634635>)

<comment><USER3> What?!! VB6 is still alive?!!

</comment></comment><comment><USER4> Allen Downey writes great books. It's hard for me to overstate that.

</comment><comment><USER5> Thanks for the kind words about the book! If you are interested in this topic, there is a video of me giving a talk about it at greenteapress.com/semaphores. The thread simulator I demonstrate in the talk is available from allendowney.com/swampy. As always, comments are welcome.

</comment><comment><USER6> Downey's PDF is presented as a series of puzzles with hints and answers. It makes for an enjoyable few hours sharpening your concurrency skills. Covers much more ground than the "igloo book". Uses Python and C for examples -- much nicer than reading old-style Pascal code.

</comment><comment><USER7> Great material, I'm studying operating systems and this really helps me. It'd be great to find similar material about other OS topics(scheduling, I/O...).</comment>


Social Notifier – Slack notifications for Keywords on Reddit, Twitter (GPL) - <AUTHOR> https://github.com/chefconnie/social-notifier <comment><AUTHOR> Hi HN! Reddit has been a promising source of early users for us at chef Connie; for example a single response on a post with lift can easily generate 10+ signups, most of whom finish activation.

We didn't want to miss out on any action—showing up late to the conversation really dampens results!—so we whipped up a microservice to notify us of relevant posts.

Enough friends and founders have asked us to share; thought I would post it here to help you improve your startup or project's odds of success :)

Hope you like it! How can we make this easier to install, or better fit your inbound marketing practices?</comment>


jade: a node.js template engine - <AUTHOR> http://jade-lang.com/

<comment><USER2> If you're using a template engine to render UI on the client side, it's helpful to have a rough idea of the relative performance:

<http://jsperf.com/dom-vs-innerhtml-based-templating/45>

Here's a screenshot of the results: <http://cl.ly/42CP>

It can make a difference, because UI-rendering can often be _the_ performance bottleneck in a JS web app ... especially in older browsers like Internet Explorer.

Although, perhaps it isn't a problem at all -- looking at the source, it doesn't appear as though Jade supports IE:

[https://github.com/visionmedia/jade/blob/master/lib/jade.js#...](https://github.com/visionmedia/jade/blob/master/lib/jade.js#L89)

<comment><USER3> Hm, what about <https://github.com/jquery/jquery-tmpl>, jquerys official templating plugin?

I use this one with a js-app in conjunction with knockout.js and a few others.

So performance of this one would be interesting, too.

Btw: The actual benchmark is really compelling.

<comment><USER2> JSPerf.com is like a wiki -- so by all means, please edit the page and add a "jquery-tmpl" test.

<comment><USER3> Yes, i know. I'am just very tired. But anyway, i've added it now.

<http://jsperf.com/dom-vs-innerhtml-based-templating/46>

It performs really poor..

<comment><USER2> Oh my goodness -- that's really fascinating. I had no idea that the new jQuery-tmpl templates were that egregiously slow. (Nearly 100x slower, for those who don't want to run the tests.) Thanks for adding 'em to the list.

<comment><USER3> No problem after all. :) It's really horrible. But it's not that bad for me. knockout.js does a good job with partial rendering via databinding (ie. only rerender what really changed or is added).

Also it's just beta 1, lets see what happens next.

But adding Eco Template as engine for knockout.js would be a great idea, i think...

</comment></comment></comment></comment></comment></comment><comment><USER4> Pros:

\- Clean, nice HAML-like syntax. Expect less typing and easier reading.

\- Extensible. It's extremly easy to provide your own filters, doctypes.

\- Extremely cool ability to hook the compiler and manipulate the result tree. See CSRF example — it's just _awesome_.

\- Command-line tool to compile templates. A must for static mock-ups.

\- High quality code. I'd really wish I could write code as pretty as that.

Cons:

\- No template inheritance. And no fragment inclusion (unless you write your own filter or extend the compiler to support some "jade:include" attribute).

\- Parsing and rendering is synchronous. So expect Node to block while doing jade.render().

\- Filters are synchronous, too. So are iterators (therefore, forget your idea to write model, which lazily fetches data from DB on demand).

\- No client-side support. Not like this is important, but this would be neat, considering it's JS after all.

Jade is awesome, but synchronous code in asynchronous world somehow feels wrong.

<comment><USER4> Correction: I was wrong on lack of client-side support - it should work, except for IE, which don't support getters.

</comment></comment><comment><USER5> Yeah, jade pretty much rocks. (I'm a fan of haml too) The nodejs ecosystem is maturing a whole lot.

Express+jade=win:

<http://expressjs.com>

<comment><USER6> Do you have any experience with node-router? I'm new to Node.js, and I started using it, but express looks better documented at least. I can't figure out static files with node-router, but there's documentation of how to do it with express.

</comment></comment><comment><USER7> I'm interested as to the anecdotal benefits of using a templating engine like jade or haml. I much prefer the longhand way of embedding code into handcrafted HTML, but then I date back to the early PHP and ASP days and use Django heavily at the moment. Can't quite wrap my head around this mix of generated tags and logic.

<comment><USER8> \- faster to write

\- less thinking

\- easier to modify and understand

I've been writing longhand for 10 years, and it was a no brainer. Just download it and try it on a project for a day. If you are not sold, you can always go back (since it just generates regular html).

I also highly recommend sass over css. The benefits of sass over css is much greater than the benefits of haml over html.

<comment><USER9> I agree about sass.

Haml is Much easier to diff/ merge

</comment></comment></comment><comment><USER10> Check out <https://github.com/mauricemach/coffeekup> too: similarly spare and elegant markup, and nothing but CoffeeScript. (Especially ace if you're using CoffeeScript throughout the stack. And why wouldn't you be?)

</comment><comment><USER11> jade looks interesting, had not heard of it before and will be looking closely at it for sure.

I'd like to also recommend Nickolay Platonov's little-known but powerful JS templating library "Shotenjin":

<https://github.com/SamuraiJack/Shotenjin>

Shotenjin is built with Joose v3, which also rocks:

<https://github.com/Joose/Joose>

</comment><comment><USER12> What is the benefit of this style of templating engine compared to for example pure (<http://beebole.com/pure/>) where you write your html in html, keeping it free from logic and keeping it in a way anyone with html skills can understand?

</comment><comment><USER6> What are the benefits of using jade over haml-js?

<comment><USER13> I'm curious, too. The syntax looks very similar to HAML but isn't HAML. Wouldn't it make more sense to adopt HAML itself instead of inventing a dialect?

<comment><USER9> Filters, AST manipulation/introspection

<comment><USER13> How do these relate to the syntax?

</comment></comment></comment></comment><comment><USER3> The page is really pretty looking and simple. :)

Very nice.

</comment><comment><USER14> Old news

<comment><USER15> Right.</comment></comment>


Medium.com is blocked in Egypt - <AUTHOR> Source: I live in Cairo <comment><USER2> i discovered it today. So sad. what is in medium that scared them.

</comment><comment><USER3> How is it blocked. Explicit message? Or just won't resolve?

<comment><AUTHOR> > This page ([https://medium.com/](https://medium.com/)) is currently offline. > However, because the site uses Cloudflare's Always Online™ technology you > can continue to surf a snapshot of the site. We will keep checking in the > background and, as soon as the site comes back, you will automatically be > served the live version. Always Online™ is powered by Cloudflare | Hide this > Alert

If you check news regarding Egypt, there have been several news sites and publications not accessible from the country.</comment></comment>


Dow Drops Below 7,000 for the First Time Since '97  - <AUTHOR> http://www.nytimes.com/2009/03/03/business/worldbusiness/03markets.html?hp

<comment><USER2> This is important, but more shocking is the fact that we've lost almost 20% of the DJIA since the first of the year.

Without getting too partisan, I think that the theory that "we spent too much money on crap and got into this mess; let's raise taxes and spend even more money on crap to get us out" is not the best game plan I've ever heard.</comment>


Ripple20 TCP/IP vulnerabilities will haunt the IoT landscape for years to come - <AUTHOR> https://www.zdnet.com/article/ripple20-vulnerabilities-will-haunt-the-iot-landscape-for-years-to-come/ <comment><AUTHOR> Ripple20 site

[https://www.jsof-tech.com/ripple20/](https://www.jsof-tech.com/ripple20/)

On HN

[https://news.ycombinator.com/item?id=23538867](https://news.ycombinator.com/item?id=23538867)

Original title lacked context. The vulnerabilities are in a commonly-used TCP/IP library first released ~1997. Original title was:

Ripple20 vulnerabilities will haunt the IoT landscape for years to come</comment>


Citus' Replication Model: Today and Tomorrow - <AUTHOR> https://www.citusdata.com/blog/2016/12/15/citus-replication-model-today-and-tomorrow/ <comment><USER2> Somewhat tangential, but I'm kind of sad that not much more was done with pg_paxos[1].

Group Replication[2] just made it into MySQL 5.7.17 and is GA; it uses a variant of Paxos to commit transactions. Even though most people will probably do fine with streaming replication or semisync, it would be nice to have support in Postgres for use cases that need an even stronger level of consistency.

1: [https://github.com/citusdata/pg_paxos](https://github.com/citusdata/pg_paxos)

2: [http://mysqlhighavailability.com/mysql-group-replication- a-q...](http://mysqlhighavailability.com/mysql-group-replication-a-quick- start-guide/)

</comment><comment><USER3> What would be the advantage of Citus over AWS Aurora or AWS RDS?

<comment><USER4> Craig from Citus here, RDS is great if you're data fits and performs well on a single node (if your data stays under ~ 100 GB there is really no reason to think about sharding and distributing your data). Whether you need to scale out depends heavily on your workload, some applications are just fine to scale storage, others need to scale memory and compute. Citus in that sense is a bit different from RDS as well as Aurora as we extend Postgres to distribute your data across multiple nodes. Thus, when you add a node to the cluster you get an increase in storage, memory, and cores that are doing work for you.

<comment><USER5> RDS is performant well above 100 GB. Not to say citus isn't a good product, but to imply sharing is required anywhere near the 100 GB threshold is a bit disengenous.

Note if using aurora you also get an increase in memory and cores if using multiple nodes...

<comment><USER6> I believe he was suggesting a lower bound. ==> If you're over 100GB you should probably have a discussion around future plans and what you'll need to do to scale to 10 times that while keeping response times etc.

</comment></comment></comment></comment><comment><USER7> I've been interested in PG sharding for a few months. I mostly hear about this citus extension, but what about postgres-XL? Does any one has had any experience to compare against citus?

<comment><USER8> XL has too many moving parts (coordinator + data node + gtm + gtm slaves) and no (auto) high availability</comment></comment>


Oil Shell: Success with Aboriginal, Alpine, and Debian Linux - <AUTHOR> http://www.oilshell.org/blog/2018/01/15.html <comment><USER2> Someone should push a patch to upstream bash that will make any script longer than 50 lines abort. If you're building something that takes 2500 lines of shell script, you're using the wrong tool for the job. You're trying to make a program, but in a syntax (I was going to say language, but shell scripts aren't a programming language) that is utterly unsuited for anything like it.

A shell script has a very simple function: execute a number of tedious but common commands. That's it. Unfortunately someone decided they wanted control flow, so they wrote the horrifying [ and [[ programs, which I still consider to be a crime against humanity. Enter decades of write-once-read-never scripts that run with abysmal efficiency, kill maintainability, and neuter innovation. And somehow the entire Linux ecosystem depends on it and now every distro has to ship a shell with cruft dating back to 1970, with probably as many hidden vulnerabilities. And now every shell that tries to position itself on the market has to implement the same quirks, bugs, and design flaws in order to even be considered.

Let shells be shells, let shell scripts be dumb as bricks, and please use python or even perl for the love of god if you're going to make a build system.

<comment><USER3> So much arrogance and negativity, so little evidence for the claims you make.

> A shell script has a very simple function: execute a number of tedious but > common commands. That's it.

And why is that? What will happen to me if I write more complicated shell scripts? The functionality is there and one can write very expressive and readable programs in shell. I would definitely recommend shell for writing long programs (for example various system administration and web backend tasks which do not require complex libraries). Preferably bash since it is the most common one.

> And somehow the entire Linux ecosystem depends on it and now every distro > has to ship a shell with cruft dating back to 1970

The 'somehow' has quite a simple rationale, it isn't something that should outrage you. The family of Linux-based OSes take inspiration and compatibility target in unix systems on purpose. Unix systems are primarily operated via shell.

The current standard of shell may be an old idea from 70's with some 'cruft', but what language does not have cruft? The shell has proven to be usable and worthy of continued use. The compatibility with the unix shell is a big part of the early success of GNU/Linux and majority of users need it.

> And now every shell that tries to position itself on the market has to > implement the same quirks, bugs, and design flaws in order to even be > considered.

I have no idea what you are talking about.

> please use python or even perl for the love of god if you're going to make a > build system

OK, so you think perl and python are better for making a build system. Have you made one?

<comment><USER4> > bash since it is the most common one.

Im pretty sure you meant to say "POSIX, because its rules are supported by multiple shells, and you can't depend on bash being available or a recent version on some systems".

<comment><USER3> Actually, I meant bash, that is, if one works solely with Linux systems. Bash has some very useful features and is the default on common Linux systems. Those are not POSIX. It was frozen in time long ago and is very limiting, do not wear that straightjacket if you do not have to.

For commercial unices or bsd's bash could be hard to use and using POSIX shell may make more sense.

<comment><USER4> From my experience, the extras Bash give you are likely to be bigger hints that it _is_ time to move to a more appropriate language.

I'm definitely pro on shell scripts, but I'm also willing to use a different language when posix SH isn't going to cut it.

</comment></comment></comment></comment></comment><comment><USER5> Here's what the plan seems to be from reading the blog and the README:

1\. Re-implement Bash and similar shells in a modern programming environment with an eye to extensibility

2\. Make good debugging tools because this is now easier because (1).

3\. Create a new language that extends Bash, similar to how ES6 extends ES5, for a gentle migration of large shell scripts to a safer language

What, other than static parsing, should this endgame language offer? Where does it fall, on the gamut from Bash to Haskell? We already have quite a few languages that offer a souped-up scripting experience.

When my bash programs become too long, I usually reach for Ruby, which has convenient back-ticks syntax for shelling out, and many convenience methods on its built-in types for mashing strings and such. But like Bash, too much ruby eventually becomes an unmaintainable mess without strict standards enforcement. What will Oil offer for me, over Ruby?

Here's how I'd order existing languages on a scale from Bash to Haskell:

1\. Bash with `set -e`

2\. Perl

3\. TCL (has declared arguments, after all...)

4\. Ruby

5\. Python

6\. Golang

7\. Java

8\. C++

9\. Ocaml

10\. Haskell

<comment><AUTHOR> Good questions. It's clear from this comment thread that I need to explain Oil better on the blog (which I mentioned in the conclusion), but I'll respond here briefly.

I somewhat agree with your spectrum of strictness, but the other dimension is "how suited is this language for shell-like problems?".

C++ is strict, but obviously not good for writing "shell scripts" in.

Oil will be somewhere around Python in terms of strictness, but at least as suitable as bash for shell-like problems (of course). The goal is for it to be more suitable, but I haven't gotten there yet.

As far as what it offers, that is scattered over the blog, but this tag might give an idea:

[http://www.oilshell.org/blog/tags.html?tag=oil- language#oil-...](http://www.oilshell.org/blog/tags.html?tag=oil-language#oil- language)

As a concrete example, Oil will be based more around arrays of strings than flat strings. The "Thirteen Awkward Ways..." post hints at that. FWIW, the Ion shell, part of Redox OS, was influenced by this way of thinking.

Also, I need to write a blog post entitled "Python Is Not an Acceptable Shell". There was a nice blog post that translated shell to Python that inadvertently proved this point.

I'll keep your questions in mind when writing future posts explaining the project.

<comment><USER2> If you're going to solve the problem of shell scripting, one particular itch that I have is that shell scripts, or at least the sufficiently complex ones, are often strongly dependent on availability of local executables, sometimes even specific implementations or versions.

I had a shell script on my desktop that would automagically extract any archive I threw at it. Nice. So when I was working on android through a shell, I wanted the same convenience and so I scp'd the script onto my phone. It wouldn't run. Only worked with GNU tar, as opposed to any other tar, like bsd tar or busybox's.

Having a language that provides system-independent abstractions of ls, tar, top, or the other way, that clearly indicates upon which binaries it depends, would greatly improve script usability.

It'd be nice if running an oil script would automatically warn me that I need GNU tar >= version x.xx.

</comment></comment></comment><comment><USER6> Sometimes - perhaps often - you are in situations where you have no control over the shell, in these cases writing "portable" shell scripts is helpful.

I have been enjoying "Beginning Portable Shell Scripting"[0] by Peter Seebach for this very reason.

[0][https://www.apress.com/us/book/9781430210436](https://www.apress.com/us/book/9781430210436)

<comment><USER7>
      $ cat run-bash-script.sh
      #!/bin/sh
      which bash &>/dev/null && exec bash "$@"
      source /etc/os-release
      case "$ID" in
        debian) apt install bash || exit 1 ;;
        redhat|suse) yum install bash || exit 1 ;;
        arch) pacman -S bash || exit 1 ;;
        alpine) apk add bash || exit 1 ;;
      esac
      exec bash "$@"

I don't know how to detect and handle the BSDs etc., but you get the idea. ;)

<comment><USER8> Now go try that on AIX boxes, in banks, where you don't get root/sudo.

<comment><USER9> You also don't get internet access, in case a bright bulb tries to go "curl ...".

Though in many of these cases I'd just advise leaving the premises unless the salary is stellar (or there are other considerations such as family, etc).

<comment><USER8> On the DevOps side of things (Contracting in London) the day rate at banks is about 1.5x everywhere else which can be nice. Just as long as you're happy never getting anything done ever.

</comment></comment></comment></comment></comment><comment><USER10> Would be interesting to test this out on SourceMage[0], seeing as how its package manager is written entirely in bash.

[0] [https://sourcemage.org/Intro](https://sourcemage.org/Intro)

<comment><AUTHOR> Interesting, I didn't know about SourceMage. It appears to be a source-based distro like Gentoo, and if it's package manager is written in bash, it's a perfect use case.

Since I have my hands full with the distros I'm using, I may not be able to try it for awhile, but I saved this page for further reading. I still think distros are somewhat "broken", so alternative approaches are interesting to me. (Just one problem off the top of my head: packages are old, distros can't keep up with PyPI, npm, CRAN, etc.)

If you know the SourceMage code, please try it with OSH :) Or if you know its developers, they might want to hear about a cleaner shell that's compatible with bash (although it's nascent)

I spent some time last fall implementing some constructs that the Nix package manager uses, even though I don't use Nix. Nix uses bash heavily as well.

<comment><USER11> Hey, love your project's ambition but I think it's unhelpful if you say things like, " I still think distros are somewhat "broken", so alternative approaches are interesting to me." (Think of all the work you've put into your shell project, now think of how much integration work must be done to keep a distro going.)

That said, I think you've highlighted _the_ problem that _all_ distros face that would get me to change distros if someone solved it. That is to say, "(Just one problem off the top of my head: packages are old, distros can't keep up with PyPI, npm, CRAN, etc.)" That is a doozy of a problem.

One last thing–you mention four things:

      The trap builtin is unimplemented;

      alias is also unimplemented.

      set -h / hashall is a stub that does nothing.

      OSH builds are in a sense "shallow".

Is there some way to get OSH to be un-shallow? For instance if I've invoked a shell script with OSH I'd probably like any shell script dialect that it can handle to have OSH invoked as well. Also, surely it would help you out with debugging OSH because you'd immediately way more lines of shell script!

Implementing `trap', `alias', `set -h' seem like no-brainers prior to 0.4

<comment><AUTHOR> Hm I probably could have said "distros are suboptimal" and it would have meant essentially the same thing. But I wasn't disparaging anyone's work, if that's your concern. "Debian is broken" would be closer to that, but I didn't say that. :)

But yes I do think distros are doing the best they can with the raw material they have to work with (upstream sources, autoconf, etc.) I have some ideas for a distro but I think I have my hands full with shell, and it is a big problem because you can't do it by yourself. You need an army to help you maintain packages to some standard!

\-----

For the shallow problem, I'll probably implement something like set -o hijack- shebang. It's relatively easy for OSH to open scripts it runs and check for a shebang that looks like a shell, and then prepend "osh" to the argv array.

It should really only be used for debugging OSH, because it wouldn't be good practice to "lie" about your shebangs. That logic is fundamental and baked into the kernel!

"trap" has come up a lot, although I'm not sure if it will be in the 0.4 release. I'm making releases pretty often -- every 6 weeks or so. "alias" is interesting because it sits between the lexer and the parser, and no other shell feature is like that.

<comment><USER11> Or symlinks to OSH of the various shells it can emulate?

<comment><AUTHOR> Yes that's true, I should add the ability to symlink /bin/bash or ~/bin/bash to the oil binary and have it work. It actually works in this "busybox" style already, but it only supports a few names like "osh" and "sh".

I didn't mention that because it's not a good idea yet to make OSH the default shell on any system :)

<comment><USER11> But for your test suite and testing OS build systems to wring out incompatibilities and bugs it might work a treat (if it detects certain environment variables).

Sounds great! You put so much effort into your blog posts, it's impressive…

</comment></comment></comment></comment></comment></comment></comment><comment><USER12> You should integrate with Docker Linuxkit

[https://github.com/linuxkit/linuxkit/issues/161](https://github.com/linuxkit/linuxkit/issues/161)

</comment><comment><USER13> Hmm, relying on Python 2 for a program that's still in early stages and is supposed to have a long lifespan?

<comment><AUTHOR> I plan to cut the dependency on Python; the post called "the riskiest part of the project" which I linked describes that.

[http://www.oilshell.org/blog/2017/04/08.html](http://www.oilshell.org/blog/2017/04/08.html)

There are some detail here in these posts:

[http://www.oilshell.org/blog/tags.html?tag=opy#opy](http://www.oilshell.org/blog/tags.html?tag=opy#opy)

FWIW, Oil was in Python 3 at one point! But I ported it back to Python 2. There were a number of reasons, but unicode handling is one of them.

See this comment:

[https://www.reddit.com/r/ProgrammingLanguages/comments/7elxl...](https://www.reddit.com/r/ProgrammingLanguages/comments/7elxlv/python_3_and_firefox_57_an_observation/dq6ixqu/)

Summary: The shell deals with strings from file systems, and file systems inherently have no encoding. So Python 3's model of unicode doesn't help with such programs. It just makes things more awkward.

<comment><USER14> Can you just use binary strings?

<comment><AUTHOR> It's possible (see the reddit comment), but there's no advantage to doing so.</comment></comment></comment></comment>


Ask HN: Will I get in trouble with my business name? - <AUTHOR> Dear HN
after I have started a business with a name I'm very happy with I found out that a (much bigger) company exist with a similar name.
The twist is this: they use the plural of my company name.
Fictitious example:
They: "BestProgrammers". IT outsourcing and development
Mine: "BestProgrammer". IT education.
They are a development shop / outsourcing company, I'm in the IT education space, so there shouldn't be any confusion. However, sometimes I receive CVs from job applicants who obviously intended to reach the other company.
Can I get in trouble? I have already invested in my name, but I'm wondering if I should change now or face bigger costs later on (I'm sure they are not aware of me yet)
Any tips appreciated. <comment><USER2> We can't answer accurately without knowing the name you're using and which jurisdictions each company operates in. Even then, it's just speculation unless it goes to court.

That said, don't get legal advice from internet strangers. A lawyer can do a name search for you for less than $200. You should start with a name search in the future.

From the insufficient details and with the caveat that I'm not a lawyer, I don't see any way you can use this name.

</comment><comment><USER3> To me you do work in the same industry (IT) - just different sub-disciplines; so I can also see it becoming a problem for you down the road.

There is a good chance that they could successfully challenge a trademark application; not to mention your domain name via ICANN.

</comment><comment><USER4> I had a similar situation some years back and decided it wasn't worth the potential legal battle...

They: Experts Exchange (IT technical help)

Mine: Expert Sex Change (For people seeking reliable resources for transgender surgery)

</comment><comment> tips-from-cosby Are you costing them money? If so, they may try to sue for damages. Otherwise, it won't make business sense to sue.

</comment><comment><USER5> Don't see any reason for trouble along as your users ain't going to the other site.</comment>


Claims on contested holdings in Cuba - <AUTHOR> http://www.slate.com/articles/news_and_politics/foreigners/2015/11/u_s_claims_in_cuba_the_strange_battle_that_is_exciting_speculators_and_could.html <comment><USER2> Wow, this guy's bias is really showing.

 _Young Cubans—well-educated and healthy, thanks to the communist system—comprise an attractive workforce._

 _The scent of predatory capitalism wafted through the air._

It's amazing how some people will completely ignore a brutal dictatorship if other things align with their agenda.

<comment><USER3> Hitchens talks in "Letters to a Young Contrarian" about being a young communist, and actually working with some of those forming the government in Cuba.

They said, "our revolution will be different, our people will be free. We will even allow satire, on all but one topic."

Hitchens: "Oh? What topic is that?"

Communists: "Why, the government, of course!"

Thus began his disillusionment...

<comment><USER4> A communist government is a bit like an anarchist government, innit?</comment></comment></comment>


Why China's wildlife ban is not enough to stop another virus outbreak - <AUTHOR> https://www.latimes.com/world-nation/story/2020-04-02/why-china-wildlife-ban-not-enough-stop-coronavirus-outbreak <comment><USER2> Stopping virus outbreaks in a global economy is a loser's mindset, it fails the moment something gets through the safety net and quickly becomes a matter of 'when' not 'if'. A better plan would be to already have medical stockpiles in place coupled with strategies for rapidly identifying and overproducing vital technologies to aid the sick (ventilators here) and for protecting personnel who have to interact with them (masks, sanitary substances, etc).

Headlines about slowing the spread are only important because the nations of the world are facing supply shortages, there is no outright stopping the spread at this point and there was never going to be so long as a vaccine is absent.</comment>


What Prominent Roboticists Think Google Should Do with Its Robots - <AUTHOR> http://spectrum.ieee.org/automaton/robotics/robotics-hardware/what-google-should-do-with-its-robots#.VvMLpmu3Gb4.reddit <comment><USER2> I think Robin Murphy, Texas A&M Professor, has the right suggestion for Google. No idea if Google will actually do it.

> If I were a large company with deep pockets, I would accept that robotics is > what is called a 'formative' market and just like shopping on the web, it > will take a decade or so to ramp up. Robots are innovations that do not > directly replace people and thus it is hard for people to imagine how to use > them—thus the market is formative. The theory of diffusion of innovation > indicates that potential end-users, not developers, need to experiment with > applications to see what works (and not just physically but human-robot > interaction as well).

> However, robots have to be extremely reliable and the software customizable > enough to allow the end-users to tinker and adapt the robots, so that the > end-user can find the 'killer app.' Essentially, you can crowdsource the > task of finding the best, most profitable uses of robots, but only if you > have good enough robots that can be reconfigure easily and the software is > open enough. I would concentrate on creating generic ground, aerial, and > marine robots with customizable software and user interfaces in order to > enable their regular employees (and customers) to figure out the best uses.

> In order to make sure the development was pushing towards the most reliable, > reconfigurable, and open robots possible, I suggest the developers focus on > the emergency response domain. Disasters are the most demanding application > and come in so many variations that it is a constant test of technology and > users. Imagine the wealth of ideas and feedback from fire rescue teams, the > Coast Guard, and the American Red Cross, just to name a few! Focusing on > emergency management would also have a positive societal benefit.

<comment><USER3> Xoogler here. There is zero chance that Google would get into this market. All the internal talk lately is about "only creating businesses at Google scale" which means $billions in potential revenue, or GTFO.

<comment><USER4> Yes. And thus Google treads softly down the path to becoming a defense contractor.

<comment><USER5> That is the only path not available to the dominating robotics countries of Germany, Japan and Korea who are literally under the gun not to develop such arms and weapons (without approval of the US).

<comment><USER6> I don't believe you. Virtually maybe but literally? Even if virtual I still do not believe you. Sounds like hyperbole.

<comment><USER5> Literally the US can dictate what kind arms they can develop. It is required they comply to receive consideration for US military aid and to remain under the US nuclear umbrella (from other nuclear armed countries like China, India, Russia, etc...).

<comment><USER7> Those countries also don't want to spend too much money on their military. So they can't develop nukes, their citizens don't want that. We actually want them to spend more, not less, like Japan. South Korea actually built automatic turret guns that shoot without human control. So I call BS on the evil us wants to stop them from building robots.

</comment></comment></comment></comment></comment></comment></comment><comment><USER8> Hardly any of the problems they suggest robots can solve are problems Google faces though. Last 10 metres delivery, supply chain control and management, disaster relief work, oil and gas, home assistants - particularly for seniors. There are too many comments in there to address all of them but here's a few:

"If anyone could crack the indoor social robot market that is seeing such high interest right now in both the consumer and commercial spaces, it would be them"

Why on earth would Google care about the indoor social robot market?

"If I were a large company with deep pockets, ... it will take a decade or so to ramp up"

It's always easy to say how other people should spend their money, and just because a company is one of the few that can do a thing, it doesn't follow that they should do it. A lot of the speculation seems to be of the "if I had a billion dollars, I would..." wish fulfilment sort.

I can see the point of self driving cars. They were doing street view anyway and that's a pretty obvious application for autonomous vehicles. But they're not actually a manufacturing or supply chain company. Their foray into that with Motorola was an expensive mistake. I just don't see that a lot of the other robotics stuff they're doing is relevant to their business. That doesn't mean nobody should be investing in this. Sure there are applications down the line, but are they relevant to Google?

The only one I can think of is data centre build out and maintenance. But Google aren't near the scale to support an entire industrial robot development and manufacturing industry just for a handful of data centres.

<comment><USER9> Having said that, are they profitable problems to solve? It doesn't really matter if they're things vital for google now, but if they're profitable and google are well placed to profit from them then it makes sense to do surely.

> Why on earth would Google care about the indoor social robot market?

Why on earth would google care about the home heating market?

</comment></comment><comment><USER10> From the article: _" What are those guys up to?"_

The answer seems to be "not very much". Google bought all those robotics companies but didn't get them to work together. All the companies are still in their original locations. Nobody has a product. Even Bot and Dolly, which had a product, no longer seems to be selling it. Boston Dynamics is being sold because they don't play well with others.

The whole robotics exercise seems to have been a hobby of Andy Rubin, and when he left, nobody had a clue what to do. Google/Alphabet, through mismanagement, may have added negative value to the robotics industry. Google's secrecy here seems to be more about hiding management failure than protecting intellectual property.

Martin Buehler, the brains behind BigDog, is now at Disney, and I expect we'll see more mobile robots there. Disney has wanted this for years; around 2000, they hired Danny Hillis to work on theme park robots. They got some improvements to their anamatronics, and a dino robot that pulls a cart but gets its balance from the cart wheels.

The next killer app in robotics is probably really good bin-picking. Kiva's mobile platforms can bring the shelf to the picker, but a human still takes the thing out of one bin and puts it into another. Amazon is working on solutions to that.

<comment><USER10> After reading "Google parent Alphabet ushers in 'fiscal discipline era'"[1], it's likely that Google/Alphabet will effectively be out of robotics shortly, after trashing most of the R&D startups in the field. Nobody they acquired is 2 years from making big bucks. Workers will be, as previously threatened, reallocated to other parts of the business. Probably related to ads; that's still 94% of revenue.

This is discouraging. It's the acquire-trash-dump thing Paul Allen was notorious for.

[1] [https://news.ycombinator.com/item?id=11357131](https://news.ycombinator.com/item?id=11357131)

</comment></comment><comment><USER11> > 17 Prominent Roboticists Think Google Should Do with Its Robots

Apparently this includes having robots write titles for HN posts?

</comment><comment><USER12> > For autonomous deliveries, it's the last 10 meters that is the hard part.

Couldn't someone build a delivery box (like an american mail box) that could be mounted on your property, close to the curb, within reachable distance from a delivery truck.

The truck could stop, tell the 'amazon delivery box' to unlock and open. Then place items in it. There could be various different sized boxes, from small to large chest freezer type things. The box would have some electronics in it, a solar panel on top, it doesn't matter how expensive they are - you can rent them from Amazon or whoever.

This would then reduce all the complex variables of how to drop packages off at the destination.

<comment><USER13> This would be ridiculously useful for apartments, if you can find the space for it curbside. Large packages right now are delivered in one of two ways: 1) They leave it at the door. Risk of theft. 2) They leave it with the rent office, which is only open 9-5. Regular job? You have to either wait until Saturday, or you're screwed if your rent office isn't open Saturday.

I've thought in the past about trying to design a door door with a mail flap equivalent that works for really large packages, or something you could build into the wall next to a door to replace a coat closet that'd serve the same purpose. Moving it out to the curb and making it automation-capable sounds like an excellent proposal for this purpose.

<comment><USER14> You wouldn't even need one container per apartment/resident - just a reasonable number of various sized compartments. A keypad/pinpad or touch screen login would open the appropriate container for the customer. This is how Canada post handles parcel deliveries with their 'super mailboxes' (without the keypad part as they do have a small box for each unit where a key is dropped).

[edit] Authentication could be handled in a lot of different ways: QR code, RFID or other card/dongle/phone/internet based ways.

<comment><USER15> Like this you mean?

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

We have those in Germany, it's quite common. Opening is done with a card and code or barcode. The article mentions countries with similar systems: Austria, Finnland, Estonia, Latvia, Poland, Canada, Australia and United Arab Emirates.

edit: And not mentioned in the text but there is an image from Denmark.

</comment></comment></comment></comment><comment><USER16> Google is doing research in AI to reach the singularity. I think robotic is very important for Google, but reassuring people is more important. Google does not want to be associated with something frightening like "terminator".

<comment><USER17> > Google does not want to be associated with something frightening like > "terminator".

Is this a danger? They don't have military robots to my knowledge.

<comment><USER18> Boston Dynamics is involved with defense contracts. [http://www.bostondynamics.com/](http://www.bostondynamics.com/)

<comment><USER17> So are many non-military technologies. I don't see the link here with google building assassination machines.

<comment><USER18> I think it's the humanoid robot aspect more than the defense contract thing.

</comment></comment></comment></comment></comment><comment><USER19> What, nobody wants tap-dancing? Vaudeville anyone?

Geez, that was the FIRST thing Walt Disney went for. Look up "Project Little Man" with Buddy Ebsen as the model.

[http://www.waltdisney.org/blog/early-days-audio- animatronics...](http://www.waltdisney.org/blog/early-days-audio- animatronics%C2%A9)

</comment><comment><USER20> I think Google should continue with its self-driving effort. They have their maps and fiber technology that provide some hard-to-get pieces of the puzzle. This is the robot that will impact humanity the most. An automated box on wheels (seats optional). Just think of the things a self driving car could do for you:

\- Pick up anything from mostly anywhere.

\- Schedule pickup around the clock.

\- Move things/people securely and be able to track the contents through a camera.

\- Act as a mobile living space. Not requiring a dashboard frees up a lot of space.

</comment><comment><USER21> Title is borked. Should have a what in the beginning.

<comment><USER22> Probably yes, but consider this interpretation:

> Seventeen prominent roboticists think: "Google should _do_ with its robots."

Doesn't matter what. They should just _do_.

<comment><USER15> That would mean that Google is able to fulfill a task with the robots, no? As a figure of speech, 'this should do' means that something is sufficient. Any first-language speakers?

<comment><USER22> Makes sense to me!

Q: "Which company is sufficient with its robots?" A: "Google should do. [with its robots]"</comment></comment></comment></comment>


Employee Equity - <AUTHOR> http://www.avc.com/a_vc/2010/09/employee-equity.html

<comment><USER2> I'd like to know more about the downsides of RSUs.

I've been offered some recently, and I feel like it's just a way of saying "yes, you can have some equity... _someday_. Meanwhile, you're still in the dark on shareholder issues and you can't see the balance sheets. Keep up the good work".

Is that a wrong way to look at this?

<comment><USER3> Wasn't there a case not long ago where option holders got basically raped by the taxman? They were taxed on their options as if they'd been exercised at their peak value, but by the time they vested they were worth a lot less.

AMT I think it was called.

<comment><USER4> The situation where you can (could?) get screwed by AMT is if you exercise and hold, and the value of the stock drops. This isn't universal and there are different rules for different types of employee stock options, so make sure you know the rules that apply to you if you are considering an exercise-and- hold.

</comment></comment></comment><comment><USER5> This comes at a curious time for me. Just recently a startup didn't start at all, because I and the other would-be co-founder couldn't agree on how to split the equity.

Can someone enlighten me please: is a 50/50 split reasonable for 2 founders of a coding-heavy startup, where each founder has roughly the same background? That is what I was asking for. My friend was asking to have 100% equity and I would get a sizable share of sales as a contractor for his company. It was our first startup, neither of us has previous experience running a startup or a business at all.

I'm very sad it didn't work out because we worked on the technology for almost 4 weeks and it was promising, and now I feel a bit "guilty" about not having "cooperated", but I just couldn't invest the effort, resources (we have no investment; we would be burning our savings for some months) and yet have no ownership at all of what I was creating and risking into.

Any thoughts into this will be greatly appreciated, as I have no other sources of feedback to evaluate my decision.

<comment><USER6> Depends on the people, but him wanting 100 is a good warning sign that you should quickly get un-involved. 50/50 is what I would expect in your situation, where neither person is obviously going to be carrying the company.

If you give a founder (or early employee) more than they're going to be worth in the long term, you'll feel increasingly motivated to fire them and recover their un-vested stock. If you give them too little, they become increasingly motivated to quit and start something they can own.

From what you described, you were at a lose-lose impasse. One or other of you was going to end up unhappy, in a company-destroying sort of way. I would have quit also and would make sure to sort the ownership question out earlier next time.

Somewhat tangentially, people also tend to over-value the ownership that their "idea" should entitle them to. If someone spends 3 months thinking day and night and you just started, it can seem like they deserve a big chunk. But you have to remember, standard vesting is 4 years, so their 3 months of thought is only about 6% of the time you're each committing to the business.

<comment><USER7> "If you give a founder (or early employee) more than they're going to be worth in the long term, you'll feel increasingly motivated to fire them and recover their un-vested stock."

I'm surprised that I don't hear more horror stories about co-founders and early employees being kicked out just to get their un-vested stock. That's the one thing about 4 year vesting that always seemed risky to me.

<comment><USER6> You have to burn a lot of bridges to do it and it leaves a mercenary mark on you and the company. I think it's more likely to destroy morale by making you bitter about each other's ownership than to actually get you to fire each other as an economic choice.

</comment></comment></comment></comment><comment><USER8> "If the founders are the top managers in the company, then the typical "non founder employee ownership" will tend to be between 10% and 20%."

Does this mean that all the "non founder employees" would split the 10-20% of the equity?

<comment><USER9> That is what he is saying, yes. Although I think this varies greatly with region, because in Toronto it is more like 4-11% for an ESOP.

<comment><USER10> "Employee ownership levels are higher in well developed startup cultures like the bay area, boston, and NYC. They are lower in less developed startup communities"

<comment><USER9> Yeah I saw that, I just wanted to give people an idea of how much it can range.

</comment></comment></comment></comment><comment><USER11> I'd really like to know this since none of the startups I've been involved with have had positive outcomes (buy out, IPO, merger etc).

If you're part of the 10-20% employee ownership, assuming that you have an "average" stake, what percentage of the overall deal do you usually walk away with?

I'm expecting this number to be painfully small and hardly f#ck you money, but I'd like to hear from those who have direct experience on this.

NOTE: I'm not asking about _founder_ exits, because those are adequately covered in the media and other places. I want to know about all the folks who are in that magic 10-20% of employees. Outlier anecdotal evidence (e.g. Google secretaries, Microsoft mail room folks) need not be mentioned. :)

<comment><USER9> If you are one of their favored employees (multiple bonuses of additional options) and you got in before they hit 50 people you can expect about 0.1-0.3%. I know employee 1000 at Google walked away with about $2 million.</comment></comment>


How Streak Tracks Down App Engine Datastore Bugs - <AUTHOR> http://developer.streak.com/2013/09/how-streak-tracks-down-datastore-bugs.html

<comment><USER2> "A typical scalable database engine like App Engine's Datastore will only look at each entity in isolation. Since the entities are technically fine in isolation, there's no guarantee of consistency from the engine level."

This is not true. A feature in app engine called entity groups were added to work around exactly this type of problem. The Dog entities should have their entity group (parent) set to The DogWalker. This will ensure full read/write consistency among that group of entities.

Combine this with transactions, and cross-entity-group-transactions, and you can ensure that you don't have dangling or incorrect pointers like what you describe.

<comment><AUTHOR> While its true that App Engine has entity groups and transactions on those entity groups, you are still responsible for ensuring consistency in your application code.

 _You_ have to remember set the pointers between the two entities correctly and to do the write in a transaction. Granted this should be easy but mistakes can be made.

Compare this to a tradition relational DB where this consistency is enforced at the database engine level (if you've setup your schema in that way) and it won't let you write inconsistent data.

<comment><USER2> Whether consistency is ensured at the application level or the database level, mistakes can be made. Someone can forget to set things up in a schema correctly in exactly the same way they can forget to implement things correctly at the application level.

Also, even with relational databases, there are many times when you need to use transactions to prevent certain types of inconsistencies, they don't protect against everything.</comment></comment></comment>


Linden Lab laying off 30% of staff, Second Life to be browser-based in future - <AUTHOR> http://www.geek.com/articles/games/linden-lab-laying-off-30-of-staff-second-life-to-browser-based-in-future-2010069/

<comment><USER2> Accusations of Second Life bubble/fad: vindicated?

<comment><USER3> Or maybe its the ipodization of the web where you no longer hop from web site to web site but suck the apps to your browser as you like.

</comment></comment><comment><USER4> Why do they have offices in UK and Singapore? Also the Enterprise division sounds like a poor strategic fit.

<comment><USER5> For what it is worth having meetings in second life were much better then the dial in meetings I have done for years. All sitting around in a circle _looking_ at the person talking and the software easily handled many different people. Not sure if it also did direction audio or not, but I never had a problem knowing who was talking or make a gesture to know I wanted to comment on the current conversation.

Downside (maybe): half the people show up as funny creatures :)</comment></comment>


The small and surprisingly dangerous detail the police track about you [video] - <AUTHOR> http://www.ted.com/talks/catherine_crump_the_small_and_surprisingly_dangerous_detail_the_police_track_about_you <comment><USER2> Transcript:

[https://www.ted.com/talks/catherine_crump_the_small_and_surp...](https://www.ted.com/talks/catherine_crump_the_small_and_surprisingly_dangerous_detail_the_police_track_about_you/transcript?language=en)

TL;DR: Local cops have Automatic License Plate Readers that run all the time tracking every car that drives by, also that data is kept forever because why not.

<comment><USER3> Here is a startup idea, the "License Plate Club" ...

For $10 a month users register their license plate and state, then every month they get a printout of two random plates (at 75% size so as not to be confused with the car's real license plate) which you just stick to the side of your car doors. Of course being on the side of your car no police officer is going to think you're passing it off as your own plate, but every camera trained to detect and record license plates will add a 'hit' to their database right then and there. As more people join more license fuzzing data will be dumped into the databases and eventually all automatically collected license plate data will be useless without manually going through and verifying each sighting by hand, which will make it cost prohibitive.

Hell you could pay pedestrians to walk around with license plates as they go from intersection to intersection. That would be hilarious.

<comment><USER4> Having multiple license plates displayed is generally prohibited. As I found out when I had not had time to change my plate after it expired: I had the old one in the usual location, and the new one in the rear window. Got pulled over for it, but got only a warning.

<comment><USER5> Which makes perfect sense to me. Not sure how you thought that would be acceptable.

But then, I am of the unpopular opinion that every car should be tracked, they are far too dangerous, and cause far too many accidents for them not to be.

You want to murder someone and get away with it in our society, the best chance you have is killing them with your car.

</comment></comment></comment></comment><comment><USER6> Oh good. Clickbait title _and_ TED. Wonder what would make the trifecta complete.

<comment><USER7> Ray Kurzweil.

</comment></comment><comment><USER8> License plates have seen such an enormous mission creep, starting out by enforcing safety inspections and liability for car accidents and finding stolen cars, and continuing down to letting the public and private sectors routinely track motorists' whereabouts.

When license plates were introduced, the technology to make them more privacy- protective didn't exist. Today, it might, but it would be expensive to switch and challenging to get police to give up monitoring powers they've become accustomed to.

</comment><comment><USER9> What I find amusing are body cameras. We want them so bad to protect against police officers violating civil rights, but think how fast they'll ramp them up to doing things like face recognition. And why not? Imagine being able to spot criminals with warrants on them by just walking around in a crowd. Of course, it won't stop there. Hmm, I better go pay off those speeding tickets that are due...

<comment><USER10> You can justify that, and license plate cameras for that matter, because the camera is only automating a process that the police could still have done manually although it would have taken more time and been less reliable. Namely, if a police officer is told that a person is wanted and he sees a picture of him, then he could walk around a crowd looking for people who resemble the wanted person. The camera is doing the same thing his eyes and memory does, only faster.

The problem is not so much the data collection, it's the retention. Because computers never forget, the police are then given a power the existing limits on their authority did not consider. So new laws need to be drafted to limit the actions of a police force that has infinite memory.

Which many states are doing now. Until the police unions tell a bunch of scary "think of the children" stories about why they need unlimited surveillance power. Then the issue shifts from the police to the influence of money in politics. (And perhaps also whether public employees should be allowed to unionize. Or at least, whether a union of public employees should be allowed to lobby.)

</comment></comment><comment><USER11> To paraphrase an old saying, "When all you have is threat analysis, everything looks like a threat." Law-enforcement in the US has become a victim of it's own unrelenting focus on threat-mitigation, to the extent that they are all too happy to use tools that have always been anathema to American Culture. We have mass surveillance, abusive police, and huge gulags full of people who's first crime was to be poor and under-educated. It used to be these were the things we pointed to when asked, "Why is the USSR/DDR so much worse than you?"

Epic fail, USA. Epic.

<comment><USER12> I've likened the situation to an auto-immune disease: a hopped-up defense mechanism which false-positive categorizes non-harmful elements as harmful.

I like your threat-analysis line.

</comment></comment><comment><USER13> Automatic license plate scanning is bad enough, but at least _some_ people are concerned about it. Meanwhile, the _much_ more detail information that the phone companies gather for themselves and the NSA as part of COTRAVELER[1] has apparently been entirely forgotten.

Building a map of where your license plate has been is bad enough. The map of which {micro,pico,femto}cell you phone has been near will contain far more detailed travel information. It didn't even require any clever hacks or software vulnerabilities; COTRAVELER only required writing a few INNER JOIN / WHERE clauses. It doesn't even use any private information: it only needs the _metadata_.

Unfortunately, I expect that the conclusion - that it is probably a bad idea in the long run for everybody to be carrying a radio transponder in their pocket - is going to be ignore (or actively avoided). Cognitive dissonance can be a powerful motivator, and these properties - necessarily common to all mobile communication devices are very dissonant with the common socially- acceptable addiction to social media and "being available" that keeps everybody tied to cell phone.

[1] [http://www.washingtonpost.com/apps/g/page/world/how-the- nsa-...](http://www.washingtonpost.com/apps/g/page/world/how-the-nsa-is- tracking-people-right-now/634/)

<comment><USER14> > necessarily common to all mobile communication devices

I think there are possible technical solutions if there was a will to adopt them. The main problem is authenticating with the network, if unauthenticated wireless networks were generally available then it would likely make tracking harder.

I think even if you are paying for network access then there could be technical solutions to the problem. Perhaps authentication tokens which were purchased but not linked to a user.

I guess fundamentally, breaking apart network access authentication and user identification/authentication would be good.

But I agree, I doubt people are motivated enough to seek out a solution.

<comment><USER13> While I don't completely rule-out the possibility of finding a technical solution, if such a solution exists it is going to be _really_ hard to find. Re-associating "anonymized" tokens is a lot easier than it looks in many situations, and it doesn't take much data leakage to JOIN tables together. I would love to be wrong on this topic. It would be absolutely incredible if someone can invent a way to make mobile devices still work without leaking any information that can be tracked.

I totally agree with separating authentication from authorization; we need to do that anywhere it is possible, not just for mobile devices. Unfortunately, the trend has been in the reverse direction. :/

<comment><USER14> I would have thought the problem in mobile networks might be easier than elsewhere. Where the wireless network is public infrastructure, for example, if devices used randomized MACs then I'd imagine it'd make them much harder to track.

You'd still need to authenticate with a VOIP provider. But by breaking out these services I would guess it would make tracking much harder.

</comment></comment></comment></comment><comment><USER15> I sold my car so I was doing pretty good up until the part about the cell phone tracking. Time to get a pager I guess...

<comment><USER13> [http://www.washingtonpost.com/blogs/the- switch/wp/2014/08/11...](http://www.washingtonpost.com/blogs/the- switch/wp/2014/08/11/why-one-of-cybersecuritys-thought-leaders-uses-a-pager- instead-of-a-smart-phone/)

Pagers are probably a good idea.

</comment></comment><comment><USER16> Does anyone know of any good open source automatic number plate reading software?

Was thinking if could be a fun project for my rPi 2 maybe.

</comment><comment><USER17> Good thing I don't drive (but my Ventra card tracks me just the same).</comment>


Ask HN: Why dont older users have votes that count for more? - <AUTHOR>

Why has nobody made a social news site that basically uses the registration date of your account  to make your vote more powerful? Basically permanently reacting to September-ing while still accounting for new user's opinions? <comment><USER2> My account is twice as old as yours, and I think this is a terrible idea but feel no need to explain why. Also I have >150 times more karma than you, so you should bow down and worship me.

That's why, basically ;)

<comment><AUTHOR> I agree that you are better than me.</comment></comment>


Frequensea: an open source EM spectrum visualizer - <AUTHOR> https://github.com/fdb/frequensea

<comment><AUTHOR> The intro video [1] is somewhat long (~33 minutes), but shows some cool examples.

[1] [https://youtu.be/u6H1DatxLAc](https://youtu.be/u6H1DatxLAc)</comment>


Creepy: FB uses your Google searches to suggest friend (and who knows what else) - <AUTHOR>

Just noticed that people I googled appeared after a few weeks in my FB "people you may know" list. Try that for yourself. <comment><USER2> My housemates randomly appeared on my linkedin a few weeks after moving in. No idea why, i'd never googled them or even emailed them afaik. Creepy.

</comment><comment><USER3> You should request for your Right-To-Information and find out if your google search trends are being used by facebook and sue them both.</comment>