skysight-inc/HackerNews huggingface dataset:
This is a wrong statement on so many levels: "By learning C, you can learn how computers work". I am glad you did write an article but honestly you did not have to go to this length to explain your case. Anyone who says that learning C is a prereq. for understanding Computer architecture then my friend the advice is not coming from a right place. One reason I can think of is why author got confused is because a lot of freshman courses use C programming language in order to explain the computer architecture.

e.g.
http://www.ece.utexas.edu/undergraduate/courses/306 use this textbook: https://www.amazon.com/Introduction-Computing-Systems-Gates-...

This course starts with assembly language and then use C as the first programming language in order to understand computer architecture. C is the de-facto language when it comes to teaching embedded systems (think limited HW resources like memory etc).

Learn Assembly to learn how computer works!
Wait - you don't hear 'republicans are the problem', 'Trump is the problem', et al all the time?

I'd have to ask what forums you are reading, because I would like to hang out there.
On HN, please don't reply in the flamewar style, even if another comment is annoying. It just leads to a downward spiral. Plus your refutation will be much more convincing if it's simple, factual, and civil.

https://news.ycombinator.com/newsguidelines.html
You can always get a server with a GPU instance in the cloud somewhere. That might cost a few $ but then again, so does a GPU.
Robots should be replacing workers. If a robot can replace you then the work you could be better spent on something else.
I don't usually read this sort of thing, but it was recommended to me by someone I usually trust, and I found it an intriguing read. Judge the article for what it is, not what you think it is.
> Or as Linus Torvalds puts it, “C is the only sane choice”.

I'd be very interested in his opinion of Rust
Flight Delay Predictor from Upside Business Travel is a machine learning based product that attempts to predict the likelihood your flight is to be delayed. The algorithm is trained on historical flight delay information from the FAA and factors in both historical and forecasted weather and the current state of the National Airspace System. Happy to answer any questions here on how we built it! Check it out at labs.upside.com/delay
You're the one that raised the metaphor, but okay?

I'm not saying that you can't do performance work without having done that. Just that you'll be at a disadvantage since you're at the mercy of whatever your HW vendor decides to disclose to you.

If you know this stuff you can work back from from first principals. With a high level memory architecture of a system(say tiled vs direct rendering GPU) you can reason about how certain operations will be fast and will be slow.
This I can believe. It's reasonably well known that the first PC design was deliberately crippled in order not to impact on sales of the dedicated word processor, the IBM Displaywriter.

The 8086 was thought too powerful and would compete against existing IBM products, so the 8088 was chosen. Other changes to expansion and bus architecture were on the same basis.

I spent over a decade completely failing to understand how it could succeed against Amiga.
> It’s like people who make those posts didn’t remember that the tobacco industry still exists

Ah, but at least everyone agrees you should quit smoking cigarettes for your health.
Agree, and in any other situation we'd be praising this. They're investing in the future, looking beyond the next quarter, etc.
Sort of. It wasn't Earth, and the artifact was found in a desert.
I get a 403 on that link. Have a copy?
After recently (1 year) learning Rust I noticed that Rust teaches about low-level CS concepts of passing by value vs passing by pointer a lot better than C. Because you not just have references and values, but also have to think about richer semantics of what you are trying to do: sharing, mutability, and move semantics. So you learn not only that a few low level concepts exist, but you also learn how to use them correctly.
There is no difference inside the computer between those concepts.

For convenience, many architectures have a single assembly instruction for taking one register (called the "stack pointer"), adjusting it by a word, and moving a register to the address at that word, and a corresponding instruction to move data back to a register and adjust it in the other direction. That's the extent of the abstraction. You can implement it with two instructions instead of one, and then you get as many stack pointers as you want. Zero, if you want.

There is no "heap" on modern OSes. There used to be a thing called the program break, beyond which was the heap. It's almost meaningless now. You ask for an area of virtual memory via mmap or equivalent; it is now one of several heaps you have.

And you can pass around pointers from all your stacks and all your heaps in the same ways, as long as they remain valid.

