skysight-inc/HackerNews huggingface dataset:
You wouldn't be able to get some very basic English sounds with only the Arabic letters used to write Arabic. (For example, /v/, /p/, and the distinction between /dʒ/ and /g/.) But the Arabic script has been used to write a whole lot of languages (some of them completely unrelated to Arabic)

https://en.wikipedia.org/wiki/Arabic_script#Languages_curren...

and sometimes by adding additional letters or reinterpreting letters to represent phonemes that Arabic doesn't have

https://en.wikipedia.org/wiki/Arabic_script#Special_letters

It's much like the way the Hebrew alphabet was modified to write Yiddish (a Germanic language), including the addition of new letters

https://en.wikipedia.org/wiki/Yiddish_orthography#The_Yiddis...

One example in the Arabic script is the letter pe (پ), which is very basic in Persian (an Indo-European language written with the Arabic script) but doesn't occur in the original Arabic alphabet.

https://en.wikipedia.org/wiki/Pe_%28Persian_letter%29

https://en.wikipedia.org/wiki/Persian_alphabet#Changes_from_...
Ancient wild ox genome reveals complex cow ancestry
All facts are wrong

https://en.wikipedia.org/wiki/Half-life_of_knowledge
> It's not wasted effort because (I hope that) customers will remember whether the provided solution broke down and vendor just walked away, or whether your company took responsibility of architectural decisions.

sure. But at some point you have to make a cut off. Customers can't expect a solution they bought once to work for all eternity. Otherwise we'd all still be supporting IE5 on Windows 98 these days.

At some point, the time invested in keeping the old stuff running cuts too much into the time available to move the current stuff forward.

If all you do is spending time to patch up the old solution, you open yourself to be overtaken by competitors that either don't care about their old infrastructure, or by competitors that just entered the market without any prior customers to care about.

So really, keeping old stuff working (for some reasonable amount of time) is the ethical thing to do and certainly goes a long way to keep customers happy, at some point, you have to move forward or you will not be able to gain new customers, or worse, your old customers jump to a competitor that has the new, shiny thing and you end up maintaining a dwindling amount of legacy installations forever until you go out of business.

This is why I think spending time on maintaining outdated, 10 year old solutions is wasting time compared to maintaining the new and greatly improved thing.

Again: Despite these scanners being 10 years old now, we will do the effort required, but I still will try to do it the easiest way possible as every minute spent on this is a minute not spent on improving the non-outdated solution.
My favourite is http://currentcondition.org/, having the visuals up on a spare screen is a plus also!
Ligatures. We have lots of them in old German fonts (Fraktur), too.
To be fair, experts said that $6-$10 billion estimate was not realistic. First time projects always overshoot their budget. Also, it assumed placing tubes on the highway, instead of buying land (by far the biggest expense of the project).
It's best to ignore early downvotes.
That's another very good idea I'm going to look into, though I'm a bit weary of dealing with writing and/or finding and compiling a proxy server for a version of Windows CE that's now 4 years out of support.
I'm not sure if you include (or want to include) a maps-like app on your tablet. If you do, you've probably looked at this already, but just in case you haven't, have you looked at the OpenStreetMap project? You can preload mapping data on the device and oyu have your own choice in what data to include.
The third C# example shows:

int? count = customers?[0]?.Orders?.Count();

So yes, it can definitely be chained as the following paragraph in the linked page explains.
> A programmer looking at the code for the first time will know, just by looking at the return type, "Hey, this method may not return a record! I'll have to handle that scenario."

Well, that's basically the same thing with any nullable return then. Wether I return T or Optional<T>, there might be no record.

Even worse, when I return T, you only have 2 cases : I return something, or I return null.

With optional, you have 3 cases to check : I returned Something, I returned Optional.of(null), or I returned null.
Health hackers: the patients taking medical innovation into their own hands
For a company that has raised so much funding for JS animations library and mobile web app performance, you'd think they would be able to get their mobile navigation working properly.

