350 karma · joined October 31, 2023
Making sure you don't divide by zero is just one of those things programmers learn... like making sure you don't derefence null or go beyond the size of your array, or overflowing... not clear to me that masking that helps, maybe the ship wouldn't strand but instead it'd run into a bridge.
It's ok for you to disagree with those objectives, or Israel's assessment of threat, but you can still see how a truce that leaves Hamas in power does not align with Israels' declared objectives. If you can offer a truce to Israel that removes Hamas from Gaza and Israel rejected that then I'd support your argument but that option is not on the table at the moment (partly because it does not align with Hamas' objectives). From Israel's perspective the proposed truce neither guarantees the return of all Israeli hostages nor the removal of Hamas from Gaza.
Israel's current government is also unlikely to work towards the proposed truce because it involves releasing Palestinian prisoners which will be seen as a win for Hamas and also a potential for future violence. This is where Israel is divided internally with many (most?) supporting a truce and parts of the government working against it. But most Israelis would still see the truce as temporary and agree that Hamas' survival in Gaza is not acceptable after Oct 7th. If Hamas was to e.g. leave Gaza (like the PLO left Beirut) then many options open up for ending the war and moving forward (including removal of the current Israeli government).
Again regardless of your opinion/politics you need to see this from Israel's side if you want to be able to achieve a solution. The Ukraine/Russia conflict is similar in that you need to understand what both sides are looking for and what they're willing to concede before you can end that war. Just saying that you think the war should continue until Russia is repelled from the entirety of Ukraine, while potentially a reasonable moral position, may not be a practical one or one that minimizes the number of people getting killed. I say that as someone who is 100% supportive of Ukraine. There's the idealistic outcome and then there's reality.
It's certainly true that if Israel has no other alternatives, and under the assumption it views Hamas' survival in Gaza as an existential threat, then it will continue to use force to achieve that objective, which will certainly lead to more people getting killed. Israelis and Palestinians.
If this is the scenario we're looking at, and we want to minimize Palestinian suffering and casualties, then we should be looking at how this force can be used in the most optimal way to achieve these objectives. For example, a truce that gives Hamas a chance to rebuild its defenses and re-establish control over broader areas of the Gaza strip is almost certainly going to lead to more suffering and casualties.
Good software developers are a scarce resource. There's a lot that goes into the mix of making one. AI can't replace them yet. They're critical for the success of many businesses.
We were in layoff mode but that seems to be reversing. Even if we see a bit more ups and downs the trend of more technology everywhere and the increasing demand for building and maintaining all that technology is not going away. The only real game changer is AI but when AI replaces all good software developers it has replaced everyone in the job market and we have bigger worries if we're even still around.
For example, Israel was pressured to delay its offensive in the beginning of the war after the Oct 7th attack, which likely caused more casualties and prolonged the war and it was pressured in other ways that prolong the war. There was certainly nothing like "unwavering support", e.g. there was intense pressure to avoid an operation in Rafah, e.g. with the US administration saying the population could not be evacuated, but then Israel ignored that, and the population did evacuate.
On the other hand, there is virtually no chance that the US could have forced Israel to stop the war because Israelis view this as an existential threat. No threats or measures the US would take would override that view. This is likely why Biden is not able to stop the war by making a phone call.
I think it's important for people that want the war in Gaza to end and to see less casualties and suffering to understand this calculus. Israel's and Hamas'. What those people seem to be working towards in practice is a prolongation of the war, more suffering by everyone, and possibly the election of Trump in the US.
There may not be out of the box fuzzers that test device drivers so you hoist all the parser code, build it into a stand-alone application, and fuzz that.
Likely this is a form of technical debt since I can understand not doing all of this day #1 when you have 5 customers but at some point as you scale up you need to change the way you look at risk.
In your example the tab is strictly finger-picking over chords since that's how the song goes but some tabs are lead guitar tabs which might be sliding from the 15th fret to the 3rd fret or other things that are not strictly picked from a chord shape. They might still be "from a chord" or "played over a chord" but when you play the tab you may or may not be using that shape at that position. It's still good to know what's the context so definitely having the chord is useful.
If I'm playing a song with a clear picking pattern over chords I might just learn the chords and strum them first and then learn the pattern or often the patterns are just standard and all you need is the chord chart.
I've definitely seen tabs with the chords on top, in Ultimate Guitar it depends on whoever transcribed it, random e.g.: https://tabs.ultimate-guitar.com/tab/misc-traditional/greens...
CrowdStrike won't be able to upgrade itself through your database API...
EDIT: Also you have to be missing at least one note... CMaj7 had 4 notes + 13 ... c e g b + a (the 13th) so CMaj7/13 Add 4 ?
The OP (as I understand it) was wanting to be able to know what shape/grip to use for picking the relevant notes... I'm sure it can be done but you have to also find the position and reasonable shapes that fit the notes in the bar.
XEDIT was a great editor. There was also Rexx (and previously EXEC and EXEC/2) as the system's programming language that you could use to customize virtually every aspect of the editor and automated tasks. Rexx had integration with the editor and also integrated with the OS there were lots of these small integration points that let you do really powerful stuff. Applications like email were implemented on top of the basic OS and editor. A very unique and powerful architecture (mirrored to some degree in OS/2 later).
The ecosystem was incredible. The virtualization support in the CPU let you run a complete multi-user system with each user having a visualized CPU within one virtual CPU. I.e. it was "fully" virtualized. What's more incredible is that a lot of these pieces, like the OS, were all written in assembly. Super robust. Super clean. Amazing documentation for everything. As top notch engineering as it gets.
The full screen terminal (e.g. 327X) were part of the architecture, delegating a lot of the interaction to the terminal. Interesting enough you could poll the terminals for input which we've used for writing some games. A friend of mine wrote a library for doing that. There were also colour/graphics terminals like the 3279 and could be programmed e.g. with a library called GDDM.
EDIT: - https://en.wikipedia.org/wiki/VM_(operating_system)
Another interesting bit is that IBM shipped the full source code for everything (I think this was by default). They also had a shared bug reporting system (anyone remember what that was called?).
It's quite tricky is sort of the bottom line. It's not enough to just create fake time there's a lot more to it.
[fixed typo]
I never heard this story...
I have a lot of respect for people that are confident in something who are willing to actually go and do that something, even if they're wrong. Persistence in this context is persevering through being wrong and not giving up until you figure out a way to solve the problem.
Your slowness is always a function of the underlying building blocks, their performance distribution and bottleneck. And sure, two 90th percentiles can make for the 99th percentile. A profiler won't magically convey the information about what sequence of operations a request is doing under the hood.
I agree that having visibility into the requests via tracing can help zoom in on the problem. But so can having metrics on the underlying systems, e.g. if you have a queue in your system you could look at the performance of that queue.
I'll admit that most of my experience is tuning for maximal throughput rather than a given percentile, usually systems with high performance/throughput yield a much flatter distribution of latencies at a given workload. A rule of thumb. I also tend to think about my "budget" in the various parts of the system to get to my desired performance characteristics, a luxury you don't have on "legacy" systems you need to troubleshoot some behaviour on where tracing also lets you get a "cut" through the stack that shows you what's going on.
Tough situations to handle.
random nit (obviously not having read the book): I would say p99 behaviour can be captured in profiling, it's just going to be the p99 of the profiles. E.g. if you sample 10,000 stack traces out of your executable, 1% of those are going to be in that p99, sort of by definition. Tracing through requests (e.g.) is useful but I wouldn't make as strong as a statement as that's the only way of understanding p99 performance based on my experience.
Maybe the bigger problem is at what point do the profiles feed back. Since a compiler may generate many object files which are then linked to form the final binary you'd sort of maybe want to do this in the linker vs. earlier on.
I guess specifically with the kernel there's an extra layer of complexity. It looks like they use `perf` to record the profile which is cool. And then they apply the results to the binary which is also cool.