You need to understand this in order to understand how thread stacks work (you typically allocate them via mmap or from "the heap"); how sigaltstack works and why you need it to catch SIGSEGV from stack oveflows; how segmented stacks (as previously used in Go and Rust) work; how Stackless Python works; how to share data structures between processes; etc.
Very smart. Amazon and Bezos is one of, if not the, best at reinvesting profits back into the company, mostly for research and development or new products. Increasing employees pay can also boost the machine and the product which many companies have forgotten, wage increases are pro-growth which increase consumer power.

Many Amazon employees will probably buy more from Amazon and comparatively Amazon looks good to workers/customers/competitors which may end up in higher sales, all that can be reinvested back into the product.

Amazon is hard to beat with product strategy.
I was just listening to the the podcast when I saw this post. It's great to hear you can make a lot of progress on ML without a PHD. :)
Shkadov Thrusters

https://www.youtube.com/watch?v=_VetAm7fCS0
Probably not a lot of people need the /56. According to some other commenters you can request a larger subnet, I might do that at some point. They should integrate it better.
This sounds great! I hope they offer original language versions rather than only overdubbed.
I'm sorry, but the need for parallelism is exaggerated; it's mostly a fad. It greatly complicates language design and debugging such that it should be added and used with care. Systems software (OS, networking, database engines, etc.) do indeed need good support for it, but the majority of domain applications only need basic support for parallelism (unless you are doing something silly, like reinventing a database). If language designers don't learn to say no to fads, the language becomes a bloated mess that only a mother can love. Let other suckers test fads for viability, and only add features that are relevant and time-tested for the target audience.
not sure if you're trying to be facetious, but no, the answer is not obvious: it could have been the case that the creators of C decided to make it a faithful, thin abstraction aover the hardware of the computers they were using. In that case, learning how C works would tell you a lot about how that specific computer worked.

One point made in the article is that a) C wasn't really developed that way, and b) computers have changed considerably since then, so even the above was true, it no longer is true now.
And seriously, who thought that "MOV A B" actually means "A = B" was a good idea?

68000 has it right!
Worked in the Compact CLR Execution Engine, IL Verifier, and other stuff. On (1) both were done at MS but ended up as proof of concept.

Post Sathya Microsoft has moved to a more open model, hence the full blown CLR on Linux.
An unconventional suggestion: If you are fluent in C & C++, the Tensorow codebase is decent. The kernels are implemented in both CPU & CUDA, so you can have a side-by-side comparison in code and performance without writing the boilerplate. You can fork your own branch to implement your own extensions and play around. Tensorflow isn’t only for deep learning.
I think they're entitled to a basic livable wage so that the federal government doesn't have to give them food stamps and rent discounts. The government's benefits to amazon employees is more or less a government subsidy for Jeff Bezos.
If other people would find it beneficial it can be; I had admittedly seen it as "just a mess of sugar to help me scrape easier" (with all the typical nervousness of showing others "imperfect" code). I'm aptly in the process of cleaning it up, writing tests and finishing an MVP UI. I can do a show HN in a few weeks once I've found the time to get it ship-shape.
Are you aware the TypeScript has mapped types and conditional types[1]? The vast majority of Flow's type utils can be implemented in TypeScript, and many of them are included by default[2]. As far as I can tell all of Flow's utility types are compiler built-ins[3], but TypeScript's built-ins are declared using the type system itself (or are just natural parts of the syntax):

type Keys<T> = keyof T
type Values<T> = T[keyof T]
type Readonly_<T> = Readonly<T>
type Shape<T> = Partial<T>
type NonMaybeType<T> = NonNullable<T>

// Exact<T> cannot be implemented because TS doesn't have exact types as a separate concept,
// It should be noted that object literals are exact by-default if there's a type annotation
// Issue: https://github.com/Microsoft/TypeScript/issues/12936

type Diff<A, B> = Pick<A, Exclude<keyof A, keyof B>>
// Rest<T> should be equal to Diff, because TS doesn't have exact types