Is anyone else on iOS safari able use their nav?
India also have a large desert area in the state of Rajasthan and most of the the solar projects have been installed in that area only.
One of the more hilarious (in hindsight) explanations of Phlogiston theory is why a candle eventually goes out if you put a bowl over it.

We now know that it goes out because the reaction runs out of combustible oxygen. Since according to Phlogiston theory combustion involved a substance called Phlogiston being given off , they reasoned the candle went out because a given volume of air could only hold a given amount of Phlogiston.

They even tried to calculate the "maximum capacity of phlogisticated air".

However they weren't entirely wrong they just got it backwards. Phlogiston is basically minus oxygen. :) . So it spurred research in the right direction and eventually got us to the "more correct" explanation.
I only listen to music during programming when I feel stuck on some specific problem. I generally listen to the Matrix soundtrack at that time. I guess its the mental association of the movie + programming.
> Furthermore git downloads the entire repo, all the history/commits, this isn't always what you want or can handle or want to pay for.

That's the default behavior, but with `git clone --depth 1` you can apparently download only the latest version of all files: https://news.ycombinator.com/item?id=10449157

Googling around, most pages confirm it. Found this one also informative: http://stackoverflow.com/q/6941889/1201863
Running React/React Native
I think we tried changing the level multiplier & it not making much difference - although I didn’t write the code, someone else in our team did.

The problem space was a seen-set store for a exhaustive prover. (ie, a continuous loop of: have you seen this state yet? If No, add it to the set of known states, rinse and repeat.) Any memory you allocated to another data structure is memory you’ve just taken away from your in-memory cache for the seen set. Total throughput was ultimately disk IO limited, so anything that increased the number of reads/writes just made things slower.

I don’t think the bloom filter would have helped, because every access was potentially a write, but I’d have to go away and think about it for a bit to be sure!
This could be a perfect scenario where drones make sense. But I don't know about mars...

http://www.aerialpower.com/
LUN clustering via CTL and multipath TCP both sound like killer applications to me.
In 2002 an Irish documentary team, it seems, "accidentally" covered events surrounding the coup and countercoup of that year in Venezuala[1]. It has some unbelievable footage obtained during critical stages of the events.

I don't really know the provenance of the film, but if you take it at face value it has some fairly shocking things to say about the way propaganda and political theatre work out in practice, and touches briefly on the US role in that early attempt to unseat Chavez.

1: https://www.youtube.com/watch?v=OhzoIcIgNrk
CASE STUDY: How I doubled my email list through guest posting
This is an old JVM language

http://nice.sourceforge.net/

I've included nice as it had a different syntax for optionals (?Type instead of Type?) which I found interesting. I was interested in Nice back in the day.
As a sort-of counterexample, it can still be useful to put code that you only use once in its own function: functions have very definite entry and exit points, and a defined interface for communicating with the rest of the code (via arguments, captured variables and return values).
It's not a get out of jail free card no, but it's value isn't in preventing null pointers. The value of Optional is in providing intent.

You also get map, filter, flatMap, orElse, orElseGet, ifPresent. These are all great ways of making your code more functional, and do more with less.

I don't think annotations are the answer either, as you can't always rely on static analysis to prevent errors, a lot will still appear at runtime.
Ligatures are more specific to things such as œ, æ, etc.
“CISA would give companies like Facebook legal immunity for violating privacy laws as long as they share information with the government.”

So the Government is using sock puppets to violate its own laws. Nice. Criminals of all continents, unite! The U.S. is your land of opportunity.

Really, why be a terrorist when you can fuck everyone over legally and even get rich and powerful with it. As an added bonus, you get to call yourself a patriot while you're at it.
Why can't I access it? I'm genuinely curious about this.
Given that they are trying to stimulate local economies around the plants I would imagine they see this as a feature.
You haven't heard the same criticisms of tarballs because tarballs aren't used as a version control system. These issues are specific to (fairly bad) VCS usage, not packaging usage.
Task Cancellation in C# and Things You Should Know About It
If someone is working for one of the top tech companies, they should appreciate that more. If you're doing the best you can and they are still challenging you, that might not be a bad place to be. If it almost doesn't matter what you do, the IT infrastructure and code is a mess, and when you try to change that, you can't do it significantly, then that is much worse for your career. However, it's where I personally need to be right now- safely making income for my family.

