Skip to content

Linux commands to find the number of CPU cores

nproc will just output the number of cores, nothing more. Actually, with multi-threading it counts the number of logical cores, not physical ones. So for instance, on an i7-6700, which is a quad core CPU with hyper-threading, I guess it would show 8 processors.

lscpu gives a lot more details about the CPU. It’s like, a recap of cat /proc/cpuinfo, with just one big section combining all cores. Example output:

Architecture:                    x86_64
CPU op-mode(s):                  32-bit, 64-bit
Byte Order:                      Little Endian
Address sizes:                   48 bits physical, 48 bits virtual
CPU(s):                          8
On-line CPU(s) list:             0-7
Thread(s) per core:              2
Core(s) per socket:              4
Socket(s):                       1
NUMA node(s):                    1
Vendor ID:                       AuthenticAMD
CPU family:                      23
Model:                           49
Model name:                      AMD EPYC 7R32
Stepping:                        0
CPU MHz:                         3272.959
BogoMIPS:                        5599.72
Hypervisor vendor:               KVM
Virtualization type:             full
L1d cache:                       128 KiB
L1i cache:                       128 KiB
L2 cache:                        2 MiB
L3 cache:                        16 MiB
NUMA node0 CPU(s):               0-7
Vulnerability Itlb multihit:     Not affected
Vulnerability L1tf:              Not affected
Vulnerability Mds:               Not affected
Vulnerability Meltdown:          Not affected
Vulnerability Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl and seccomp
Vulnerability Spectre v1:        Mitigation; usercopy/swapgs barriers and __user pointer sanitization
Vulnerability Spectre v2:        Mitigation; Full AMD retpoline, IBPB conditional, IBRS_FW, STIBP conditional, RSB filling
Vulnerability Srbds:             Not affected
Vulnerability Tsx async abort:   Not affected
Flags:                           fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp l
                                 m constant_tsc rep_good nopl nonstop_tsc cpuid extd_apicid aperfmperf tsc_known_freq pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 movbe popcnt aes
                                  xsave avx f16c rdrand hypervisor lahf_lm cmp_legacy cr8_legacy abm sse4a misalignsse 3dnowprefetch topoext ssbd ibrs ibpb stibp vmmcall fsgsbas
                                 e bmi1 avx2 smep bmi2 rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec xgetbv1 clzero xsaveerptr rdpru wbnoinvd arat npt nrip_save rdpid

cat /proc/cpuinfo, which I mentioned above, give details about each logical core. Compared to lscpu, it has some additional details, and some missing ones as well. Example partial output (I just copied the 2 last cores), from the same CPU as the previous output:

processor       : 6
vendor_id       : AuthenticAMD
cpu family      : 23
model           : 49
model name      : AMD EPYC 7R32
stepping        : 0
microcode       : 0x8301034
cpu MHz         : 3253.736
cache size      : 512 KB
physical id     : 0
siblings        : 8
core id         : 2
cpu cores       : 4
apicid          : 5
initial apicid  : 5
fpu             : yes
fpu_exception   : yes
cpuid level     : 13
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl nonstop_tsc cpuid extd_apicid aperfmperf tsc_known_freq pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm cmp_legacy cr8_legacy abm sse4a misalignsse 3dnowprefetch topoext ssbd ibrs ibpb stibp vmmcall fsgsbase bmi1 avx2 smep bmi2 rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec xgetbv1 clzero xsaveerptr rdpru wbnoinvd arat npt nrip_save rdpid
bugs            : sysret_ss_attrs spectre_v1 spectre_v2 spec_store_bypass
bogomips        : 5599.72
TLB size        : 3072 4K pages
clflush size    : 64
cache_alignment : 64
address sizes   : 48 bits physical, 48 bits virtual
power management:

processor       : 7
vendor_id       : AuthenticAMD
cpu family      : 23
model           : 49
model name      : AMD EPYC 7R32
stepping        : 0
microcode       : 0x8301034
cpu MHz         : 3254.011
cache size      : 512 KB
physical id     : 0
siblings        : 8
core id         : 3
cpu cores       : 4
apicid          : 7
initial apicid  : 7
fpu             : yes
fpu_exception   : yes
cpuid level     : 13
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl nonstop_tsc cpuid extd_apicid aperfmperf tsc_known_freq pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm cmp_legacy cr8_legacy abm sse4a misalignsse 3dnowprefetch topoext ssbd ibrs ibpb stibp vmmcall fsgsbase bmi1 avx2 smep bmi2 rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec xgetbv1 clzero xsaveerptr rdpru wbnoinvd arat npt nrip_save rdpid
bugs            : sysret_ss_attrs spectre_v1 spectre_v2 spec_store_bypass
bogomips        : 5599.72
TLB size        : 3072 4K pages
clflush size    : 64
cache_alignment : 64
address sizes   : 48 bits physical, 48 bits virtual
power management:

Posted in Linux, published drafts.

aToad #30: /

FLOSS (Apache-2.0) software to make flowcharts, workflows, UML graphs, etc

Remember about Dia? Or about BOUML and its (epic and messy) history? Did you end up using Inkscape, LibreOffice Draw, or worse Google Draw because those weren’t really that convenient?

Well, I recently had enough of all these and looked again. I quickly found (aka, its new name). It’s based on Electron, which I’m generally not a fan of, but which in this case (UI-centric software, basically no backend) makes perfect sense. It also allows them to provide a web version, so you can give it a try without installing it.
Since I mentioned installing, another thing is that they provide both an installer and a “no installer” version. I didn’t try the latter, but I suspect it’s one of those Electron default craps that dump installed files into %AppData%, while the installer is, for once, a “normal” installer that lets you choose where to install (and that’s pretty much the only choice you need to do while running it).

The software itself is convenient, I find it easier to use than Dia. It comes with a bunch of templates, none of which I used but that gave me a look at all the various styles of diagrams that can be created with it. They include lots of commonly used pictures: for instance for AWS (Amazon Web Service), which I have to use at work, they include basically the icons of every service, which is great to make infrastructure workflows. They have the same for Azure and Google Cloud, also icons for MariaDB, MySQL, PHP, Apache, etc. Long story short, you probably won’t ever have to import your own pictures, unless you really want to.

I can’t share a screenshot because all I have at the moment is a workflow from work, but again you can just try it online directly. You can even view the templates there, only they don’t jump at your face by default, so if you want to see them you need to go to File -> New, and there you’ll get the templates.

Posted in A Tool A Day, programming.

If you’ve never looked at your local site storage… maybe you should

I’m a very moderate Telegram user, mostly because a community I’m part of uses it as its central communication platform. And I really really prefer computers to smartphones, so I use the web version of Telegram rather than the phone “app” most of the time.
And long story short, one day it just refused to launch. No error nothing, just a blank page.

So I opened the console (reminder: in Firefox that’s CTRL+Shift+I), and was greeted with a not very inspiring “DOMException: The quota has been exceeded.” error message. I quickly found it was about local storage of site data. So I opened this (basically, just go to Firefox settings, search for “data” and click “Manage Data…”). And it immediately struck me: Telegram was storing 2 whole freaking GBs of data. Which apparently is the (way too generous) default limit. What the hell those data were, I have no idea. Particularly since Telegram always appears to lose downloaded media from one session to the next, and even my settings as far as one of the versions (I think Telegram Z) is concerned. Funny thing: in the past, apparently local storage was by default limited to 5-10MB per site. Which seems already quite decent, for instance 20MB is enough for all but 10 sites in my (long) list of sites with stored data.

Anyway, taking a step back, I realized that Telegram wasn’t the only site storing an indecent amount of data. And that my Firefox profiles had reached a total size of over 7GB… What a mess. (NB: deleting the data for a given website does decrease profile size by that many bytes, and at the end of my cleanup I had gotten as low as 2GB)

Before cleaning that up, here’s a list of domains that I caught with way too insane local site data:
– 2 GiB, limit reached, yikes
– 1.6 GiB, I guess this one was racing with Telegram for the win…
– 750 MiB 😮 and a special mention because it’s a site I didn’t even remember visiting, and it was a long time ago (I think it was about 3 years ago). It’s a blog from the creator of Peertube… did he sneak data there to use my browser as a peer or something? Also this made me realize that the data doesn’t seem to ever expire…
– 197 MiB 2 years ago, it appears the website doesn’t even exist anymore but it still has all that crap in my storage
– 87 MiB half a year ago. I wonder what the hell they can store considering they’re basically just a list of links to their Youtube-hosted videos
– 46 MiB, not only their desktop client is crap but their website is too, apparently
– 40 MiB 8 months ago, okay for this kind of distributed video site, I get usage can get somewhat high. They’re still below the crazy above-mentioned ones though…
– 33 MiB a year ago – ditto
– 25 MiB 6 months ago – ditto again
– 20 MiB, fair enough I get that they have stuff to store for improved performance, and I use them all the time

