My team upgraded our frontend monorepo from npm+lerna to Yarn 2 with PnP. We saw vastly improved installation time, most importantly on incremental installations. The startup times for jest, webpack, and TypeScript also improved. PnP's dependency strictness eliminated cases where updating a package in one workspace would break a different workspace.
It was a fairly difficult migration, in particular because Yarn 2 PnP does not allow you to import a module that is not specified in package.json. Lots of libraries play fast and loose with dependencies, and so our .yarnrc.yml file which adds those missing dependencies is now 172 lines. PnP requires configuration for vscode and a custom build of TypeScript, which isn't ideal, but those have worked well.
Barry Richard, an election lawyer who served as a lead attorney for President George W. Bush during the 2000 recount in Florida, criticized the campaign’s efforts. “I wouldn’t call it a strategy,” he said. “There isn’t any legal basis for anything I’ve seen so far.”
Other election law experts have questioned the multipronged attack. Richard Hasen, professor at UC Irvine School of Law and author of “Election Meltdown,” said the lawsuits, even if partially successful, were smaller-scale and didn’t threaten the results. “If they’re not being filed to change the election outcome, what’s the point?” he said.
Citymapper is excellent, especially for short trips that can be done in many different ways. Sometimes, for longer trips, Citymapper shows “Uber” or “long walk” as part of a route. In those cases, I would generally prefer to bike, without a bike share. Is there a multimodal transit app that includes transit + cycling?
Neat! When working with Options/Results/Iterators, you can use `.map` [1] for exactly this purpose. It would sometimes be convenient to have something like `.map` / `.let` on unwrapped values as well.
While there might be a better syntax if you only care about this one feature, async/await needs to fit into an existing language, and this syntax makes sense with the rest of Rust.
This syntax makes it clear that’s it’s not a function or macro invocation, works the same way as ‘?’, and allows for clear and concise chaining.
I got started by using an organization's API on a platform they didn't support and then offering to be a contractor when they sent me a cease and desist.
I found other odd dev work through family friends and by making a well-performing app for a small platform. This was all a nice supplement during university and internships, but not enough to compete with full-time remote work.
To parse LilyPond you would first need to write a Scheme interpreter. Once you finally get a tree for the sheet music, rendering in a way that is correct, beautiful, and easy to read is no small task either. Sheet music rendering is full of so much nuance [1], and it's really hard to get it right. It took brilliant people many years to get LilyPond to the state it's in today. I picked LilyPond because it's powerful and beautiful. Don't get me wrong, VexFlow and abcjs are impressive projects, but LilyPond has a head start.
I think one day, you'll be able to use emscripten or similar to run LilyPond in the browser. We are not there yet.
I considered Lambda and similar, but keeping LilyPond running as a server allows for lower latency, which is important given how long it takes for LilyPond to start up.
I don't think I'd be able to have the kind of live reloading I implemented here with Lambda.
It was a fairly difficult migration, in particular because Yarn 2 PnP does not allow you to import a module that is not specified in package.json. Lots of libraries play fast and loose with dependencies, and so our .yarnrc.yml file which adds those missing dependencies is now 172 lines. PnP requires configuration for vscode and a custom build of TypeScript, which isn't ideal, but those have worked well.