Shells are much better than python at managing and orchestrating process execution. Also the pipes and filters model is simple and powerful when it fits your problem, which for me is many times a day.
I've failed system design interview where they repeatedly asked me to design "for scale" but all the volume and latency requirements I could get from them could be handled by a single HA pair running a monolithic server+ external managed data store.
They also seemed annoyed that I am asking them questions that are not part of the problem statement instead of getting down to drawing a fancy diagram.
I'm sure they hired someone who drew a lot of boxes with cute logos because webscale.
Latency and volume aren't the only requirements, perhaps you failed to discover the other requirements of the system?
- In a fast system most of the latency will come from geographical distance, an HA pair can't serve the whole world with low latency.
- How do you handle new releases? You can do HA with 2 machines, or you can do safe rollouts with blue/green machines, but you can't do HA and safe rollouts with just 2 machines.
- What if you want to test a new release with 1% of traffic? 100 small machines might be preferable to 1 big machine, or 10 medium machines each running 10 instances, or whatever.
- What does the failover look like?
- You use an "external managed data store", but often the tricky bit is the data store. Externalising this may be the most practical option, but it doesn't communicate that you know how it needs to function.
Alternatively this might have just been a bad interview. Many are.
From reading your response it suggest me the riddridiculousness of the System Design interviews. Are folks are supposed to design a planetary scale system in <1 hours?
> From reading your response it suggest me the riddridiculousness of the System Design interviews. Are folks are supposed to design a planetary scale system in <1 hours?
No, they are expected to be presented with a set of requirements and present a solution that loosely meets them. That is used as a backdrop to ask technical questions and see how a person collaborates.
Yes, I would expect people to be able to discuss all of this and more, with trade-offs, in 1 hour. I'm not expecting any code, I'm only expecting a box diagram at best, and it won't be a finished design, but the whole point of system design is being able to come up with designs to meet exactly this sort of thing.
The interviewer was clearly annoyed at my questions, it was not that I didn't discuss the right things, it was that I asked too much and drew too little.
You forgot to design a new energy grid, in case a freak solar flare knocks out most of the world's grids. How can you deliver at scale if there is no scale?
What about new tax policy to encourage people having more children? How can you deliver at scale if the scale is shrinking?
The difference of course being that I deal with the issues I listed on a daily basis and would interview for it, while I have yet to deal with solar flares, tax policy, etc in my role as a software engineer.
> I've failed system design interview where they repeatedly asked me to design "for scale" but all the volume and latency requirements I could get from them could be handled by a single HA pair running a monolithic server+ external managed data store.
It's nice that you estimated throughputs and provided your assessment. Odds are that's not the problem you were tasked to solve?
I mean, arguing your way out of proposing a design for scale reads as if you're at a test and you're claiming you shouldn't be asked some questions.
> They also seemed annoyed that I am asking them questions that are not part of the problem statement instead of getting down to drawing a fancy diagram.
Clarifying questions are an expected part of the process, but by it's own nature the design process is iterative and has a initial design on where to iterate over. If you do not show forward progress or present any tangible design, your own system design skills are immediately called into question as, in the very least, it shows you're succumbing to analysis paralysis.
Think about it: you're presented with a problem, and your contribution is to complain about the problem instead of actually offering a solution? What do you think is the output valued by interviewers?
Regurgitation what amounts to ai slop these days paints a clear picture of your Company to the market. Companies that use l33tcode are filtering out pools of talent, in exchange for monocultures of echo chambers. Makes it easier swing the layoff ax when they need to posture to the market differently.
The fact that this ^^^ is run by AI shows just how irrelevant technical interviews like this are these days. Why take a closed book test for a job that you never have to work a day in your life with the book closed?
If you are an experienced dev, u can rank other devs pretty quickly with a general conversation about any technology.
> Companies that use l33tcode are filtering out pools of talent, in exchange for monocultures of echo chambers.
Please explain why do you believe that not moving forward with a candidate who fails basic coding challenges leads to "monocultures of echo chambers".
> The fact that this ^^^ is run by AI shows just how irrelevant technical interviews like this are these days. Why take a closed book test for a job that you never have to work a day in your life with the book closed?
You're trying to fabricate scenarios that never applied. There are no "book closed" exams, and no company hires developers on hard skills alone.
> If you are an experienced dev, u can rank other devs pretty quickly with a general conversation about any technology.
No. No, you don't. You think you can, but you're just deluding yourself. You have no idea if your personal biases got your best candidate rejected, or if your pick just is a top of the barrel candidate who enchanted you with buzzword lingo? This is a fact, and I've seen this play out in real life. I've seen team leads succumb to this sort of delusion and ehen they realize they hired smooth-talking scrubs that need constant help from junior devs to unblock themselves, you start to hear excuses such as "he was given an opportunity but squandered it". This is something that negatively impacts everyone involved.
If you don't like fiat there is always gold. If you really care about value, independent from the monetary system (post-apocalyptic safety), buy tools, grain, generators and oil, though many of these things are perishable and storage comes at a cost.
One must ask whether the Bitcoin valuation has raised 1000% because the fiat has inflated as much, or is it mostly driven by speculation. For reference point, the buying power of fiat currency has not changed dramatically during the same period.
Some years ago, at the height of the Augmented Reality bubble, I had a hackathon idea about smart sunglasses that would replace any detected poster and billboard with information of your choosing - your favorite art, personal photos, notifications about upcoming alarms.
I am no longer into hackathons, but I would pay good money for such a product. Bonus points if it is styled like Nada's glasses from They Live.
There's a fair bit more that is possible that would otherwise require a fair bit more code wrangling with AspectJ or BytecodeBuddy to achieve the same effects.
I tried to skim-read through the Unison About page, but all I saw was an under-designed variation of Jetbrains MPS for a single language. I assume you have spent longer with the project - do you care to summarize the differences?
From my experience, using the Google maps within the city, it tends to ne pretty sparse with labels by default.
This is a good thing because in a place like tokyo there is just too much stuff - if I care for aometgubd I either search for it, or drop a pub and check what is around.
On the other hand, Maps always shows the labels of things I have searched for in the past, yielding a customized legend of landmarks+things that matter to me.
I really like SemanticMerge, in its current shape it is litte more than a fancy proof of concept.
Its biggest limitation on real projects is that it works on a single-file level, while all the interesting stuff happens on patch level. You may browse their forums to get an idea of what else is missing.
That said, I wish all the best to Codice and I really hope that they continue to invest in this tool.