skysight-inc/HackerNews huggingface dataset:
A fun and fairly simple project, with a surprisingly high ratio of usefullness to effort, is to write an interpreter for a concatenative language. Concatenative languages, like FORTH, can do a lot with very limited resources, making them good candidates for embedded systems.

If you want to play around with making your own concatenative language, it is actually surprisingly simple. Here is an overview of a step-by-step approach that can take you from a simple calculator to a full language with some optimization that would actually be quite reasonable to use in an embedded system.

So let's start with the calculator. We are going to have a data stack, and all operations will operate on the stack. We make a "dictionary" whose entries are "words" (basically names of functions). For each word in the dictionary, the dictionary contains a pointer to the function implementing that word.

We'll need six functions for the calculator: add, sub, mul, div, clr, and print. The words for these will be "+", "-", "x", "/", "clr", and "print". So our dictionary looks like this in C:

struct DictEntry {
char * word;
int (*func)(void);
} dict[6] = {
{"+", add}, {"-", sub}, {"x", mul},
{"/", div}, {"clr", clr}, {"print", print}
};

We need a main loop, which will be something like this (pseudocode):

while true
token = NextToken()
if token is in dictionary
call function from that dict entry
else if token is a number
push that number onto the data stack

Write NextToken, making it read from your terminal and parse into whitespace separated strings, implement add, sub, mul, div, clr, and print, with print printing the top item on the data stack on your terminal, and you've got yourself an RPN calculator. Type "2 3 + 4 5 + x print" and you'll get 45.

OK, that's fine, but we want something we can program. To get to that, we first extend the dictionary a bit. We add a flag to each entry allowing us to mark the entry as either a C code entry or an interpreted entry, and we add a pointer to an array of integers, and we add a count telling the length of that array of integers. When an entry is marked as C code, it means that the function implementing it is written in C, and the "func" field in the dictionary points to the implementing function. When an entry is marked as interpreted, it means that the pointer to an array of integers points to a list of dictionary offsets, and the function is implemented by invoking the functions of the referenced dictionary entries, in order.

A dictionary entry now looks something like this:

struct DictEntry {
char * word;
bool c_flag;
void (*func)(void);
int * def;
int deflen;
}

(continued in reply)
Eric was a great help with our crowdfunding campaign too! Here is what he sent me as his best advice:

https://plus.google.com/+PeterHDiamandis/posts/Aoimkh9tnCG
https://plus.google.com/102564912330648182355/posts/HCR6LMkH...
Actigage Pte Ltd | Backend Software Engineer | Singapore | REMOTE

We are looking for a Backend Software Engineer to help build the core services that power our mobile applications and underlying platform.

Actigage engineers own the execution of our product vision end-to-end. You will be expected to:

* Understand the "big picture"

* Discuss requirements with product owners

* Collaborate with front end teams

* Develop, test, deploy, and monitor your work

Our ideal candidate has:

* 3+ years of software development experience

* Experience with Node.JS

* Experience with Sails.js preferred

* Skills in REST API modeling and development

* Experience with MS Azure or AWS

* Experience with MongoDB

* Ability to solve complex problems with strong analytical and logical reasoning capability

* Experience working in an Agile environment

* Experience with database architecture

* Excellent communication skills

Please email your CV and a brief introduction to Anya: anya@actigage.com
Enabling Hot Module Replacement for Create-React-App
MUTUAL TAIL RECURSION FOR FUN AND PROFIT [Scala]
Now the main loop has to look something like this:

while true
token = NextToken()
if token is in dictionary
if dict entry is marked as C code
call function from that dict entry
else
InterpWords(def, deflen)
else if token is a number
push that number onto the data stack

and InterpWords looks something like this

void InterpWords(int * def, int deflen)
while (deflen-- > 0)
InterpOneWord(&dict[*def++])

void InterpOneWord(dict * dp)
if (dp->c_flag)
(*dp->func)()
else
InterpWords(dp->def, dp->deflen)

With this, we can add new built-in functions defined in terms of already defined functions. Before we do any of that, though, we should add some more stack manipulation functions. Add at least "dup", "drop", and "swap", which, respectively, push a copy of the current top of stack onto the stack, pop an entry from the stack, and exchange the top two items on the stack.