I’m cutting the list there because then it gets a bit pointless (and tedious), but I still see many sites with a significant amount of data, like, somewhere between 1 and 20 MiB. Without any good reason and/or with a last visit a very long time ago. For instance,, 15 MiB 3 years ago for an IT blog, are you kidding me?

I have yet to find a way to get old storage in check. But if you want to at least avoid getting in the situation where one or 2 websites go really, really wild on storage behind your back, Firefox has a hidden setting for it: in about:config, change the value of browser.sessionstore.dom_storage_limit, which by default is 2048 (so I assume it’s in MiB).
Based on my above-listed observations, a value of 50 should be way enough for any normal use, and you can probably lower this to about 25 MiB to catch a few more dirty websites without causing too much extra hassle.
That being said, I set it myself to 50 MiB and… websites still manage to exceed it (Slack went really fast back to 66 MiB…). So… to be continued? If you found a solution, I’d be glad to hear it in the comments as well!

Update 2021-09-13

A little addendum from my work PC (and actually it applies to my home PC as well, I just forgot to mention it): some sites in the list appear to be tracking sites, with recently (or very recently) updated data even though you’ve never directly visited them. For instance this morning I found with about 40MB of data, updated minutes ago (i.e. when I reopened my session). And when I manually loaded it, magically it removed most of it… I didn’t even know this site until now, yet it had crapped a significant amount of data into my browser profile, yay :s For good measure, I added it to the block list (“manage exceptions” => block”).

Also I noticed that sites with no stored data (but only cookies) will show as last accessed at the start of your session. Not very convenient to remove old stuff, sadly.

Posted in Firefox.

Cheap virtual number providers to receive SMS (Twilio and alternatives)

The web has become a privacy nightmare, and one of the causes of this is that so many websites are so comfortable with demanding that users provide them with a phone number. So naturally, I’ve started looking into ways to get alternative numbers.

It’s no news that, even though mobile plans often include them with almost no limits (the notable exception being the number of unique recipients you are allowed per month), SMS APIs are bloody expensive. However while I get why renting a number and sending texts can’t be free, I don’t see why receiving couldn’t be a lot cheaper, if not fully free. I’ll focus on receiving costs, since this receive-only is your typical use-case when getting a number to deal with websites that require SMS validation.

I was surprised to see how complicated the pricing tables are. In particular, there is often a base price and a surcharge depending on the carrier, not only when sending but also sometimes when receiving. For the sake of brevity (and for my own sanity…), I’ll just list the price that seems to be the one I’d be most likely to pay. Note that I listed them here in the order I found/browsed them, not in my order of preference.


To the best of my knowledge, the usual “reference” for SMS APIs is Twilio. Let’s start with it:

Frankly, that receiving fee is an outrage. We see that carriers charge the sender for accepting their SMS, and to my knowledge I’ve never seen a carrier charging their customer for receiving an SMS. I would understand a small fee to cover API costs and whatever, but paying as much for receiving as for sending… This sounds like a bad joke…

Vonage (and Nexmo)

As far as I understood, those 2 merged not that long ago.
They also get a special mention. I had been sitting on writing this post’s draft for a few months, meaning I prepared the data at the time, but as often postponed composing it until now. And guess what happened in the meantime… they increased the sending and receiving prices by 5 cents per SMS, and the monthly fee per number by 8. I guess I didn’t wait for nothing.


Finally one with free SMS reception (although a carrier fee may apply depending on the carrier, namely for Sprint and T-Mobile). Also, on the opposite to the previous one, it seems that they lowered their price since the time when I did my draft. Nice.


They seemed to be the cheapest, however it looks like they only take business customers. Not sure if they have a minimum volume requirement or not.


This one felt a bit special… I didn’t really understand the pricing nor the documentation… It seemed more expensive than the others, so I didn’t really try hard either.
Here are just a couple of links:


They don’t communicate their prices publicly and it seems they set a minimum volume (Monthly Minimum Contract – MMC)… Not really what I was looking for, but I have no idea if they have good prices or not if you happen to reach the volumes they want. Their pricing page is there.