As for writing a SAAS app and making money- that's not some kind of magic recipe. I'm much older now with a family. It has been my dream of "making it big" for years and partially chasing dreams that has been holding me back from getting things done that I should be doing. It's fine to offer that as a possible solution, but too many believe it is the option for them and leave that as a lingering dream that only serves as a time trap. I've had dreams before that could have been made reality if I only had the people and resources to make it happen, but that opening didn't happen and I got distracted quickly. Sure, I didn't make it happen, but I have limits. Sometimes the resources just aren't there, personally or externally. If you talk to a number of people that make it big, I think some chance opportunity will have come into play in their history 100% of the time. Sure, they gave it their all, or had a lot to give. But when trying to get started, sometimes the spark doesn't ignite a fire. I'm a rusty piece of steel and worn flint- the actual process of writing a SAAS app doesn't excite me anymore. I'm still sitting on top of a domain waiting to get inspired, but getting into iOS and Android development is really not as easy as it would seem I've found, and even just writing a web-based app to do what I want is a struggle since I suck at JS.
Right now 95% of Journalists and politicians don't know what a Watt is - which is sad.

Maybe we need to have all BSC/Technical short lists for MP's to rebalance the HOC away from lawyers and carear politicians.
> Also, it assumed placing tubes on the highway, instead of buying land

Which is a good idea and should be done. In fact any scheme that doesn't include this should be by definition classed as a unnecessary money-sink.
The Light Jet Makes You Dream of an Awesome Future
Ask HN: What payment system do you use on your website?
If you make money either via sales or subscriptions, I'm wondering what payment system you use (i.e. Paypal or Visa) and why they are a good choice for you.
The average person can absolutely picture 500,000 homes. If I live in a city of 2 million then it's one quarter of the size. I can visualise this quite easily.

And if you think the average person is going to find percentages of some arbitrary landmark then I don't think you understand the average person.
It worked for Afrikaans[0], so I suppose it would also work for English.

[0]https://en.wikipedia.org/wiki/Arabic_Afrikaans
It certainly did mess with early astronomers. They were also hindered by their supposition that orbits are circles:

http://c2.com/cgi/wiki?AddingEpicycles
If the aim is to replicate how Windows works, only the GUI shell would need to reload environment variables (i.e. the process that forks when you start programs using whatever the desktop's idiom is).
What would you recommend? Without hesitation, two things i believe are crucial:

1) Let them find a introductionary reader (the most basic of study books) or kids-encyclopedia on the subjects they find interesting.

2) At first, limit access to resources, but not knowledge. Spoiled equals no curiosity and creativity. Time to experiment.

My experience as a kid;

Best toy ever: LEGO Technic.

How would I teach him coding? First i realized computers just do what humans tell them to. Then i did "Echo Hello World", and promptly found a introduction reader about QuickBasic on MSDOS with my mothers name on it. I absorbed it entirely and backwards, picked up on Visual Basic, and thanks to dialup internet soon PHP.

Introduce to electronics? I started disassembling electronics shortly after i got my hands on a "How Stuff Works" CD-ROM.

Robotics? For me it was LEGO Technic and hacking, but nowadays i'd just give them a LEGO NXT kit. (See the LEGO FIRST events, they're awesome even for the youngest of kids)
FCC aims to put caps on excessive prison phone costs
.. and half a century of US sanctions.
Here in the states it does not equate to employment stability at least not in the same role. There are numerous layoffs where people with critical knowledge are separated from the company. Some of them get hired back as contractors for a better rate and some have to seek employment elsewhere.