For reference, after adding those, the dictionary offsets of the 9 words we've defined are:

0 +
1 -
2 x
3 /
4 clr
5 print
6 dup
7 drop
8 swap

and they are all marked as C code. Now let us add a built-in function "sq", which squares the top item on the stack. To do that, add a new dictionary entry initialized like this:

{"sq", false, 0, sq_def, 2}

where sq_def looks like this:

int sq_def[] = {6, 2}

That's marked as being interpreted rather the C code, so when the main loop finds it it will call InterpWords, passing it sqdef and 2, and InterpWords will end up invoking dup and x, with the result being the top of the stack is squared.

OK, that's all fine and dandy, but we want to be able to define functions in our language from our language. So far, we can define functions in our language, like sq, but we have to do it by editing a C data structure and recompiling.

(continued in reply)
"Tone" is a word people use to trivialize what they're referring to, which means you're assuming your conclusion.

This is a matter not of tone but of content, and the toxic effects of such content. If only we could rely on well-reasoned user responses to neutralize those effects. But internet forums don't work that way, nor large groups of humans in general. For HN to have civil, substantive discussion, moderation is sadly necessary.

Detaching comments, with an explanation of why, has proven to be one of the best moderation techniques we've tried. The sort of rant we're talking about isn't primarily about the topic at hand—it's primarily about state-changing the conversation to something agitated and ragey. Because that counteracts the purpose of this site, such posts forfeit their right to an ordinary position on the page.

Those who want to read such comments still can, but you literally have to go lower to do so. That seems fitting to me, and a reasonable balance of concerns.
Capsule summary of this thread: Justin Schuh finally comes out and broadcasts what security people have been telling each other for years, which is that antivirus software is one of the biggest impediments to hardening software.

Here, I'll put it more succinctly: "did you know that random antivirus vendors held a pocket veto on OS and platform security features, and that they routinely use it to make things easier for their products?"

I think by 2016 most people understand that antivirus doesn't work, and that it's installed more as a compliance and IT management check box than anything else.

I think people who have paid attention for the last couple years as Tavis Ormandy has published AV bug after AV bug have a good sense for the low software quality of AV systems, and understand how it creates new vulnerabilities on systems.

What I don't think we've seen is someone explaining that not only is AV ineffectual and unreliable, but that by dint of being installed across hundreds of thousands of machines and because of the kernel and runtime grubbing that AV requires as part of its security theater, AV makes it much harder to deploy OS and runtime countermeasures to attacks.

There was a Project Zero post on HN yesterday (someone can find it) about how Chrome wanted to do full Win32 syscall filtering for its sandbox processes, but couldn't, because Adobe and Widevine relied on some Win32 syscalls --- and so DRM not only doesn't work, and creates new vulnerabilities (cough Flash cough) but also makes it harder for Chrome to implement new security features that can eliminate whole classes of bugs.

Same deal with AV.

Justin Schuh, by the way, is one of the Chrome security leads, and is a coauthor (with Mark Dowd and John McDonald) of TAOSSA, the bible of software security.

I'm not sure who Vess is other than that he's an AV person.
I agree. I make 3 boxes at once. The box calls for 1.5 sticks of butter in that case, but I only use 1, and it comes out great.
Brendan Gregg? What does he know about Solaris?!?

(I keep the DTrace book within reach when I sit at the keyboard. This is fan mail. Many thanks, for your work has helped me become a better computer person.)
Don't get me wrong, BSD is still absolutely solid, but for anything cutting edge, Linux is spanking the pants off of it.
PVS-Studio, a static code analyzer for C/C++, is now free (ish)
ARGH! What hardware problems on train X can cause train Y to go into emergency braking mode? Curious minds want to know.
I have read, there is nothing in the links that you have provided that says that Google sells your data.

If you don't know the business model of Google and you can't read your own links it is not my problem.

But don't let facts break your imagination
Whale | San Francisco, CA | Onsite | Full-time | iOS Engineer |$80,000-$125,000 + Equity 0.25%-1.5%

