HN user

jzoch

1,042 karma
Posts1
Comments171
View on HN

Being the scale of Amazon has nothing to do with whether or not fault-tolerance is important to an application. In fact, amazon has far fewer real needs for fault-tolerance than many other businesses (its a retail site!).

You should use embedded mode if you do not require fault-tolerance and can miss updates. Otherwise, don't. Regardless of scale.

It depends - usually moving computation closer together is much more performant. You may be underutilizing your DB or spending a lot of roundtrips on networking and this is a good way to reclaim that. It does not prevent you from having services - it just reduces the #.

yeah this is where traits instead of hierarchies become useful - I should be able to implement the Hash interface for an object I do not own and then use that object + trait going forward for HashMap and HashSet.

Java doesnt make this very composable

perhaps if you are driven and understand what you are supposed to be working on remote work is not a tall order. School, on the other hand, is not intrinsically as interesting as whatever career you chose. You don't get paid. You are younger (and thus may be less able to concentrate on boring tasks).

They are different. In some contexts more than others but still different. I love going into the office but pretending its magically more efficient is a bit silly. I like getting distracted at work but don't think it makes me more valuable to the company. I certainly don't write better code at work - if anything my home office allows me to shut out distractions more easily (a luxury not everyone has). This entire argument is silly - not allowing remote work is denying a large portion of a workforce. That workforce may or may not be better or worse but its certainly cheaper for the employer. Why deny yourself a large talent pool?

look at companies like dataminr or plenty - they have taken over a billion dollars in funding afaik. That level of cash is pretty rare for successful companies from what I see. 100M is a lot too though - i don't disagree.

This isn't really targeted for small devices - its very very applicable with large computers in datacenters (id argue those machines will benefit even more from this). Any time you wait on I/O you potentially park an entire thread when you could be multiplexing your threads. This is a net win for almost all users of threads (except perhaps 100% cpu intensive tasks)

Appreciate your response but disagree with the premise that > That's how much everything, from infrastructure to land use to feed to water to labour to delivery costs for the same ground beef you'd get from livestock.

There are a ton of subsidies provided by the government that are not accounted for in this cost. Water rights, land, delivery all are accounted for differently and I would not say with any measure of confidence that they are all represented well in the consumer cost. There is also the large externalities that are completely not accounted for like carbon emissions.

It is sort of like comparing electric cars vs gas back when people would comment how cheap oil is and ignore the wars fought over it and the environmental devastation wrought from its production.

What solution wouldn't require its own specification + quirks? Whether its a Dockerfile or nix package I don't see the difference besides people tend to be familiar with only 1 of the many options.

Im not comparing whether Dockerfiles or buildpacks or nix packages are more ergonomic than one another but i do think your comment is...misguided. From what I have heard Nix is pretty wonderful to use and simplifies the problem - it just requires you learn about Nix a bit which i think is a fair trade-off for the benefits it supposedly provides

Stop Death Shaming 5 years ago

Its culturally acceptable to shame drunk drivers, smokers (in public spaces), and more. Im not necessarily agreeing we should but it certainly follows that shaming people for endangering others re: vaccines is in line with modern cultural norms.

you must be running tiny containers - I spin up a dozen containers and run a few tests every day. The entire test suite takes 45 minutes on my mac and 25 on linux. Docker for mac performance is atrocious

I've heard the same thing about C and why is C++ or Java necessary. Ultimately, I believe programming languages should strive to prevent mistakes early on in the lifecycle of a program. One easy way to do that in production software is to unify the control flow of happy-paths and error-paths (something go already does) and make sure that the error-path is acknowledged and not ignored (something it does not do).

The weakness in the current design is three-fold for me: - I can "forget" to handle in error (ok this can be linted for maybe?) - There is a lot of ceremony in propagating errors up the chain (a very very very common thing to do!) - The convention of (ok, err) is not always conformed to and ultimately provides no benefit over more concrete typings like Result<T, Err>. Now I can easily grep for fallible operations or operations that call fallible operations!

You may be fine with it - I hear the same argument from my coworkers about checked exceptions in java. I think we can do better.

you have failed to sufficiently explain

This is the problem right here. I don't just read code I've written and I don't only read perfectly abstracted code. When I am stuck reading someone's code who loves the book and tries their best to follow those conventions I find it far more difficult - because I am usually reading their code to fully understand it myself (ie in a review) or to fix a bug I find it infuriating that I am jumping through dozens of files just so everything looks nice on a slide - names are great, I fully appreciate good naming but pretending that using a ton of extra files just to improve naming slightly isnt a hindrance is wild.

I will take the naming hit in return for locality. I'd like to be able to hold more than 5 lines of code in my head but leaping all over the filesystem just to see 3 line or 5 line classes that delegate to yet another class is too much.

They could not actually do this in Rust. They had to cheat.

That isn't true at all. The implementation of scoped_threadpool being in rust is all the evidence you need that they did not cheat. unsafe is a perfectly valid construct in rust that does not subvert its benefits. It just is a reversal of the defaults in other languages (unsafe by default - opt-in to safer constructs like smart_ptr).

People freak out too much over this stuff. If you are learning - feel free to use escape hatches from "idiomatic rust" but recognize that you aren't being idiomatic (and therefore may be handicapping your learning!). Its okay to use unsafe despite idiomatic rust trying to avoid it unless necessary (and even then providing safe wrappers over it). Its also okay to use Arc<Mutex> and the like if you need to just recognize there may be a better way.

Tree style tabs on the side of my window absolutely changed my computing life. I stopped seeing tabs as a collection of what Im doing and instead started using them + the browsers inclination to save my tabs across restarts to track everything.

Ill have a tree of tabs for blogs im reading, a tree for work stuff, a tree for amazon orders, etc. All that context can be closed in a single click. Ill have hundreds of tabs open (but asleep!) and just pick the tree im interested in. Dont need to save bookmarks or save articles for later - they are all there always.

Definitely not true. Cross AZ is incredibly high compared to within the same AZ. We run a bespoke multi-master database setup that must be colocated to the same AZ due to unacceptable latencies when run spread across 3 AZ's. A few ms difference

I think its pretty clear there are problems on both sides. Managers need to learn the correct approach to facilitate acclimating their team to remote work but each individual also could improve how they work so that remote settings are more optimal. Nothing is so black and white.

That's probably survivor's bias and not true at scale. "Right environment" is shaky - we should strive towards defining what makes an environment the "right" one and how can we increase the number of engineers that successfully acclimate to their new way of working.