I have a neighbor that has very specific experience that is needed and the company had him and one other. They laid him off and hired him back as a contractor at a greater rate so for him this turned out great. But not always so.
The Life Cycles of Failed Projects
It won't be your own little bubble. You're not going to own a 200MPH autonomous car. You will lease it by hour.

And even that is very far away. Meanwhile trains just work. No high-speed connection between LA and SF is an anomaly by world standards given size, proximity and economical importance of two cities.

Also, modern high-speed trains don't have 4-person compartments (or have those at premium), they are rows of seats not unlike plane business class seats. You usually have power, sometimes wi-fi. You can get coffee and a newspaper.
Reform Tax Credits with a Negative Income Tax (UK)
There are system variables, as well as user ones. Obviously, the users can set their own user variables.
"try" is an active support extension on "nil", so if you're using rails (or active support), then you already have this functionality. The point being made here is that patterns developed outside the core Ruby development process are getting adopted upstream by the language for all Ruby applications to benefit from.

Also, there your example or using try falls short if the methods require additional arguments to be passed in. "try" already handles this by requiring you to "try" each method.

Of cause there is a very good argument to be had that this pattern also breaks the law of demeter by allowing you to call methods on objects that you don't own a stake in.
Spotify Luigi 2.0.0
Top Resources for SaaS Entrepreneurs to Grow Their Startup
Adding my voice to the din of people noting how far afield of the point the author is:

You should almost never call .get(), except in cases where the code path does not allow an empty optional.

Even so, calling .get() on an empty optional is better than handing nulls around. A null may -- by chance, really -- make it several lines down the code, so that the stack trace points you much later in the code than where the null originated. Calling .get() on an empty optional immediately throws a NoSuchElementException, pointing you directly to the line where the optional was empty where it shouldn't have been.

Consider this code:

User user = getUser();
// other stuff here
// ...
// ...
String userSummary = formatUserSummary(user);
// ...
// ...

where

public String formatUserSummary(User user){
return "Franchise Location: " +
user.getFranchise().getLocation().getName() +
" Username: " +
user.getUsername();
}

An NPE occurs inside of formatUserSummary. Where did the null come from? Is the user's Franchise null? Maybe the Franchise's Location? Or is it the User that's null?

If you instead took an Optional<User>, even if you just immediately unwrapped it with .get(), you'd at least get an error that unambiguously told you that it was the user that was missing.
From the submission yesterday: https://news.ycombinator.com/item?id=10448702

America seems to be unfixable:

"The 11-mile East Side Access tunnel in New York City, for example, is 14 years behind schedule, and the tab has grown from $4.3 billion to $10.8 billion. Boston's 3.5-mile Big Dig was finished in 2007 — nine years behind schedule and at nearly triple the estimated cost."
Because nil in Ruby is essentially a NULL, or it holds no value. Analogy: It's like asking for a picture of a person that doesn't exist.
The future of news is not an article
Since you already have the capability to do something different for SHA-256-intolerant browsers, I suggest you inject (this year with permission from your customers) banners informing the users of these browsers to switch to SHA-256-compatible browsers (Firefox on XP and Opera Mini on mobile) while they still can. It's not like the users "cannot" upgrade. They don't know how.