Whale is looking for a senior iOS engineer to join our small team of five. Currently, we are focused on building a video Q&A platform on iOS. Whale is co-founded by Justin Kan (Twitch, Y Combinator, Socialcam, Exec) along with an experienced team that includes Ranidu Lankage (Sri Lankan pop artist,Google exec) and Leo Chen (2X Startup founder funded by 500 startups and former Amazon executive).

Why you should join:
- You’ll join an experienced team in the early stages
- You’ll learn a lot about startups
- You’ll have a lot of fun working here (see our vlog: https://www.youtube.com/channel/UCOJA271-R8nLu9PMU1mzJUQ/vid...)

Responsibilities:
- Build new features to support our growing & fast moving iOS app
- Work with product designer to iterate on an idea quickly, from prototype to the App Store
- Implement custom UI using the latest iOS APIs
- Solve many of the challenging performance issues that come with mobile video
- Investigate crashes and fix bugs

Who we’re looking for:
- At least 3 years of experience building consumer apps that real people use
- Proven experience working with video & audio on iOS
- A Swift expert

Email hi@askwhale.com with your GitHub profile & sample projects we can build locally and play with.

More info here

https://angel.co/whale-3/jobs/187411-ios-engineer
R Data Structures and Algorithms
Very interesting reference! Deep learning is statistical, so this is sorta one of the spiritual predecessors.
Fitbit will get sold soon, as far as I can tell.
A bit off topic, but please add support for hectares and liters.
How to Grow
I'm interested that you used some Christmas songs as training (which wasn't obvious from what I read of the paper). Were they pop songs, traditional, or a mix?

Further to my comment up there[0] - and I don't wish to sound a grinch because this is a really cool project - but would I be right in thinking you spent more time on the image description than the music?

I saw that you specify a scale for the melody, would it be either possible to use a mode to generate the accompaniment around, so that the melody can move diatonically and risk too many clashes, or to allow the melody to follow the chord sequence somehow?

Again, sorry if I sound too critical. It's a really awesome thing you've done, and I'm just a guy that listens to the music instead of the lyrics.

[0] https://news.ycombinator.com/item?id=13079355
Android Engineer – poynt.com - Poynt –Palo Alto, CA (ONSITE)

We’re seeking a full-time Android Engineer that knows how to make their way around the AOSP stack.

You'll be responsible for building, launching and maintaining Poynt OS (our secure version of Android + payments firmware that’s gone through PCI-PTS certification ) that will help small business from all around the world process payments in new ways: EMV, NFC, old-school magstripe, other future payment methods. We also build tools for pushing out software updates and capabilities to Poynt devices.

We’re a team of Xooglers, Ex-Amazonians, and Ex-PayPals. We have commitments from all across the world (U.S., Brazil, etc.) to replace brick-looking Verifone and Ingenico payment terminals with our Poynt devices.

Poynt has $28M in funding from Oak Investment Partners, Matrix Partners, and Google Ventures.

If you're interested in joining us as an early software engineer, learning about the payments industry, changing the landscape of payments, learning about what it takes to build payments hardware that’s always connected and have deep Android expertise

-- send your info to careers at poynt.com
My suggestion to you is simple: go read about the brainfuck language, and implement an interpreter for it.

You'll probably get to the end and find that your first implementation "cheats", whatever that means. That's fine, improve it.

Write the memory model as a contained module, and have the interpreter core call into it.

Build an internal representation of a program, then make reading the source code a separate step from running it. Once you have that representation, some opportunities arise: e.g. represent increment and decrement as "add 1" and "add -1" instead.

Then you can write your first optimiser: turn long runs of increment and decrement instructions in the source code into a single "add n" instruction.

At this point, you have modules that turn source code into an internal representation, optimise the internal repr, and execute it. Start thinking of commands you can add to the language. Start thinking of how to handle data in the source code, rather than just instructions. How to build functions.

When you get to this point, you'll realise that you're no longer thinking "I wonder how an interpreter works", but rather "I wonder how you implement this particular part of an interpreter", and that is a much easier question to find answers for.
> But it's so tempting to launch stuff from the browser, from Adobe Reader to Flash to Microsoft's "protocol types" which launch apps.