Another one with free receiving, yay. The monthly cost of the phone number is a tiny bit higher though, but stays reasonable.
I got a bit triggered by the fact that they charge first for the phone number and then again to “enable SMS” on it (and they hide this little “extra” deep into footnotes, that’s low). On the other hand, that’s not what I was looking for, but they seem the cheapest to send SMS (if your volume is high enough to compensate for the more expensive number rental). Beware for the crazy carrier fee of Lleida though.

  • Pricing page
  • API documentation on inbound SMS
  • Monthly fee for a number: $1.10 / month ($1 base + $0.10 to have SMS: “An additional charge of $0.10 / mo applies to add SMS and MMS capabilities to a number”)
  • Sending an SMS: $0.0025 + carrier fee ($0.0020 to $0.0400 for Lleida)
  • Receiving an SMS: $0, and apparently no carrier fee


The last in my list, doesn’t seem to be appropriate for my use, they give a price for sending SMS but not receiving. No pricing either for renting numbers. It seems to be targeted at companies who want to run a support center or ad campaigns.

That’s all folks. I haven’t actually used any of those in the end (yet), but at least, when I need to, I’ll have a starting point now.

Edit: some more ideas:

Posted in Uncategorized.

How can I disable suggestions when adding a new phone contact?

My 2 latest phones have been some cheap Samsungs, they are great for what I do (i.e., phoning, texting, and OsmAnd) except for one thing: whenever I add a contact, when I type their name and their number, my screen gets flooded with suggestions from my existing contacts.

This is a major annoyance to me, and I think it should be for anyone who cares a bit about privacy, as this means whoever is looking at my screen (typically the person from which I’m taking the number) gets to see a bunch of names from my contacts. NOT COOL. Sure, I can hide the screen to this person, but how asocial and unfriendly is this? Plus I typically want that person to see what I’m typing, in order to live-correct any typo I might do.

To my great surprise, I found very, very few people talking about this online. Mainly, I just found this post from 4 years ago, “How to disable suggested contacts when adding a new phone contact“, and that’s it. I note that this person has a Samsung phone as well, and I don’t remember experiencing the issue on my previous non-Samsung phones… so it could be specific to Samsung’s version of the contact manager.

My “solution” was to install a different contact manager. Namely, Simple Contacts Pro, which is FLOSS and, as such, available on F-droid. I’m not thrilled, because I find it globally inferior to the default contact manager, but at least it got me rid of the damned suggestions.

So, while keeping that solution in mind, here are 2 open questions for you:
1) Can the Samsung contact app be configured not to show those damned suggestions?
2) Not related to this post, but how can I configure the contact app (Samsung’s, my replacement, or even some other one) to format phone numbers properly? By this I mean, when I type “+33123456789”, show the country-specific formatting, which here would be “+33 1 23 45 67 89”. I have this on my previous phone, but not on my current one, despite both of them running the same Android major version (through OTA updates). I assume there’s some setting hidden somewhere, which had simply a different default value between my 2 phones… I just can’t figure out where the hell it is.

Posted in Uncategorized.

SyntaxError: Cannot use import statement outside a module (NodeJS / TypeScript)

I’ve been using TypeScript for about 5 years, and until now, I had been stuck to compiling to the ES5 target, because any time I would try something more recent, I would get an error saying: “SyntaxError: Cannot use import statement outside a module”.
This didn’t seem like a big deal, because TS is convenient in that it keeps your always newer code compatible with old JS standards, but still I finally decided to dig a little.

The first interesting thing I found was this. Basically, it says “In your package.json file, simply add “type”:“module””. That lead nowhere, however, while typing it, I noticed the only other alternative to “module” was “commonjs”.