Also, if you successfully lobbied an exception for you to keep using SHA-1, less savvy deployers of TLS would get an opportunity to mix SHA-1 with modern browsers or to non-browser clients--weakening security for everyone. (See https://cabforum.org/pipermail/public/2015-October/006100.ht... )
We used to have the long-s (ſ) as a special variant but I think that went out of style a hundred years ago. In German it's mostly seen in old Fraktur texts, so these days it's still sometimes found in newspaper logos set in Fraktur -- incidentally, contrary to what most people seem to think, the nazis actually tried to get rid of Fraktur and Sütterlin (the handwriting style at the time), there was just a lot of old signage around during WW2, which is why it has entered popular culture as "that weird typeface the nazis used".

German still has an sz-ligature (ß), but like the Dutch ij-ligature that has actually ceased to be considered a ligature and become an actual character (which is why the ij-ligature in Dutch sometimes appears as ÿ or Ü and why you never see German sz-ligatures separated into the actual letters "s" and "z" -- in fact, the ligature is instead rendered as "ss" if it can not be printed as a ligature and actually resembles an ss-ligature in most fonts, maybe except for Berlin road signs, which also sport a tz ligature).

Oh, and, because I grew up with computers I never adopted proper cursive handwriting and to this day still write in a slurred print without connectors (which is probably why it took me ages to develop a distinct signature).
A lot of modern games run slow because devs are using common 2D/3D engines which focus on cross-compatibility and ease of use over speed.

Testing in a lot of basic 2D engines also focuses on low performance, e.g. for an RPG where you'll have a dozen sprites moving around, instead of say 500 ships/weapon shots in a shmup.
You can't access that which doesn't exist.
> Why do you say they are using the DMCA?

Here's a great example of what I'm talking about:

https://torrentfreak.com/youtube-deal-with-universal-blocks-...

> YouTube can put ads on any video, why couldn't they distribute that income with whoever they want to?

It's a matter of trust. YouTube implemented a monetization policy to encourage regular folks to create viral content, and reward that effort with monetization for original works. However, YouTube is gaming their own system and stacking it in favor of Big Content. They are breaking the trust they asked their users to place in them, and breaking their own policies to support their biggest customers.
The difference here is that AFL is not just banging on the keyboard at random--it's doing a guided search to find inputs that change the program state in interesting ways. This is more likely to find bugs in a finite amount of time.
LuaJIT will be supported in the future. I will take a look at Terra.
Crypto Key Exchange like taking candy from a digital baby
Just to clarify, not having Drag and Drop is not an API limitation (see [1]). Rather, they haven't implemented it yet in every place you'd expect to see it.

[1]: https://msdn.microsoft.com/en-us/library/windows/apps/mt2276...
It's in deep nesting like that that such an operator really comes into its own. If you only use it for single cases, it really isn't worth it.

In the article the 'problem' code is:

if u && u.profile && u.profile.thumbnails && u.profiles.thumbnails.large
do_something_with(u.profiles.thumbnails.large)
fi

which repeats u 5 times, and the entire u.profiles.thumbnails.large twice!

which would be replaced by only asking once.

even worse (although somewhat clearer, perhaps) is what I've occasionally seen:

if u
if u.profile
if u.profile.thumbnails
if u.profile.thumbnails.large
do_something_with(u.profile.thumbnails.large)
end
end
end
end

And even the super verbose version there still can raise exceptions when you get slightly mad data - say you decode some JSON which has u.profile.thumbnails as "null" (a string) rather than actually a null. asking

if u.profile.thumbnails

will be true - but when you request u.profile.thumbnails.large, you blow up.

You can achieve similar effects using only exceptions, but there's a good argument for using exceptions only for exceptional circumstances.

begin
do_something_with(u.profile.thumbnails.large)
rescue NoMethodError #or similar
# oh no!
end

which (alas) also will catch all noMethodErrors in do_something_with. So you then end up with

begin
tmp = u.profile.thumbnails.large
rescue
tmp = nil
end
if tmp
do_something(tmp)
end

which is super ugly.

I may have got details wrong - not being a rubyist, but I think this is the general gist of where a nestable operator makes much much cleaner code, which catches more errors.
Go Fuzz
Thanks for these -- the aether one is hilarious.
Disinhibition.
I think a good case could be made that, if you're designing a new dynamically typed language from scratch that doesn't have to support older code, safe array/object navigation should be the default.

My argument for this is you should design for the most common use case first, and most commonly people will want '.?' behavior. You can still check explicitly for null in the other cases, or even introduce a more cumbersome non-safe navigation operator. The resulting code will overall need fewer checks, be more readable, you'll have fewer crashes and exceptions, and it will generally do the right thing.

I occasionally write toy languages and this is one behavior I think I got right recently. Along the same lines, but as a more extreme measure, I would argue that invoking a method call on a null object should return null instead of throwing an exception.