type ElementType<T, K extends keyof T> = T[K]
// PropertyType in unnecessary, because T[K] works for everything

// Note that this is variadic - "Args" is an array of arguments
type Call<F, Args extends any[]> = F extends (...args: Args) => infer B ? B : never

// This works for both objects and tuples.
type ObjMap<T, F> = { [K in keyof T]: Call<F, [T[K]]> }

// I couldn't figure out how to implement Class<T>, but you can access the type of a class instance with
// typeof ClassName.prototype

// $SuperType and $Subtype are not documented, so I can't try to replicate them.

// TypeScript doesn't have existential types, but you can emulate them within the type system, or avoid them using e.g "infer"
// Discussion and encoding https://github.com/Microsoft/TypeScript/issues/14466#issuecomment-338045331

I don't agree with your statement about TypeScript's design. Before ES6 TypeScript _was_ quite different from JS, but for the past 3 or 4 years it has followed modern JS very closely. The flavor of JS it supports is fully compliant with ES2018, and the ONLY feature with codegen impact it has in addition to modern JS and JSX are enums - which compile down to simple object literals.

[1] https://www.typescriptlang.org/docs/handbook/advanced-types....
[2] https://github.com/Microsoft/TypeScript-Handbook/blob/master...
[3] https://github.com/facebook/flow/blob/cf03c08109014c4503a392...
Honestly I would just ignore this person @burntsushi .

I actually KNOW who you are from your really consistently excellent work on useful libraries, whereas I have no idea who "pron" is and I suspect he is a troll
I wonder what the actual cost to them was since a change in rate is only a hypothetical to some extent. You have to multiply the delta rate by the number of applicable individuals. What's the `n` for the number of employees who actually worked minimum wage for Amazon? Is it a vast amount of people?
Thanks a lot!

- Good point. It's exactly facing this issue that we build a feature called the "Quick-Switch. Not sure if you had a chance to give it a try. Basically hit "Cmd+T" and you will see a spotlight type of search bar. From there you can search for any app or even page opened within an app. For GDrive (if you connect it) you can search for any document directly there, on Slack you can search any channel or person. We are working on even more integrations. We have built an algorithm that learns from it as you use it, therefore the results will get even better overtime!

- You can already do that by clicking on the bell icon on the left bar (Disable Notifications). It will snooze all notifications from all your app so you can stay focused. We obviously need to communicate better about it :)

- I see what you mean with Zeplin, some of our team members have the same issue. That's because we do not handle well when a URL has a "#" and whatever comes after. We are investigating this issue to fix it.
Yes, puppeteer and ferret use same technology under the hood - Chrome DevTools Protocol.

But, the purpose of the project is not to "be better than". No, the purpose is to let developers focus on the data itself, without dealing with technical details of underlying technologies.
You can treat it as a higher abstraction on top of puppeteer / CDP.

It does not really matter whether it's written in JS or Go. main goal is to simplify data scraping and make it more declarative (even though, some people say it's not a declarative language :))
I don't know about Canada but "Full Professor" means something different in most Commonwealth countries than in the US. Typically a University dept will have a single professor who likely is head of dept, if there's an endowment there might be a second one

