skysight-inc/HackerNews huggingface dataset:
I think that was BS. I read that Huawei was setting or has set up some sort of security labs in the U.K. and Germany. A quick web search found: https://www.reuters.com/article/us-germany-telecoms-huawei-e...

I think the EU is playing this very smart because Huawei would not open its tech to security inspections without some pressure.
Those wasted 40 minutes are doing wonders for your body. Absolutely not a waste by all meaningful measurements.
> despite never writing a convincing human character.

Not even Elijah Baley?
Map<Employee, Role> employeeToRole?
Smalltalk was always a system first, language second. That said, if you want to ignore half (not all!) of what makes Smalltalk interesting, there's always GNU Smalltalk ("Smalltalk for people who can type"):

https://www.gnu.org/software/smalltalk/

There's the free/open Pharo ("Squak for grown-ups"):
https://pharo.org/

(Recently featured on hn in the guise of smalltalk on truffle/graalvm
https://news.ycombinator.com/item?id=21735782
)

And commercial offerings like Gemstone:

https://gemtalksystems.com/products/gs64/

The recently open sourced dolphin:
http://www.object-arts.com/gettingstarted.html
FWIW, it doesn’t take that much time if you start with a good setup. Writing your own game engine in order to write normal maps will take a loooong time, but you could whip up some normal maps on (for example) ShaderToy in an afternoon, easy, and there are tons of great examples there to reference and learn from.
> Something like Pharo is more like learning a whole new OS in addition to a language.

That's kind of the point.
I agree with your first part, but the second part isn't true if it were prohibited to do targeted advertising for everyone.