The latter (MS protocol types) is not at all MS specific.

Let's list some well known examples:

- Apple's itms "protocol", itms:xxx opens either iTunes or the App Store, also on OS X (this is how "Download from Mac App store" works)

- MS Communicator/Skype for Business (one of them is the successor of the other, I always forget which one) uses this to start conferences after you installed the respective app

- Spotify does something even worse, the client appears to launch a http server, and e.g. when you log in to facebook on your browser, it supplies the used port to their oauth redirector - which in turn gives the auth token to Spotify via calling http://localhost:xxx/yyy.

- all major mail programs use the "mailto" protocol; the OS loads the user-defined MUA with options for pre-fill (body, subject, recipient(s))
The 5 emotional stages of a DDoS attack
Not on the android mobile app I have, unfortunately.
Thinking of Quitting the Software Industry
I haven't been following kubernetes as closely for the last 6 months, cool to see that its also being supported...

A lot of our decision to go with mesos was that our first use case is running big data tools (spark, etc) which have a good bit of integration with mesos. Will be interesting to see the level of adoption of projects implementing operators
Benzinga (https://pro.benzinga.com, http://benzinga.com) | Detroit, MI | FULL-TIME | ONSITE & REMOTE

Looking for people who love to code, move fast and get shit done: the hackers and hustlers of this world. We need a few grown-ups that know their stuff.

A financial media company at our core, we're high-energy, focused on our users and our product. We reach over 2 million uniques and 214 million impressions / month.

WE NEED:

* Frontend Engineers (React, Redux, ES6)

We also have these in our stack and looking for good engineers:

* Full-Stack (Go, Python, PHP, Kubernetes, Java, MongoDB, PostgreSQL, ...)

If you're interested, apply here: http://jobs.benzinga.com or email me direct with any questions: bert@benzinga.com
Cash is king. Loaning money to Amazon you could be using to pay suppliers or salaries or returning to investors is a cost.
Is there a PPC VM that could run this on Linux or Windows?
Kaggle | San Francisco | Full Time | ONSITE or REMOTE | Software Engineering

Technologies: C#; ASP.NET MVC; React; TypeScript; Docker; Azure.

You can read the job req and apply here: http://kaggle.applytojob.com/apply/GjSjOi/FullStack-Engineer...

Kaggle is best known as a platform for machine learning competitions. We have a community of over 730K data scientists. We're on track to grow past 1MM in the coming months. Now also building a sharing-and-collaboration platform (closest analogy is Github for data science: https://www.kaggle.com/kernels)

Three of our engineers have come via HN posts, so we take HN referrals very seriously.
> To me the far more interesting question is, why do we feel so busy?

Positive/negative reinforcement? You enjoy being productive, and generally don't enjoy anxiety/stress (after a threshold). I'm not certain there's much a differentiation between undesirable stress and the sensation of being "too busy." My N=1 says they're identical and I've noticed it myself, that when I want to express how I feel about being too stressed, my mind tends towards the same vocabulary I used when I am too busy, regardless of how time consuming the stress is.
This is great! I wonder how much chocolate they've cut out of their products over the years, especially since they have removed cocoa butter from their products too.
Who do you think reads the New York Times? Writing for your audience isn't the same as being out of touch with everyone else (though they may well be).
The Solution for Open Office Frustration
Sun responded swiftly and justly with OpenSolaris for x86. It's a lot easier to go evaluate this in hindsight and see that cheap x86 was not really a barrier, OpenSolaris could have become another Java level of ubiquity save politics and inertia. I remember how tainted things seemed when reading LWN.net.. which in retrospect were largely FUD around the CDDL and fear of actual competition. The continued rise of Linux was really just inertia at that point, it was largely inferior outside desktop use, but had too much sunk cost investment from IBM, SGI, HP (where a lot of the real scalability culture was imported from - RCU, NUMA, locking refinements in particular).

UNIX rose to prominence because it's what everyone learned in college in the '80s. Linux, because you installed it on your laptop or a VM in high school or college late '90s. Don't underestimate the power of this.
You're distorting the argument. Yes, it's all tradeoffs. Almost all of us would trade less light in a room against a likelihood of our house burning down.

Pretty much the same deal with antivirus.

To fully appreciate what security people are saying about antivirus, you have to understand that contrary to appearances, there is no baby in this bathwater.
It looks like this was written Jan. 2014. Your post is a few months later.

The content on your site is great and personally I really appreciate it. Thanks for adding some context here.
"AWS Batch dynamically provisions the optimal quantity and type of compute resources (e.g., CPU or memory optimized instances) based on the volume and specific resource requirements of the batch jobs submitted."

Optimal is a pretty strong claim, given that this is an NP-Hard problem. Or do we just toss the word "optimal" around now?
Would you suggest taking more time off, or working less hours for less pay?

I always hear that during an 8 hour day you only really work for 4-6 of those hours, but if I was able to work 4-6, and get to see more sunlight during my day I would! Although I would dislike being paid less.
Seattle, WA, ONSITE

A "little startup that could" is dragging the wholesale and manufacturing industry to the bright future of Cloud and Mobile, out of the dark swamp that is Excel, FTP, and Email.

Can you get things done? There is no shortage of work:

- C# business logic
- modern web front-end, likely React
- E-Commerce
- EDI
- Mobile development
- interaction design
- storage at scale
- logging and user analytics
- email campaign orchestration and tracing
- data visualization

About us:

- Opportunities: A huge area of responsibility. Pick two if you dare.
- Family-friendly: Sane hours, generous vacations.
- Benefits: Health.
- Financial security: Enough pay so you don't have to worry about it.
- A stake in success: A sizeable stock option grant.
- Something different about us:
- Our customers aren't just numbers on the dashboard, we work
face to face with many. I know *why* I come to work.
- We work with bits and bytes, but we can clearly see physical
goods being moved in response. It's refreshing to work with tangible
goods in the age of ephemeral products.

denis@amptab.com
> I'm fairly certain we haven't seen any in-the-wild exploits that actually compromise AV. If it was practical to do, it would be the defacto exploit considering you get to take down the gatekeeper and get to run your code at the same time.

We have, a number of times and it is practical to do. At least it was on Windows several times in the past.

Some AV vendors have in the past chosen to use such bad practices as hooking the SSDT. This has ended hilariously bad for them when they left their own simple vulnerabilities behind them. Suddenly you have the whole kernel because the AV vendor did something astonishingly amateurish in their code.
That was a brilliantly seasonal analogy.
FWIW, I think the coursera class is now gone, but the course should have matched this http://web.stanford.edu/class/cs143/
From Nestle themselves.

> No company sourcing cocoa from Côte d’Ivoire can guarantee they have completely removed the risk of children working on small farms in their supply chain. Nestlé is no different, but we are determined to tackle the problem.

http://www.nestle.com/ask-nestle/human-rights/answers/nestle...

They have been in business for years. If they wanted to stop in the past, they could, overnight. It would be expensive, but only because of their entrenched business model which they had a hand in establishing.
I'm not handling a salary right now. But it looks like I should. I will try to do something about it.

Just a note. To have the search enabled on a salary, values have to be normalised to something, dollars sound good to me.

As for the keyword. This is something probably HN crew could decide on. In my opinion isn't needed as long salary is in first row with $xxx or $xxx-$xxx format. But since many people seems to be interested here. Maybe would be good idea to mention something about salary in the thread description.
You can delete apple maps on the latest iOS!
Show HN: SysAdmins Arena – A HackerRank for Sysadmins/devops/SREs
Early development of a numerical solution for roots using Newton-Raphson in Fortran IV on a DEC 10. My code was correct, I walked through it manually many times and I had printed out many variables and yet it never found the roots.

In one of my subroutines I changed the value of a passed in variable. In my code there was a point where I called that subroutine with the value '0' for the variable.

The Fortran compiler was pass-by-reference, so the compiler accommodated me by creating a reference to the constant 0 and passing it to my code. In my subroutine I changed the value of that passed in 'variable'. Since the compiler was using that "constant" elsewhere any conditional that looked for 0 would fail after that point since the value of 0 had changed.

My professor and I only found it after we printed out the machine code generated by the compiler.