So I’m working on a project at work where I want to rebuild my code whenever I save a source code file. Today I found the tool ‘entr’ and it’s a great thing to learn about. (I should totally send this to Julia Evans!)
All I needed to do is run
ls *.src | entr make
And that’s it. It’ll re-run make every time I save from the editor. Simple, helpful, open source.
This will be a series of posts. I upgraded my NAS to a model with dual 10G ports, and the compute server already had 10G so I had an excuse.
Old setup – 4-bay Synology DS416play and a USB3 drive caddy for a temporary backup solution. TP-Link 16 port switch, all ports in use.
After some searching, I found this Mikrotik switch for $142 on Amazon. 28 ports of 1G plus two 10G ports. Most switches with 10g are either $100 per port or have fans – this one is 19 watts, no fans, and cheap. Note the “sfp+” notation – it means you need more pricy bits to finish the job, but you can use other media like fiber optic links. So total cost of almost 2x.
Switch in and waiting for NAS backup to complete:
Power usage went down by 20 or 30 watts. Always something I pay close attention to. Here’s semi-final:
Next week I get the SFP+ transceivers and rewire a bit. Trunked dual 1G links for now. Power usage is back to where it was, maybe down a watt or two. The new switch is only 19W (the old was around 30) but the larger NAS uses more power, so even under heavy load with 5 disks going.
In distributed systems, the hardest part is often not finding the bug in your code, but tracking down which component is actually the source of the problem so you know what code to look at. Or finding the requests that exhibit the bug, and deducing what they all have in common.
…
The most effective way to structure your instrumentation, so you get the maximum bang for your buck, is to emit a single arbitrarily wide event per request per service hop. We’re talking wiiiide. We usually see 200-500 dimensions in a mature app. But just one write.
…
Any and all unique identifying bits you can get your paws on: UUID, request ID, shopping cart ID, any other ID <<- HIGHEST VALUE DETAILS
Any other useful application context, starting with service name
Possibly system resource state at point in time e.g. /proc/net/ipv4
The entire thread is worth at least two read-throughs. I’m still pondering.
For me, the current team is more about structured logs into Splunk and extracting metrics and call geometry from UUID and spans, so the idea of a 200-500 element event per call is new, compelling and … feels correct. Like, I need to figure out how to start doing this awesome new thing here too. Especially for serverless, where you can’t log into the server and poke around; all you have are logs and/or events.
This is an interactive book which aims to be the best place on the internet for learning SQL. It is free of charge, free of ads and doesn’t require registration or downloads. It helps you learn by running queries against a real-world dataset to complete projects of consequence. It is not a mere reference page — it conveys a mental model for writing SQL.
I expect little to no coding knowledge. Each chapter is designed to take about 30 minutes. As more of the world’s data is stored in databases, I expect that this time will pay rich dividends!
Found this on Hacker News yesterday, a beautiful, interactive and free SQL course. Send this to your junior engineers! I’m passable at SQL, and I had a good time working through some of the problems. It’s well structured and uses a very … unusual… data set.
Intent-Driven Network software. CampusInsight 2.0 is an upgrade to Huawei’s network insight engine and should be considered the intelligence that powers the intent. Network and application data is collected and turned into telemetry information in real time. Machine learning is then applied to monitor the network and predict problems. The network insight engine uses a digital twin of the network, so analysis can be applied and changes tested without affecting the production network. A digital twin is a virtual copy of the original item and allows companies to conduct real-time simulations
Fascinating. I usually see ‘intent’ used to describe ‘extracting meaning from customer input’, so this is a new usage. I’m used to deterministic networking protocols like BGP, so the idea of ML analytics and prediction makes me both interested and wary.
Make that ‘very interested and very wary.’ The prediction system seems like a way to address the worries though.
As baselines, the median warmstart latency in AWS, Google, and Azure were about 25, 79 and 320 ms (respectively) across all invocations.
If, like me, you are using AWS Lambda or its competitors, this paper by Liang Wang et al is worth a careful read. Lots of well-done measurements of performance, isolation, instance lifetimes and more.
Functions as a service behave differently than the servers we’re used to, so be sure and understand your platform and how it behaves!