Blog‎ > ‎

China, Spanner, SeaGlass, JSON-DL, Optimization, Benchmarks

posted Jun 23, 2018, 11:34 PM by Sami Lehtinen   [ updated Jun 23, 2018, 11:35 PM ]
  • Read about China's new Cyber-Security Law. It's interesting to see how it will practically work out. But it's clear, that it's giving hard time for foreign companies. Bei'An license laws. kw: China, Cyber, Border, Protection.
  • It seems that Microsoft has been lately pushing SPLA licensing checks on multiple cloud providers using their selected collaborator companies in each jurisdiction. Anyway, with current development on Microsoft's side, if someone mentions data security & privacy with anything to do with Microsoft or Windows, it should trigger immediate seriously meme faces and then hysteric laugh. As mentioned, it's totally clear that every computer running Window's isn't technically your or your companys computer. It's Microsoft's computer and part of their world's largest botnet. There's no need to worry about ransomware, malware, spyware, bloatware, remote backdoor installation / dropper, or anything like that. Why? Because your system is inherently infected and compromised, with Windows (tm) products, which fits into all of the previously mentioned categories. kw: SPLA, License Agreement, Enforcement, Audit, Microsoft, Security, Privacy.
  • How Spanner became a global, mission-critical database - Very nice post by Google. Strong consistency, ACID transactions. Nice. It's always interesting to follow database and big data development. Even if I don't have personally any need for such technology right now.
  • Reminded my self once again about Python iterators and generators. I'm not using those too often in my code. Mostly because I've got data to process, which can't be generated.
  • SeaGlass - Way interesting project to monitor and track IMSI Catcher (Stingray) usage in USA. Had to read all about the project.
  • JSON-DL - JSON based format for Linked Data. Pretty simple stuff, just standardized format. I'll use that in future when ever it's required and suitable.
  • An optimization guide for assembly programmers and compiler makers (PDF). I'll scan that quickly through, and see if it contains anything essential which I didn't know. Probably not, but it's always nice to be surprised by new important information you didn't know. kw: caching, registers, instruction decoding, pipelining, branch prediction, cache coherency, speculative execution, branch misprediction. Branch Target Buffer (BTB). So many different predictors and algorithms, nice. Indirect calls and jumps. Cache bank conflicts. These are generally good to know, even if I don't personally have any use. Register renaming was a new concept to me, I didn't ever think that stuff like that would be required. After all, it's more efficient to rename a register than actually transferring the data. Also the concept of using XOR EAX,EAX or SUB EBX,EBX was kind of funny. I know coders are creative sometimes but why not just store zero? I do remember the story of x86 memory segmentation where jumping 64K-2 forward was faster than jumping two instructions backwards. These sounds like technically similar quirks. Of course the Intel Skylake and AMD Ryzen sections were the most interesting ones.
  • Benchmarks between common programming languages - Really nice site. Yet as being said, suddenly C vs Python performance becomes totally irrelevant, when you've just got a single bad SQL query in your program. That's the primary reason I'm using Python, because it allows me to write reliably programs which do the required stuff pretty quickly without going into too many nitty-gritty details. I know performance could be better, but when profiling, the Python code runs usually less than 10% of the time and rest of the time is spent fetching data from different sources, even when using efficient in process caching. This is also the reason why I often use processes + threads. To improve CPU utilization and shorten execution time. 
  • Something different? Checked out Dongfeng-5C (DF-5C) - missile with nuclear MIRV capability.