(and if you get a Nobel I suspect there's lee-way to confer one)
Isaac Arhur touches on this subject in one of his videos, Intergalactic Colonization [1].

Basically, the void between galaxies isn't actually that much of a void. It's just in intergalactic space stars tend to be hundreds or thousands of light years apart rather than the 5-10 (where we are in the Milky Way) or, say, in light weeks or less in the galactic center.

It's known (and he talks about) stars being ejected from galaxies. This is important because a lot of intergalactic stars have high metallicity and are likely to at least some of the time still have their planetary systems.

It is interesting to consider where these stars came from. A nearby galaxy being the obvious candidate. I wonder if the 3D velocity measurements can be precise enough to ever determine this to a high degree of likelihood. It would be cool to find some intergalactic visitors in our own galaxy.

[1]: https://www.youtube.com/watch?v=xRB7a89Jh7w
Well... C teaches you how a PDP-11 worked, but modern computers aren't PDP-11s either. Most happen to expose a PDP-11-like structure via x86 assembly, but even that abstraction is a bit of a lie relative to what's going on under-the-hood.

C doesn't let you write "string x = y" because it doesn't have string as a primitive variable type; that's the whole and only reason. It's not quite correct to say that "the computer must allocate memory, copy memory, and eventually free memory" to do string assignment---it depends heavily on context and how a given language defines 'string' (are strings mutable in this language? If not, that statement may just be setting pointers to two immutable memory locations the same, and that immutability may be maintaned by type constructs in the language or by logical constraints in the underlying architecture like read-only TEXT memory pages---or both!---and so on).

The old Apple Foundation NSString is an interesting example of how the question of string manipulation is a complicated one that doesn't even lend itself well to the "allocate, copy, free" abstraction you've described. Pop that thing open, and you discover there's a ton of weird and grungy work going on inside of it to make string comparison, merging and splitting of strings, copying strings, and mutating strings cheap. There are multiple representations of the string attached to the wrapper structure, and a host of logic that keeps them copy-on-X synchronized on an as-needed basis and selects the cheapest representation for a given operation.
If you pay them, they will come.
Aside: Chaz (Batygin) is a super great guy and a good role model for HNers out there. His 'About' page is pretty neat:

https://www.konstantinbatygin.com/about-me/

Here's a band photo (Chaz is on the right): https://static1.squarespace.com/static/587e9fe446c3c40b37290...
The flow in the example is simple: click -> wait -> process result; but it's still there. Notice that instructions are executed in the order they are defined, that is enough to make it imperative.
I think that's a plain text way of saying "square centimetres" - `^` often means `xor` thus `^^` to mean exponentiation (and is less obtuse than `cm2`)
Don't you miss virtual functions? I found that no matter how you did it, implementing polymorphism in C (with function pointers) is tedious and verbose ; also, it discourages the creation of new interfaces (too much boilerplate).
>Our current understanding of mathematics and logic suggest that every scientific theory will always have some axioms that we will have to take on "faith".

I don't think this is true. The axioms can be testable, in which case you can do a little better than faith and say that "well, this is how it seems to work." For example I could have a theory that when I press the gas pedal my car moves forwards. Later on I could discover another theory that explains why that theory is true, but in the meantime I'm better than faith but worse than complete fundamental knowledge. That's where physics is - if we had complete fundamental knowledge many of us would go home, having nothing left to do.
How much salary should I be asking for?
just graduated 4.0 Bachelor Software Tech

This will be my first job in development/IT. Looking to get my feet wet for a little while.

Location: Burlington

Tasks:
Web editing (Wordpress/Shopify)
HTML, CSS, PHP
Photoshop
Microsoft Office 365 Suite for MAC
troubleshooting and diagnosing software hardware and networking issues
Voip

small company (<20 employees) I will be sole IT/web developer

I have no idea what I should be asking, and I have been asked to present what I want
> The future is WebGPU

I hope not. The proposed standard was not even remotely vendor-neutral.

I would love to have compute shaders in WebGL. All it would require is bumping the OpenGL version that WebGL is based on from ES 3.0 to ES 3.1 in the next revision.

As far as I can tell, that will not happen because it would reduce the need for the WebGPU proposal. Needless to say, I find the situation very annoying.
How about using an existing language, like Python? You can make a really great DSL using Python, and then people have access to all the other Python language features that they already know, and the stdlib that they already know, and 3rd-party modules they already know..
Come to Europe to get a different perpective. I would guess Bay Area liberals would be placed somewhere slightly left / liberal of center over here. And neo-cons in terms on capatalism. I can only guess what I would be called in the US. Perspective is everything I guess.
I think that a pretty large percentage of these $300k developer jobs are paying that much due to politics more than skill.

By politics I mean that they have worked within the company to attain that salary, taken the right management positions, kissed the right butts, or maybe just got in early enough and at the right time.

Very few open positions are going to be filled with a starting salary of $300k.
Again, no, and IMO the cited case (eBay v Craigslist founders) is again more of a counter example. From the court opinion:

> Having chosen a for-profit corporate form, the craigslist directors are bound by the fiduciary duties and standards that accompany that form. Those standards include acting to promote the value of the corporation for the benefit of its stockholders.

"Value" yes, but again says nothing about "profit". The court acknowledged different stockholders can and do have different and even conflicting definitions for value, and that a contract (not a law) should be used to resolve those differences. In the end the only thing that the judge ruled against were actions specifically designed to destroy the value of the company's stock by making it harder to buy and sell. He didn't order e.g. that Craigslist raise ad prices even though it's widely believed they hold a ton of pricing power and are deliberately avoiding maximizing profit because they prioritize community.
> exempt from oversight from the Federal Government as long as they pass their own laws to justify their egregious behavior

> won't assume oversight of police departments if there is some form of due process

Those two statements (by you) are quite different. I'm inclined to agree with the second one, as I've never heard of a federal agency taking over a local police department before. However, I'm inclined to disagree with the first (depending on the precise definition of oversight, of course). As just one example, consider the DoJ investigation of the SPD a few years ago. https://www.justice.gov/sites/default/files/crt/legacy/2011/...
You have to use some amount of time to get a number measured in dollars. What amount of time do you want to use?
> Basically the goal of the company is to keep the owners comfortable rather than play the unicorn lottery.

Why are those the only two options? What happened to "grow organically into a megacorp over 20-30 years"?
I fail to see why it is bad when economic interest and public interests line up. Would you rather Google not advocate for net neutrality because it benefits them?
No, it doesn't. Go does escape analysis and allocates stuff on heap if needed.
Depends where the warehouse is.
So are you saying social services benefits should be lower? I don't get your point.
Maybe. I'm skeptical that multiple simultaneous discharges wouldn't adversely affect the accuracy.
> This is not the time to talk about guns

That’s disengenuous. I’m saying this is the time to talk about data. But instead of coming out of the gate with a gargantuan salvo or complicated, expensive and unpredictable regulation, let’s start small and work gradually.
"Set a common standard, or we'll set it for you."
So the less fortunate who are forced to rely on these basic jobs should live below poverty, so you can enjoy some extra cash to travel internationally?

The reality is, in modern America the percentage of people relying on these jobs as their sole source of income is much larger than the highschoolers looking to make some extra cash. We shouldn't sacrifice the masses to enable the few to maintain an optional job, in my opinion.
Register renaming was invented to give assembler code generated from C enough variables in the forms of processor registers, so that calling functions wouldn't incur as much of a performance penalty.

The UltraSPARC processor is a stereotypical example, a RISC processor designed to cater to a C compiler as much as possible: with register renaming, it has 256 virtual registers!
Interesting.

> American law didn't inherit such a notion of unlimited legislative authority.

I wonder if this is due to US's structure being that of a constitutional republic rather than a democratic republic. I.e. the Supreme Court (which executes the constitution) must be superior to the legislature.
This is the Opium Wars all over again.
Look on Glassdoor for similar positions in the area then ask their range. If they won’t give you that look elsewhere or give the high end of what you find and start negotiations from that.
For your definition of 'computer', perhaps. Many microcontrollers have the stack defined by the hardware.
Technical nit: POSIX defines CHAR_BIT == 8 and on hardware where CHAR_BIT can be 16, 32 the alternative is to generate a lot of assembly (or just not work) to access 8 bits at a time.

In my opinion everyone should learn assembly in combination with a simple language to understand how a computer works.
LA is not a fashion capital: https://en.m.wikipedia.org/wiki/Fashion_capital.
Mastery learning is not costless. The cost is time: time for the student and time for the teacher.
You're against employees of a company banding together under the right of free speech and negotiating with a company as a group?