2,494 karma · joined February 27, 2017
GitHub: nicholaslyang Email: nick@nicholasyang.com
And citing parsing isn't a great example. Parser generators have been around for ages. And they're usually not the hard part anyways. Defining a simple grammar and parsing it, even manually, isn't that terrible of a task. Getting decent error messages and figuring out recovery? That's trickier.
Code generation has certainly gotten easier. But you still need to go through the process of figuring out how to lower your abstractions. My language is still extremely basic but I've still had to map my high level types and control structures down to WebAssembly. LLVM won't do that for you.
There's also more that your average user expects if you want a language that people use. Decent tooling is important, so a language server and some syntax highlighting packages in different editors. Good error messages. Decent type inference. Most of these you can eschew in the first few iterations of your language but eventually you'll need them.
I feel bad criticizing this post because writing a language has been one of the most instructive experiences I've had. I've learned so much about code generation, typechecking, the WASM spec, etc. But it's still a lot of tough work to get to something people can use. I'm not sure parser generators and LLVM make it that much easier.
It'd be interesting seeing the long term effects high school sleep schedules have on people. I wouldn't be surprised if poor sleep patterns in adolescence lead to insomnia and other issues later in life. I definitely felt like my high school sleeping patterns were damaging to my mental and physical health.
I wonder if companies like TripleByte are actually successful in solving this issue. I've avoided them because I'm skeptical of recruiting companies, but it might be a good idea to have people take one coding screen and have it apply to multiple companies.
Or I could chain an ok_or_else on an Option but ugh now Rust is complaining that I'm capturing a reference to self. Screw it, I'll rewrite it to be an if let with a return. Part of the problem there is that we know an ok_or_else with try! will execute the closure and return if the value is None, but Rust's borrow check doesn't know that.
None of this is Rust's fault. It's just that it's hard to combine ergonomic closures and borrow checking.
If you're looking for another good fermentation, kimchi is a great one. There's nothing better than making kimchi fried rice or kimchijjigae with homemade kimchi.
I wonder how long until we get a somewhat mainstream language with pi types. I know Rust considered adding them. And I recently learned that Rust does allow for quantification over lifetimes^[1]. I could certainly see a language that implements dependently typed arrays. Midori for instance looked into eliding bounds checks with compiler proofs^[2].
[1]: https://doc.rust-lang.org/beta/nomicon/hrtb.html [2]: http://joeduffyblog.com/2016/02/07/the-error-model/
That's a good point. I wonder how many successful apps used tech that only appeared boring after the fact. Rails is a fairly boring stack today but back when GitHub started, it probably wasn't.
Also yeah it is fine to say "I don't care for JS" sans explanation. But if someone were to ask why, it'd be reasonable to expect a list of justifications that had some nuance.
JavaScript undeniably has some problems. It's also undeniably useful and eating the world. If you can hold both of these stances in your head and reconcile them into a nuanced opinion, then that's a great sign. If your viewpoint collapses into "JS sucks!!!" or "JS rules!!!" then you're not providing an opinion as much as a dogma, often one that is regurgitated from some other source.
I'm not saying that one should find JavaScript good or bad by the way. Someone who abjectly dislikes JavaScript but also understands its utility is quite useful. The creators of TypeScript, ReasonML, etc. all had to dislike JavaScript in some form. But they had to dislike it in a productive, nuanced manner.
Parasite's storyboards: https://www.indiewire.com/2020/05/parasite-bong-joon-ho-stor...
On the flip side, Terence Malick gives you an index card with an aphorism and lets you improvise: https://www.businessinsider.com/thomas-lennon-terrence-malic...
It's interesting seeing film ideas repeat and be interpreted by multiple directors. It's almost like some ideas need to bounce from director to director before they find the right outlet. I Live In Fear begets Dr Strangelove begets The Sacrifice.
White families have ten times the average wealth versus black families. Putting aside the significant mountain of evidence racial bias in hiring, in tech, in basically every facet of life, that single statistic should be evidence enough that more funding is necessary for minorities.
And what hypocrisy? You can say that black people are not inherently different but face different circumstances due to societal problems. That's not hypocrisy. That's simply acknowledging that race plays a factor in nurture but maybe not nature.
Another artist who I've been thinking about is Michelangelo Antonioni. There's something about his juxtaposition of the characters' alienation with the spaces they inhabit that resonates with the pandemic. The phrase "social distancing" beautifully sums up so many of his films.
I know I came into college determined to do a double major only to realize that I probably should have made that decision after taking a few courses and evaluating my level of interest in the two subjects.
Do you legitimately see no difference in websites from 2012 and 2020? I'm honestly baffled if that's true. Payments are a massive difference that I've noticed. Every decent ecommerce site these days uses quite a lot of slick tricks to make the purchase flow really easy. Whether it's autocomplete based on Google Maps address data or being able to do everything without any obvious page refreshes, payments are significantly slicker. React definitely facilitates this.
> There is no 'round trip' for server render
Uhh there is a round trip. You click on a link, the new page does a request, loads new HTML, new CSS and paints the new page. Sure, an SPA takes longer to load up front, but you can now ensure that everything past that point is seamless. On a site like Facebook where the initial load won't kill conversions (because people are already addicted), you can take a 500ms hit so that stuff like infinite scroll and seamless notifications keep people on the site.
This article also doesn't delve into why Facebook supports React so much. Or why Twitter, Reddit and the rest are switching to React. The answer being that React lets developers make really smooth, really addictive websites. I wouldn't be surprised if there was some studies showing that any flash of unstyled content, i.e. a server render round trip, lowers conversions by x%. Therefore having a client side app is imperative if you care about having your users on your site. Multiply it by Facebook's revenue and paying the few million to fund a team of developers is a really good deal.
1. Don't take all CS classes. Try other subjects and diversify your knowledge. 2. Get good at sending emails. It can help you get a job, get contacts or just gather information. 3. Even though you should take non-CS courses, that doesn't mean you should get a double major. It's not always worth it. 4. Make sure you like CS. Having experience is a good sign, but people can be advanced or good at a subject they don't like. Make sure you like it even when it gets tough.
[1]: https://blog.torchnyu.com/2020/03/04/take-fewer-cs-classes.h... [2]: https://blog.torchnyu.com/2019/12/19/sent-from-my-iphone.htm... [3]: https://blog.torchnyu.com/2020/05/15/the-case-against-double... [4]: https://blog.torchnyu.com/2020/05/14/do-you-like-it.html
The particular point of this project was to prove that each successive simplification that my friend proposed, i.e. avoiding Webpack for native ES6 modules, using lit-html instead of React, etc. introduced its own complexity. I'm not saying that these were all bad ideas, but just that they're fundamentally tradeoffs. I'm quite sure lit-html is a great stack. But it's not "better" than React any more than React is "better" than Angular.
[1]: Lack of async/await, or its equivalent, let+ in OCaml 4.08, is a big one. Mediocre typings for browser APIs is another.