It's an arms race, you only earn less without targeting when your competitors are targeting. When all advertising is equally poorly targeted, everyone's getting their fair share of the available advertising dollars.
Ask HN: State-of-the-art for server rendered webapps (non-SPA)?
At my company we have about 80,000+ LoC of AngularJS (v1) in production, which we still actively develop and maintain. We've also dabbled with Angular2/Typescript & Elm for the newer features. However, off-late, I am getting increasingly put-off with the amount of complexity SPAs bring into the stack. Especially for user-interfaces that aren't very interactive (or don't need to maintain a lot of state in the browser).

I remember Rails apps from 5-7 years ago where the entire HTML was rendered by the server. Where required, there was pjax/turbolinks and some hand-written jQuery for client-side validations or show/hide buttons. What is the current state-of-the-art for these kinds of apps?

Think about the billing page of a typical SaaS app [1]. Does it really require to be an SPA communicating with the backend only via APIs? Can't it be made of simple HTML pages that do FORM POSTs? What's the best way to handle the following in 2019 (or 2020!), without resorting to full-fledged SPAs:

- Showing/hiding UI elements
- Possible values of one dropdown depending on the value selected in some other dropdown
- Copying billing address to shipping address
- Value of a radio button showing/hiding some form fields
- (I hope you get the point...)

PS: Having some type-safety would be an added bonus, because I've been recently bitten by the Haskell bug :)

[1] Display list of available plans, let the user pick & configure the plan, make a payment, and move on. Typically it will be used once or twice in a user's lifetime.
Rails salaries are lower than .net where I live. Where do they command $$$?
Here’s the link in the linked tweet: https://news.ycombinator.com/item?id=21803859
Sorry about that on mobile and can't seem to delete it myself.
https://moderncto.io/ - the book is pretty good
Please don't post unsubstantive comments here. We want curious conversation, not denunciatory rhetoric, and the latter destroys the former.

https://news.ycombinator.com/newsguidelines.html
Not seeing where we get to submit jobs, nor basics such as languages, formats ...

Is this an er inversion? low lying clouds?
where we are the distributed data center.

Possibly laudable/good cause etc.
but you have to let me play too.
Indeed. I don't think the press used to say "crisis in democracy" when the USSR and its satellites were ascendant and were encroaching in on many governments though the 60s and 70s. But now when more countries are practicing democracy, there are crises.
Hah, exactly what I told a friend who asked about it when he saw it in my living room when I was reading it.
... Why would you not simply issue them new clothes instead of (potentially dangerously) microwaving theirs?
We're a Ruby/Python/JS/Scala shop and once people are up to speed the productivity of Scala blows the other three out of the water. It's insanely hard to beat the productivity-performance ratio of Scala.
Did you try the zip from here?
http://pharo.org/download

I'd guess you could get some hints by running ldd on the vm (I'm assuming it's not strictly a static binary).

You need the vm and an image - the launcher I imagine is a vm and just enough image to display a menu and get a "proper" image downloaded.
That's not what they meant. The reference was to using the sendinput api.
This article isn't being flagged. This and related topics are perennially popular on HN. Some comments have been flagged, correctly, because they break the site guidelines.

Would you please stop it with the trollish comments now? You've already posted five to this thread. That's over the top.
There is GNU's smalltalk, which comes with a REPL. You should be able to write smalltalk from vim or any other text editor.
> That same logic can be used to argue that functions should only support one input argument, too.

Some languages do (more if you consider things that support what looks like multiple arguments but which the complete set of arguments that can be passed to a function corresponds directly to a single data structure in the language.)

> There's a big difference between simply and efficiently returning multiple values on the stack without generating intermediate garbage and memory references, and packing multiple values up into a single tuple

Fundamentally, there's not, since you have to represent both the number of items and each item either way. It's true that there are more and less efficient means of performing the task, but the information required is identical, so it is quite possible for any method capable of doing what looks like one to a user of the language to implement what looks like the other from the same perspective.

The obvious implementation when conceptualized each way given other elements of a language or it's implementation design may be different, but that's not an inherent difference, and implementing efficiencies in the implementation has no necessary reflection in language-level features (and supporting any particular language-level feature isn't a guarantee of efficient implementation.)
Kotlin is more like if Java and Python had a love child. It's clean, simple, quick to pick up, and pretty much retains the behavior of the underlying language.
I can’t help you. I sometimes have NixOS running in a VirtualBox container, but don’t have one available right now. Do you have a plain Linux running anywhere, or as a container inside NixOS? Except for occasional font problems, Pharo works fine on Linux.
This is a common problem and for one you'll find many different solutions.

I used Apache Airflow some years ago to do exactly this. It's pretty good. You build a workflow of tasks (in Python) and set a schedule of how often you want it run. It then runs these tasks on any number of machines that you run the Airflow worker on to orchestrate the running of whatever it is you are trying to do.

If a task fails it can notify you; and if you "miss" a run it can backfill it provided your toolchain understands the concept of time. Very useful for hourly/daily feeds that, if you miss one, the system can go back and retry it just for the slots it missed.

Comes with a nice UI, too.
Ranks of "Message oriented":

Rank 1: Polymorphism. You can "send" a message to an object. You don't know or care exactly what the object does. Other than the polymorphism, the "message" behaves just like a function call. It will definitely be handled by your target object, and it will definitely return instantly with a response. The compiler might even be able to inline this function call.

As seen in: Pretty much every OOP language.

Rank 2: Messages as first-class values. It's possible to write a function that forwards all incoming messages to another object, based on some logic. The caller does not know what will happen to the message. However, the message can be expected to be handled instantly, and it may respond instantly (if it does have a response).

As seen in: Objective-C, Smalltalk

Rank 3: Asynchronous messaging. When sending an outgoing message, it might be placed in a queue and handled at a later date. The message does not return a result instantly, so agents must have some other mechanism (such as including a "reply to" address) to be able to talk back and forth. From the perspective of the caller, it's a bit like putting a message in a bottle and watching it drift off to sea.

As seen in: Erlang, message queueing libraries.[1]

“When I use a word,” Humpty Dumpty said, in rather a scornful tone, “it means just what I choose it to mean—neither more nor less.” “The question is,” said Alice, “whether you can make words mean so many different things.” “The question is,” said Humpty Dumpty, “which is to be master—that’s all.”

[1] https://news.ycombinator.com/item?id=4788926
I read the after 10 as referring to the number of classes. 400h seems a little more reasonable, albeit a lot lower than the usual estimate which has it over 1000h
TIL http://www.dns-sd.org/trailingdotsindomainnames.html I imagine that upsets cookies and scripts and such, but I wonder how long until they "fix" that?
As I said, I'm happy to change it to something better if anyone suggests it, but "Smartphones are spies" is obviously sensational and this thread is already filling up with low-quality comments.

The definition of a better title on HN, btw, is: more accurate and neutral, and preferably using representative language from the article.
Mapping out the global music streaming ecosystem
Trailing Dots in Domain Names
I kept thinking "wow, that has to be the deepest diving air breathing animal here," and I kept being amazed at how deep some animals can dive.
Kennelly–Heaviside Layer
What I don't get is why Valve hasn't ported Steam to ARM yet.

The Raspberry Pi is plenty used for gaming, but for lack of first-class support by the likes of Steam it's been mostly used with emulators for retrogaming.

My games on Steam are just a toolchain setup and rebuild away from supporting the Raspberry Pi, but there's no point in adding support when there's no Steam client available for the platform. I would love to sell to Raspberry Pi users via Steam, but Steam is just getting in the way here.

I feel like their Linux/SteamOS support would be better represented if they supported the non-x86 platforms better. It's one of the areas Linux shines, and they're completely missing the boat by neglecting it.
Or learn to love proper styling
Ask HN: Valuation for Early Stage B2B SaaS
We are a bootstrapped B2B SAAS and have not raised any capital yet.

We have savings that we have been living off of and can sustain another year without drawing salaries.

We are considering raising our first capital from friends and family to invest in growth of customer acquisition.

I am asking HN for a ballpark valuation that we should raise the capital at. I understand that there is art and science involved, hence the HN question.

Our sales cycle is 3 to 12 months and we have 21 customers in the pipeline (excluding the current paying ones).

Here is the revenue history (as ARR):

Sep 19: $0k
Oct 19: $8k
Nov 19: $19k
Dec 19: $31k (est)
Jan 20: $59k (est)
Feb 20: $83k (est)

I am fairly certain about the Jan and Feb numbers as we have purchase orders, users in training etc. I have kept them on the conservative side.

If we raise in Feb, AND hit our projected ARR at that point, what multiple of ARR is a reasonable number?

We don't have churn numbers as the history of paying customers is too short and we haven't lost any customer yet.

AMA that will help with the valuation multiple question.

Taking a deep breath.
1
2
3
Hit Submit!
That's a fitting comparison considering that tones in Chinese and neighboring languages like Vietnamese may have developed from final consonants: https://en.wikipedia.org/wiki/Old_Chinese_phonology#Tones_an...
You can build logic gates out of just about anything.

One of my favorites is the Digi-Comp II, which uses (in this modern version) laser cut wood, steel balls, and gravity:

https://www.evilmadscientist.com/2012/dcii-first/

There can be real value in explaining logic gates using things you can see and touch and observe in action.
Some historical context and interesting references, including a recent estimate on the supernova timeframe:

https://twitter.com/EricMamajek/status/1208176941502590976
I think the key insight of Smalltalk can be grasped just by thinking about how Smalltalk does branching. A line from the GNU Smalltalk tutorial:

mybool ifTrue: [ ^ 2 / 4 roundup ]

The outer part of this expression reads “send a closure expression, as the message ifTrue, to the receiver mybool.”

Keep in mind, this `mybool` could be anything! It just so happens that there are two runtime objects, `true` and `false`, that satisfy the “Boolean interface” (consisting of messages ifTrue and ifFalse) the way you’d expect—with `true` running any closure passed in an ifTrue message, and `false` running any closure passed in an ifFalse message. (For those of you who know combinatory logic, these objects are essentially the K and SK combinators.)

But consider that you can create your own object that implements this interface—with whatever arbitrary logic you like—and substitute it for a Boolean as the value of `mybool`, and no code will be able to tell the difference.

This is what is meant by “computation as messaging.” Branching is a request to an opaque “branch-evaluating object.” At each step of computation, you’re not getting the runtime to compute—you’re getting your objects to compute. The objects are the computers, and the messages are the instructions to those computers!
The Evolution of Ethnocentrism (2006) [pdf]
There's the usual sites like upwork which have a lot of noise, and dirt cheap rates. Sites like Toptal are better in that regard as they are more exclusive because they have to make you jump through many hoops to get in.

Also just meeting new people and mentioning your work might end up landing you some projects. Focus on people who have their own businesses. They might not have a project themselves, but it's possible they might end up sending a referral in the future.
Lua 5.3 integers are 64 bits long by default, and that makes a real difference.
The pdf is the full text of this article: https://journals.sagepub.com/doi/10.1177/0022002706293470
"Objects" in OOP, as in "let's couple data with behavior" necessarily means mutable state, otherwise they are just types.
Use only immutable data; write abstract classes only; do polymorphism with interfaces and you'll end up with something very similar to what people mean by 'type-level programming' in Haskell.
"Show me one novel that predicted something like Fox and Friends, or The View. You can’t do it."

The Machine Stops, by E.M. Forster.

https://www.bbc.com/news/entertainment-arts-36289890
Recomposition gently converts human remains into soil
FWIW, I'm in a FAANG and finding Scala devs is even a problem within my own org and team. We've resorted to teaching largely Java devs Scala on the job with mixed results. A former senior manager who made the decision supposedly viewed going all in on Scala as a mistake in large part due to the huge time loss in ramping people up & problems hiring.

I like what I've used of the language at work, although I tend to write a lot of JavaScript on a day to day basis, but to say the right hiring process makes Scala an advantage is not quite right in my own experience.
I mean... yes, in theory that would be the case but that's really not what's happening in this particular case.

(Edit: Firstest of all, actually, more often than not it's actually 4) the program is waiting for a user's confirmation, or requires some user action to exit, but if you see that message, you can't do it anymore.)

First of all, not being able to distinguish between these three cases is precisely what makes virtually everyone who's seen this a couple of time hit the reset button as soon as they see it. That doesn't save any data.

Second, if a program is really busy desperately trying to save something large and unusual over a network and you see that message, there's a good chance it won't be able to save anything anyway. The network is usually down by that time, for example.

There's also no way for a program to signal that it's done. If, indeed, a program needed one more second to write everything, it's cool, but you still get to wait 29 more seconds.

And finally, processes ignoring SIGTERM is really just one of the reasons why this happens.

I think all of us in the FOSS community should be more charitable when discussing these things. systemd is a big step ahead but it's not like we had to wait until 2010 to figure out that init systems have to tread carefully during shutdown to avoid data corruption.

Also, people who read HN usually understand that killing processes can cause data corruption under some circumstances. Just sayin'.
> I would word it "how a surface is illuminated" rather than "how light bounces from a surface."

Do recognize that Carlos said at the beginning, “Most explanations I found are usually too technical, incomplete or too hard to understand for my taste, so I decided to give it a try and explain what I gathered. I recognize that these explanations may be incomplete or not 100% accurate, but I want to try anyway.“

FWIW, your suggestion sounds to me more like it’s about the light sources, and not the surface. The normals don’t really affect how the surface is illuminated before the light bounces off (which is what “how the surface is illuminated” sounds like to me), the normals define the orientation of the surface, and so combined with a material and lights, the normals really do (help) define how light bounces off a surface.

There are some established graphics terms for these things, but getting nit picky and accurate to that level would be detrimental to this blog post, I think. We don’t need everything to have the Wikipedia disease of being so accurate that only the experts who know the material and don’t need it can read the article. Carlos already found other explanations of normal maps too technical, so I guess he’s not interested in explaining the difference between radiance and irradiance just to describe the idea that normal maps change the surface orientation and affect shading.
Well, Google must've changed course, seeing as Go made keyboard farts fashionable again. I guess that's where Go's C heritage comes in.
It sounds like a backdoors to me. Oops we forgot to not install telnet on all routers we sell is as close to an admission of guilt as one might hope for.
>I've decided to focus purely on conversational mandarin, and skip learning Hanzi (characters) entirely.

I studied Mandarin formally a little while ago up to HSK 2/3 level, at a reputable university based on a weekly 3 hour lesson. Although not comparable to your experience, I can relate to your approach.

On the course, we were encouraged to concentrate as much on the conversational side as reading simplified/traditional texts, mostly assisted via Pinyin. The only resources available to us were a well stocked library. It took so much longer and proved to be an incredibly frustrating experience at times, especially when desperately trying to find native speakers to converse with or decipher even the most basic of texts. As a lapsed 'student' I feel it was all worth it in the end, despite only retaining 10% of everything I learned, at least the knowledge can be justified as well rounded.

The other resources I leaned upon for assistance consisted of TV, news, movies, meetup and various language courses, which were no substitute for real interaction with native speakers. Wenlin and Plecodict were a godsend, when you did not want to consult a physical dictionary. Amongst others, the forum below sparked more interest in the wider aspects of the language and culture.

http://www.pleco.com/

https://wenlin.com/

https://www.chinese-forums.com/forums/
To provide a different point of view, his discussion on quality was for me one of the best takeaways from the book.

As a bad artist, I've always been both annoyed and fascinated by the fact that no one can tell you what "good" art is. ZAMM presents for me a good definition (good art is art with good quality, where "quality" is further explored in the book) that one can actually use, and has been my to-do measure ever since.

Of course, the author himself discards it at some point, but I find his concept of "quality as the relation between the objective and the subjective" to be a great first try. And we all know that perfect is enemy of the good anyway.
External pressure. It might be easier for you to survive at 130ft because you have a sturdy rib-cage and skull that keeps your internals together. Fish do not get this luxury. It might be entirely possible for a fish to swim down to 3000 meters, but I think evolution probably played a role in killing off all the fish who decided to risk it and swim that deep. As a result, "modern" fish probably experience more anxiety or similar emotions as they go deeper.
>When a site posts multiple links to a stream, latter ones are “backups” but I’m not forbidden from using them.

That analogy only works if the BOE makes both streams available on a public basis. If the company is contracted only to provide a backup stream in case the primary failed, it stands to reason that they do not have the rights to stream/broadcast during normal circumstances. From a legal standpoint, it would be similar to eavesdropping on the live press conference using a bug.
Ask HN: What are the current patterns for serverless rate limiting and caching?
What are some of the current best patterns for achieving both of these things. From looking online, I've found a few resources from a couple years back. Just looking for what most of you are doing nowadays.
There may be forms of messaging where the "medium" surrounding messages is more like an aether -- sorta like photons in space. And the addressing to objects super loose. I don't think it needs to be so strongly receiver-bound.
It's actually not so hard to groc once you emerce yourself in it. The hard part is you don't really experience these same patterns in enterprise work. It'll click eventually.

The main thing for me was realizing the goals of the pipeline. You need to process each pixel on its own in parallel to get the speed you need. All these texture techniques are in service of prebaking data down such that it can be effeciently prefetched before the shader needs it.

At least for me, understanding the why helped me understand the what.
I would highly recommend the End of Life Guideline series: https://www.amazon.com/End-Life-Guideline-Compilation-Bookle...

Was given these when my Dad was clearly failing to thrive and had given up. He basically stopped caring about living after my Mom died, although it wasn’t entirely clear at the time.