777 karma · joined September 23, 2014
RDP is still much better user experience, so once when I needed a longer session I used Guacamole to access my router admin interface and temporarily expose RDP directly via a random port and a very strong password. I'm still not convinced that the latter combination is not enough, but it's better to be safe than sorry.
Tried Caddy before learning acme.sh. Even looked in the source code. Nice idea, but it's a new custom thing. Spent a very small learning time on NGINX, everything is googleable, multiple tutorials, Q&As, samples on every possible subject and usecase. E.g. homelab Guacamole was freezing, the first search result was the fix - not trivial, but just copy-paste several config lines. It's hard to beat the performance and simplicity of NGINX. It does not require to learn all possible tweaks from the start, but learn as you go from 5-lines config SSL reverse proxy and up to whatever complexity is required.
I do not care about sleep phases or when the watches think I fall asleep, it's approximately correct and that's enough. Hours of sleep mean much less than the body battery increase overnight.
Quasi-related to the body battery is minimal heart rate while sleeping (the watches automatic "resting" number is often higher, so I look at the chart). Relative to 2-week moving average it's a leading indicator of illness. I have nice charts for my recent covid and common cold, 1-2 days before the symptoms I could see unexplained (e.g. no drinks) higher levels. In absolute terms it correlates with endurance training and recovery after long training sessions (it goes lower with training in general, after a long session it is higher for 1-3 days, when it's back to low level it's full recovery, good time for further training).
Both help in simple decisions such as go to bed earlier, training intensity, whether evening coding session could be productive or better watch a movie, etc.
As a side note, it's funny how alcohol affects both metrics - same as illness + very low battery the next day. The metrics make me think twice and when both are bad it's better to skip drinking even if the context/schedule and subjective feelings are OK for it.
It's personal preferences, for me the aspects of long battery life and turning the device into disposable cattle, not a pet, are much more important. The display on Xiaomi is decent, and that plus fast responsive apps the display shows is all I need from a phone.
Ad bloat could be disabled in settings, I did not see too many suspicious logs in Netguard (calls to Facebook APIs were much more frequent, even from apps that have nothing to do with FB). But that's is an EU country, I've read that Xiomi at least tries not to annoy regulators too much there with privacy issues, going for market share.
Also most bloatware (even their browser) could be uninstalled in 10 minutes, just google "Xiaomi debloat", or go directly to https://github.com/Szaki/XiaomiADBFastbootTools
I would invert the search for motivation upside down. Sport is essential for mental + physical health (beauty, good mood, productivity for less abstract terms). Start with sport as the base line. Set your weekly load according to your current shape. And then ask every time: is there a reason NOT to run now? A real reason, not an excuse "I do not feel like...". Not sick, not injured, not overtrained (objectively from heart rate or body battery indicators, not own subjective feelings), the weather is below 30C and above -10C without heavy rain (or a treadmill available). That's it for me now. I just know I will feel great after 1km no matter how I feel before.
For novices, I would strongly recommend to run slower and have fun. Avoid overtraining as much as possible. For some, even 2km twice per week is too much. I've seen many friends hated running just because they tried to run too fast for too long and felt overwhelmed.
Register for a 5K in a couple of months. Races are the funniest part of the running story. But races are not just a distance on a day X, they are all the time of training that makes them joy, not an exercise in masochism. They discipline and motivate.
"If it feels like work then you are doing it wrong" - a qoute I read long time ago and it helped me a lot.
This also means that a lot of F# functions that are not inlined by F# source-code inlining itself effectively have NoInlining attribute. E.g. some helper method `if x then y.call() else z.call()`, if not inlined by F#, will never be inlined by JIT due to .tail prefixes before the methods calls.
Also, most simple tail calls are rewritten by a compiler to a loop, but if you look at the generated IL, there are multiple temp variables, locals, needless assignments. Maybe JIT is able to eliminate those, or maybe not... In C# I could get IL that reflects what I write, without surprises.
In F#, you cannot disable inlining of small functions. It does IL source code inlining, like copy-paste, not machine code inlining. That increases generated dll/exe size a lot for generics. And sometimes you do not want to do that because it's worse for performance. There is an issue for that: https://github.com/fsharp/fslang-suggestions/issues/838
In C#, the AggressiveInlining attribute works well, in predictable manner. Non-inlineable cases are well known (`throw\switch\fixed\try..catch\calling delegates` and some more https://github.com/dotnet/runtime/blob/master/src/coreclr/ji...).
> because it supports directly inlining IL instructions intermixed with regular code
This works for very simple things only. And using InlineIL.Fody, Sigil, raw IL.Emit or just raw IL code as text is not that more difficult if you already know IL.
> you _can_ write F# that's about as fast as non-unsafe C#
I tried this several times. It always ends with fighting the compiler more than just rewriting in C#, even without the `unsafe` keyword. In most cases due to generated IL that I cannot control from F#.
Yes, it's not a fundamental limitation of the language itself. But considering the amount of hypothetical efforts required to fix all that vs investments from MSFT in F#, it is fundamental. F# lags by several years behind JIT and TPL improvements, the issues are mostly known. But it feels like it's not that important for F#. It's is not for writing fast libraries, but for Python-like use cases, explorative programming, or writing code fast when performance is not important (no hot loops in F# code) but strict typing discipline makes code less buggy and more maintainable from the first attempt. They used to say that "if F# code compiles, it's probably correct" - that is close to the truth, but do not expect top performance without fighting with the F# compiler. Even one of the best known and oldest F# library FParsec has it's high-performance parts in C# - that's telling.
And they kill two birds with one stone. First, they support open source, which is great. Second, they increase conversion and loyal userbase. At my job I had a choice between Visual Studio + Resharper vs Rider, and I was reluctant to move from VS to IntelliJ IDEA based IDE, thinking R# is good enough and gives the same benefits inside a familiar IDE. I was so wrong, after trying Rider at home occasionally and pair coding at job, I gradually migrated. The IDE itself is much better, faster, nicer is big and very small details. Now there is no way back to VS, but that may not have happenned without the access at home. Other tools from the Toolbox are doing the same for other languages. Very smart of them to be so generous. Now even if my free pack is not renewed, I will pay for myself. And for foreseeable future I will generate at least one license at work for them.
It happened in Paris more than "extraordinary" number of times, so I have to put extra 15 mins to every important travel.
OTP sounds like: the train is scheduled at 3:25, it arrives at 3.26. Correct me if I'm wrong here. But if the normal margin is 5 mins for total time of travel, making it 15 mins is not nice.
And as someone who lived in Moscow for a long time I can attest it is the gold standard. It's the second busiest (or top-3) and just always works as scheduled. One rare thing one could rely on that comes from the government.
I really like how NYC has local/express sharing the same infrastructure. Manhattan has near the same height as Paris (Peripherique), yet it's possible to travel all the distance with 5 or so stops.