Digging a bit more, I found that tsconfig has a similar parameter, called “module”. So I tired setting it to commonjs and… it worked. Looking back at it, this value was in the community base tsconfig for Node 14, meh. Should have just tried that in the first place. Anyway, here’s my current tsconfig:

  "compileOnSave": true,
  "compilerOptions": {
    "target": "es2020",
    "module": "commonjs",
    "allowSyntheticDefaultImports": true,
    "noImplicitAny" : true,
    "strictPropertyInitialization": true,
    "strictNullChecks": true,
    "esModuleInterop": true,
    "lib": [
    "skipLibCheck": false,
    "alwaysStrict": true,
    "removeComments": true,
    "typeRoots": [
    "moduleResolution": "node",
    "baseUrl": ".",
    "paths": {
      "*": [
  "exclude": [

Posted in JavaScript / TypeScript / Node.js, web development.

How to enable SSH (+/- root) password login

In recent Linux server distribs provided by dedicated server or VPN hosts, root login is often disabled, as well as password login. It doesn’t really improve security as long as you don’t use crappy passwords, and it’s one hell of an inconvenience. Restoring those is however easy (it’s also easy to find, but I prefer to keep my own copy here ^^):

sudo nano /etc/ssh/sshd_config

In it, set:
PasswordAuthentication yes
PermitRootLogin yes

Then restart the SSH daemon. For this 2 possible commands:
– I’ve always used sudo /etc/init.d/ssh restart
– I’ve also seen sudo service ssh restart

Also, don’t forget sudo passwd root to set the root password 😉

Posted in Linux.

Optimizing the Windows paging file

A long time ago, when RAM began to be cheap enough to stuff more than enough in any of my PCs, I started to systematically completely disable the Windows paging file, with the objective to make sure I never end up swapping. I found this all the more important when switching to SSD, where swapping sure wouldn’t be such a bad performance drag but would wear out the SSD.

However, in Windows 10 (not sure about Windows 7, as I recall at least the issue wasn’t so visible), I noticed that programs would start crashing / refusing to run due to “low memory” way before I reached my maximum capacity. Roughly, with 32 GiB of RAM (which is a large-ish amount, but not as “huge” by today’s standards as when I started using that amount 5 yeas ago), I started getting “low memory” warnings around barely 22-24 GiB of RAM used. What the hell was wrong with Windows so that it seemed to pretend the remaining 8-10 didn’t exist?

There are tons of random advice about swap file / page file management on the Internet, and most provide little justification on their choices. Globally, advice range from “set it to at least 1.5 (or 2) times the size of your RAM” to “you should absolutely disable it“. Which recurrently leads to quite a bit of confusion. The “no page file” arguments have always appeared clearer and more compelling to me (just remove it, see things still work fine, and enjoy no disk writes)… until those mysterious errors.

Eventually, I found the answer: when using RAM, Windows will commit some amount of RAM, larger than what will actually be used. And if there isn’t enough RAM left (including free space on the page file), counting by committed space rather than actually used space, it will fail with this “not enough RAM” error.

From this, my takeaway was that I should add a page file that’s roughly the size of the difference between my real RAM (32 GiB) and the RAM real usage at which I started getting that error (~22-24), so I set it to 8 GiB. With a varying size, since I don’t care about fragmenting that file, since it will +/- never be actually written too, it will just get allocated.
As for your own strategy, I’d say:
– If you don’t care about disk writes (and don’t mind a potential slowness when you start actually using the page file), set it to some high value.
– If you have an HDD and not an SSD, use a fixed-size pagefile
– If you want to minimize disk writes as much as possible, first set no page file, then use your computer normally and see when you start getting that not enough RAM error. Set your page file size to roughly the difference between your total RAM and the RAM actually used at that moment. A bit less if you really want to minimize disk writes as much as possible, a bit more if you want to be sure to be able to use all your RAM, even if it may mean you can have a few disk writes. In the former case, you can probably use a variable-size pagefile even on an HDD. In the latter, hard to decide. Why are you still using an HDD for your OS anyway? ^^

Posted in Windows.

Disabling Vivaldi auto-update, and a generic list of possible auto-start locations

How to disable Vivaldi’s auto-update check

I’ve been using Vivaldi since its beta, as a backup browser for poorly designed websites that require Google Chrome’s engine, because it combines both Blink and an UI that I find much better than Chrome’s. Another thing I like is the customization options, notably the control over auto-updates. Sadly, that last point evolved a few times. And again no later than a few days ago.

Yesterday, I upgraded to Vivaldi 4. No particularly visible change for me, except that my speed dial background picture got nuked and replaced with a super bright new one (ouch, my eyes, why inflict this to people who use the dark theme? :s), and I noticed the added e-mail client and stuff but I couldn’t care less.
Something I cared about, however, was that when I restarted my computer today, my firewall caught an unexpected piece of junk: update_notifer.exe, which I knew well from the previous versions but always kept at bay, automatically started. Without me even starting Vivaldi. What. The. Hell.
I guess at Vivaldi, just like at Google, “no” doesn’t mean “no”. It’s as if they can’t figure what kind of nightmare it would be if every single piece of software would do that crap. Imagine that, every time you start your computer, and/or every 24h, 300 auto-update tasks running on your computer. How lovely. How speedy. How environment-friendly.

Anyway, to disable this, the official thing to do is to go to Vivaldi’s settings, search for “update” (it used to have its own submenu, now I have no idea how to find it another way that typing its name…), click on “Show Update Settings” and uncheck “Notify About Updates”. By the way, nice way to bury the setting. I mean, there’s only ONE setting, why show/hide it via another button, instead of just always showing the setting instead, if not to make it harder to reach?

So, this should prevent getting a notification asking you to update. But the wording made me suspicious: after all, it’s a checkbox for “notifying” about updates, not “checking” for updates. If I was a sneaky bastard like most browser vendors, I’d still run the check but just not make a popup about it. I poked around a bit, and eventually checked the Windows Task Scheduler. What a nice thing, it’s one of those “new” auto-startup places that evade good old WinPatrol’s surveillance. And frankly, I don’t remember to check it often enough. And there it was, right in the root folder, a big fat “VivaldiUpdateCheck-[bunch of random characters]” task. Still active, despite my above-mentioned unchecked auto-update box. Isn’t this nice? The only question left, is how soon Vivaldi will say “fuck you” to my choices again. Time will sure tell.

So to wrap this up:
– in Vivaldi’s settings, search for “update” and uncheck “Notify About Updates”
– open Windows’s Task Scheduler and disable (or delete, I guess that works too – unless Vivaldi then auto-restores it) the VivaldiUpdateCheck task

Where to check for programs that automatically run at startup

That little issue prompted me to do a more global checkup, more specifically I launched WinPatrol and looked at what it listed. Found a few things that I wanted to remove, WinPatrol failed to remove them (apparently its feature to remove entries just doesn’t work – maybe a Windows 10 thing), so I went there manually and made a list.
Here are some common locations to make a program run at startup (PS: thanks Microsoft for making such a mess, would it kill you to make it more user-friendly and pick just a unique location?):

In regedit (type “regedit ” in the start menu):
(NB: all these have a sibling “RunOnce”, for running only once, which I guess should generally be empty)

The Startup folder of the Start Menu. Note a little trick: there are 2 of those, one for the current user, and one for everyone:
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp
C:\Users\[username]\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup, aka %appdata%\Microsoft\Windows\Start Menu\Programs\Startup

The Task Scheduler (type “task scheduler” in the start menu), which contains both task that can run at any time and at startup (also I believe a task that was scheduled to run while the computer was off will in most cases run as soon as it’s powered on)

The Services (type “services” in the start menu), which can be started automatically or “manually”, or disabled. The latter will completely prevent it from running. “Manually” will allow it to get triggered by “something” else, and on numerous occasions I’ve found “manual” start services would still end up starting despite me not realizing I ever launched them. So I tend to be heavy-handed on the “disabled” option, and switch back to manual if I notice I broke something. Note that there are many system services (and quite a few other legit services, notably drivers), so don’t just go and disable everything, that would most likely make a big mess.

To wrap up this part, here’s a partial list of what I busted today hiding there:
– Adobe ARM in some regedit Run key
– Adobe Update in Services
– a CorsairGamingAudioConfig service (but I don’t have any Corsair audio hardware…)
– Vivaldi in the Task Scheduler (as said above)
– Intel Telemetry in Task Scheduler (pretty sure I deleted it already earlier, I guess that crap adds itself back every single time you run Intel XTU)
– a couple of Xbox Live tasks (XblGameSaveTask & XblGameSaveTaskLogon – no kidding)

Posted in Windows.

Comparison of 2 vitamin B supplements

Just a personal note comparing a vitamin B mix I used to take but can’t find anymore (thanks EU for punishing GB for the Brexit…), to a new one that features quite smaller doses (but still high enough), for a significantly lower price.

“Solgar Formula Vitamin B-Complex”

Thiamin (vitmin B1 as thiamine mononitrate) – 100 mg
Riboflavin (vitamin B2) – 100 mg
Niacin (vitamin B3 as niacinamide) – 100 mg
(B5) Pantothenic acid (as calcium pantothenate) – 100 mg
Vitamin B6 (pyricoxine hydrochloride) – 100 mg
Choline (as bitartrate) – 20 mg
Inositol – 100 mg
(B8) Biotin – 100 µg
Folic acid (as prep) – 400 µg
Vitamin B12 – 100 µg
PABA – 0

“Vitamin B Komplex Intenso”

Thiamin (vitmin B1 as thiamine mononitrate) – 25 mg
Riboflavin (vitamin B2) – 25 mg
Niacin (vitamin B3 as niacinamide) – 50 mg
(B5) Pantothenic acid (as calcium pantothenate) – 125 mg
Vitamin B6 (pyricoxine hydrochloride) – 25 mg
Choline (as bitartrate) – 50 mg
Inositol – 50 mg
(B8) Biotin – 50 µg
Folic acid (as prep) – 200 µg
Vitamin B12 – 125 µg
PABA – 25 mg

Posted in Totally pointless.