Most common use case for concurrency is for IO intensive workloads. When it comes down to IO, programming language hardly matters.
If you have CPU intensive workload, an optimizing compiler can help. Well, for that you have C or other languages with more mature and aggressive compilers.
Well, there is a well defined pattern using configure and make. When very complex builds like GNU Emacs and operating systems have done quite well with this pattern, I wonder what problem we are trying to solve.
NetApp has a very interesting implementation RW spin lock inside the kernel. I tried optimizing to make it more fair for writers by introducing a single variable that would be check in each iteration.
The additional delay it added for checking the state resulted in deadlock timer triggering a dump! Hence, checking a variable is very expensive.
In a spin lock, the lock state is checked in a tight loop by all waiters. This will be using some sort of memory fence. FWIK, memory fence or barriers flush the CPU cache and would initiate reading the variable (spin lock state) for evaluation. I would expect spin locking overheads to increase with number of cores.
On NUMA, I think flushing is more expensive.
Hence, spin locks have an additional overhead of having to load and evaluate on every spin as against being woken up for mutexes (like a callback)
Most software companies I have worked for, encourages filing patents just to build their arsenal and increase their market value in times of acquisitions or patent wars. They are not focused on creativity, innovation or advancement.
I have seen a patent to use SSH to administer a storage system! It was just depressing and sad to see such patents granted and the inventors bragging about it.
That was my resolution a couple of months back. Signed off from Facebook, Instagram, Twitter and Reddit (never was on any other platform making crazy things with your snaps). Retaining accounts on HN and GitHub.
I miss nothing, actually feel good staying away from all the toxic comments on Twitter.
I did not need Light Phone or burn a hole in my pocket to achieve this. Plain simple determination.
Analogous to “putting all eggs in a single basket”, the risks are very high.
You end up becoming hyper sensitive at work, start taking everything personal -well, it is your identity or ego at stake. Leads be becoming very closed, guarded and aggressive. Everyday becomes a fight for survival.
I personally went through this phase for a long time. Looking back, some of my managers exploited this by reinforcing. They knew if they compare me with anyone, I would up the competition and perform even better. This did not cost them money since I had invested myself, my identity and ego 100%. Overall, resulted in a highly competitive team but extremely stressful and caustic!
After changing teams, I decided to take a step back and make a fresh start. I now work for the love of my work and do not let it represent who/what I am. It is my identity at work. Back home or with friends, I have a different identity. Having multiple things to fallback has made me more resilient and lot more positive.
Schools and colleges should ideally be a place for creativity, free thinkers and open by default.
Using surveillance and improving attendance through fear tactics is not going to help. You will get their physical presence but not their involvement.
I wonder how long it will take for students to start placing check Bluetooth devices in all places they are expected to be present and remotely switch them at desired times. I hope this happens and defeats this unethical forced surveillance by colleges.
Alternatively, I would encourage student counselors spend a little more time with students and assist them to monitor themselves. Motivate the youngsters to better regulate themselves and grow up to be independent and responsible adults.
Note:
On Android, there is an app named Tasker. You can automate your phone with it. Schools could start maintaining shared Tasker profiles that can help students stick to some well defined and commonly followed routines. This is giving control back to the student and coaching them about the merits in planning and sticking to plans.
Thank you very much for the wonderful and very insightful article.
Developing the humility and truly believing that we are all snowflakes and willingness to learn from the diversity around us is a big step forward.
I loved the analogy between leaders and bridge builders. I always considered leaders as those who build a pedestal or platform or ladder for the rest to use and grow. Very similar.
It gives me confidence and courage to take up a few courses myself and enjoy learning and not just go after grades.
eBPF can be viewed as a mechanism to safely run user code in kernel since it uses a DSL and a compiler before the byte code is executed in kernel. This opens up doors for running performance critical functionality in kernel without having to bundle it with the kernel or very tightly coupled with the kernel version.
I expect custom security auditing software, reverse proxies, firewalls with rule engines implemented in eBPF in the coming future. This will avoid having to copy dates across kernel and user boundary and the switching overheads.
Thank you for the link. I am at a juncture where I need to relearn some of the basics to help my higher school going daughter. The book on math and physics was exactly something I was looking for.
I would also like to get my hands on Resnick and Halliday books that I studied back in India during 11th and 12th.
Almost every language supporting inheritance suffers from lack of ability to check if an error is part of the derivation chain.
I have implemented this using expensive dynamic cast in C++ and instanceof in Java.
GCC uses intrinsic functions when available during compilation. It does optimize for a specific architecture.
Is there something beyond this you are referring to?
I went through the process of tearing away from Chrome. I only aspect that was holding me back was my stored passwords in Chrome and shared seamlessly with Android password manager.
Exported the passwords and imported it into Enpass. That was the first step in liberation.
I then decided to keep my personal and work related browsing separate especially since both require a google account (Gsuite at work). I wanted an ability to open the browser of my choice based on the URL I click and work anywhere on MacOS.
I implemented a simple URL handler that I register as default browser and that opens the clicked URL in appropriate browser:
Twitter has become a breeding ground for mobs and unjustified moral policing.
I started following people based on the technical work they have done and was hoping to learn or get inspired them.
Apart from a very few, every accomplished technologist have started using Twitter and their followers to attack others. This is nothing but the witch hunt from medieval times done differently.
I have interacted with RMS in Emacs developer list, he has a strong opinion and nothing more, nothing less. He is not trying to create a mob and nor is he starting an upraising. If you have an opinion, voice it and leave it. Yes, I agree RMS needed a PR to tread the land mine ridden modern life.
Overall, it is sad to see RMS and his work getting trivialized for totally unrelated reasons.
I think it again falls into kernel versus whole system. Releasing an update to the whole system is more work than releasing the kernel.
Little orthogonal:
It sort of rhymes with the mono repository versus collection of micro repositories mindset. Does BSD have more code reuse since it is whole system?
The prescribed order was to install XP and then Linux on a different device/partition. Linux would install Grub or LILO in MBR with dual boot options.
Hence, the easy way to clean up Grub or LILO was to boot into DOS from a CD or floppy and run ‘fdisk /mbr’