• 153 Posts
  • 1.33K Comments
Joined 2 years ago
cake
Cake day: July 2nd, 2023

help-circle
  • I recently learned about Obsidian from a friend, but haven’t started using it yet, so perhaps I can offer a perspective that differs from current users of Obsidian or any of the other apps you listed.

    To start, I currently keep a hodge-podge of personal notes, some digitally and some in handwriting, covering different topics, using different formats, and there’s not really much that is common between any of these, except that I am the author. For example, I keep a financial diary, where I intermittently document the thinking behind certain medium/long-term financial decisions, which are retained only as PDFs. I also keep README.md files for each of the code repos that I have for electronics and Kubernetes-related projects. Some of my legacy notes are in plain-text .txt file format, where I’m free-form record what I’ve working on, relevant links, and lists of items outstanding or that are TODOs. And then there is the handwritten TODO and receivables list that I keep on my fridge.

    Amongst all of this chaos, what I would really like to have the most is the ability to organize each “entry” in each of their respective domains, and then cross-reference them. That is, I’m not looking to perform processing on this data, but I need to organize this data so that it is more easily referenced. For example, if I outline a plan to buy myself a new server to last 10 years, then that’s a financial diary entry, but it would also manifest itself with TODO list items like “search for cheap DDR5 DIMMs” (heaven help me) and “find 10 GbE NIC in pile”. It may also spawn an entry in my infrastructure-as-code repo for my network, because I track my home network router and switch configurations in Git and will need to add new addresses for this server. What I really need is to be able to refer to each of these separate documents, not unlike how DOIs uniquely identify research papers in academic journals.

    It is precisely because my notes are near-totally unstructured and disparate that I want a powerful organization system to help sort it, even if it cannot process or ingest those notes. I look at Obsidian – based on what little I know of it – like a “super filing cabinet” – or maybe even a “card catalog” but that might be too old of a concept lol – or like a librarian. After all, one asks the librarian for help finding some sort of book or novel. One does not ask the librarian to rehash or summarize or extract quotes from those books; that’s on me.


  • In the English-speaking world, you can always shorten the year from 4 to 2 digits. But whether: 1) this causes confusion or 2) do you/anyone care if it does, are the points of contention. The first is context-dependent: if a customer service agent over the phone is trying to confirm your date of birth, there’s no real security issue if you only say the 2 digit year, because other info would have to match as well.

    If instead you are presenting ID as proof of age to buy alcohol, there’s a massive difference between 2010 and 1910. An ID card and equivalent documentation must use a four digit year, when there is no other available indicator of the century.

    For casual use, like signing your name and date on a holiday card, the ambiguity of the century is basically negligible, since a card like that is enjoyed at the time that it’s read, and isn’t typically stashed away as a 100-year old memento.

    That said, I personally find that in spoken and written English, the inconvenience of the 4 digit year is outweighed by the benefit of properly communicating with non-American English users. This is because us American speak and write the date in a non-intuitive fashion, which is an avoidable point of confusion.

    Typical Americans might write “7/1/25” and say “July first, twenty five”. British folks might read that as 7 January, or (incorrectly) 25 January 2007. But then for the special holiday of “7/4/25”, Americans optionally might say “fourth of July, twenty five”. This is slightly less confusing, but a plausible mishearing by the British over a scratchy long-distance telephone call would be “before July 25”, which is just wrong.

    The confusion is minimized by a full 4 digit year, which would leave only the whole day/month ordering as ambiguous. That is, “7/1/2025” or “1/7/2025”.

    Though I personally prefer RFC3339 dates, which are strictly YYYY-mm-dd, using 4 digit years, 2 digit months, and 2 digit days. This is always unambiguous, and I sign all paperwork like this, unless it explicitly wants a specific format for the date.


  • For the objective of posting photos to an Instagram account while preserving as much privacy as possible, your approach of a separate machine and uploading using its web browser should be sufficient. That said, Instagram for web could also be sandboxed using a private browsing tab on your existing desktop. Certainly, avoiding an installed app – such as the mobile app – will prevent the most obtuse forms of espionage/tracking.

    That said, your titular question was about how to maintain an Instagram account, not just post images. And I would say that as a social media platform, this would include engagement with other accounts and with comments. For that objective, having a separate machine is more unwieldy. But even using a private browsing tab on your existing machine is still subject to the limits that Instagram intentionally imposes on their desktop app: they save all the crucial value-add features for the mobile app, where their privacy invasion is greatest.

    To use Instagram in the least obtuse manner means to play the game by their rules, which isn’t really compatible with privacy preservation. To that end, if you did want a full Instagram experience, I would suggest getting a separate, cheap mobile phone (aka a “YOLO phone”) to dedicate to this task. If IG doesn’t need a mobile number, then you won’t even need a working SIM account. Then load your intended images using USB file transfer, and use an app like Imagepipe (available on F-Droid) to strip image metadata. Turn off all location and permissions on this phone, and when not in-use, turn the phone off or in airplane mode.


  • For the blockchain technology at the very core foundation of cryptocurrencies, it’s a reasonable concept that solves a specific challenge (ie no one can change this value unless they have the cryptographic key) and the notion of an indelible or tamper-evident ledger is useful in other fields (eg certificate revocation lists). Using a blockchain as a component is – like all of engineering – about picking the right tool for the job, so I wouldn’t say that having/not having a block chain imparts any sort of opinionation or qualities of good/bad.

    One step above the base technology is the actual application as currency, meaning a representation of economic value, either to store that value (eg gold) or for active trade (eg the €2 Euro coin). All systems of currency require: 1) recognition and general consensus as to their value, and 2) fungibility (ie this $1 note is no different than your $1 note), and 3) the ability to functionally transfer the currency.

    Against that criteria, cryptocurrencies have questionable value, as seen by how volatile the cryptocurrency-to-fiat currency markets are. Observe that the USD or Euro or RMB are used for people’s salaries, denominate their home mortgage loans, for buying and selling crude oil, and so on. Yet basically no one uses cryptocurrency for those tasks, no one writes or accepts business-to-business contracts denominated in cryptocurrency, and only a small handful of sovereign states accept cryptocurrency as valid payment. That’s… not a great outlook for circulating the currency.

    But for fungibility, cryptocurrency clearly meets that test, and probably exceeds the fiat currencies: there’s no such thing as a “torn” Bitcoin note. There are no forgeries of Etherium. It is demonstrable that a unit of cryptocurrency that came from blood-diamond profits is indistinguishable from a unit that was afforded by wages at a fuel station in Kentucky. There are no “marked notes” or “ink packs” when committing cryptocurrency theft, and it’s relatively easy to launder cryptocurrency through thousands of shell accounts/addresses. To launder physical money a thousand times is physically impossible, and is way too suspicious for digitalized fiat currency transfers.

    And that brings us to the ability to actually transfer cryptocurrency. While it’s true that it should only be an extra ledger entry to move funds from one address/account to another, each system has costs buried somewhere. Bitcoin users have to pay the transaction costs, or currencies pegged to other currencies have to “execute” a “smart contract”, with attendant verification costs such as proof-of-work or proof-of-stake. These costs simply don’t exist when I hand a $20 note to a fuel station clerk. Or when my employer sends my wages via ACH electronic payment.

    Observe how cryptocurrency is traded not at shops with goods (eg Walmart) or shops for currency (eg bureau de change at the airport) but mostly only through specialized ATMs or through online exchange websites. The few people who genuinely do use their cryptocurrency wallets to engage transactions are now well in the minority, overshadowed by scammers, confidence/romance tricksters, investment funds with no idea of what they’re doing except to try riding the bandwagon, and individuals who have never traded financial instruments but were convinced by “their buddy’s friend” who said cryptocurrency was a money-making machine.

    To that end, I would say that cryptocurrencies have brought out the worst of financial manipulators, and their allure is creating serious financial perils for everyday people, whether directly as a not-casino casino or to pay a ransomware extortion, or indirectly through the destabilization of the financial system. No one is immune to a breakdown of the financial system, as we all saw in 2008.

    I used to like discussing with people about the technical merits of ledger-based systems, but with the awful repercussions of what they’ve enabled, it’s a struggle to have a coherent conversation without someone suggesting a cryptocurrency use-case. And so I kinda have to throw the whole baby out with the bathwater. Maybe when things quiet down in a few decades, the technology can be revisited from a sober perspective.





  • Hi! My low-spec gaming rig is primarily a product of: 1) cheapness frugality where I want most of the same PC to last 6-10 years, 2) not upgrading my GPU because the whole situation with 3070 GPUs, and 3) not being too much into gaming, except for Cities Skylines, American Truck Simulator, and MSFS2020.

    Cities Skylines is more CPU intensive, so my few-years old Ryzen can handle that. I’m sure ATS and MSFS2020 could look better, but ultimately I get more value out of the feel of the gaming wheel and joystick than what I can see on-screen. To each their own.


  • If I understand the Encryption Markdown page, it appears the public/private key are primarily to protect the data at-rest? But then both keys are stored on the server, although protected by the passphrase for the keys.

    So if the protection boils down to the passphrase, what is the point of having the user upload their own keypair? Are the notes ever exported from the instance while still being encrypted by the user’s keypair?

    Also, why PGP? PGP may be readily available, but it’s definitely not an example of user-friendliness, as exemplified by its lack of broad acceptance by non-tech users or non-government users.

    And then, why RSA? Or are other key algorithms supported as well, like ed25519?



  • Directly answering the question: no, not every country has such a consolidated library that enumerates all the laws of that country. And for reasons, I suspect no such library could ever exist in any real-life country.

    I do like this question, and it warrants further discussion about laws (and rules, and norms), how they’re enacted and enforced, and how different jurisdictions apply the procedural machine that is their body of law.

    To start, I will be writing from a California/USA perspective, with side-quests into general Anglo-American concepts. That said, the continental European system of civil law also provides good contrast for how similar yet different the “law” can be. Going further abroad will yield even more distinctions, but I only have so much space in a Lemmy comment.

    The first question to examine is: what is the point of having laws? Some valid (and often overlapping) answers:

    • Laws describe what is/isn’t acceptable to a society, reflecting its moral ideals
    • Laws incentivize or punish certain activities, in pursuit of public policy
    • Laws set the terms for how individuals interact with each other, whether in trade or in personal life
    • Laws establish a procedure machine, so that by turning the crank, the same answer will output consistently

    From these various intentions, we might be inclined to think that “the law” should be some sort of all-encompassing tome that necessarily specifies all aspects of human life, not unlike an ISO standard. But that is only one possible way to meet the goals of “the law”. If instead, we had a book of “principles” and those principles were the law, then applying those principles to scenarios would yield similar result. That said, exactly how a principle like “do no harm” is applied to “whether pineapple belongs on pizza” is not as clear-cut as one might want “the law” to be. Indeed, it is precisely the intersection of all these objectives for “the law” that makes it so complicated. And that’s even before we look at unwritten laws.

    The next question would be: are all laws written down? In the 21st Century, in most jurisdictions, the grand majority of new laws are recorded as written statutes. But just because it’s written down doesn’t mean it’s very specific. This is the same issue from earlier with having “principles” as law: what exactly does the USA Constitution’s First Amendment mean by “respecting an establishment of religion”, to use an example. But by not micromanaging every single detail of daily life, a document that starts with principles and is then refined by statute law, that’s going to be a lot more flexible over the centuries. For better/worse, the USA Constitution encodes mostly principles and some hard rules, but otherwise leaves a lot of details left for Congress to fill in.

    Flexibility is sometimes a benefit for a system of law, although it also opens the door for abuse. For example, I recall a case from the UK many years ago, where crown prosecutors in London had a tough time finding which laws could be used to prosecute a cyclist that injured a pedestrian. As it turned out, because of the way that vehicular laws were passed in the 20th Century, all the laws on “road injuries” basically required the use of an automobile, and so that meant there was a hole in the law, when it came to charging bicyclists. They ended up charging the cyclist with the criminal offense of “furious driving”, which dated back to an 1860s statute, which criminalized operating on the public road with “fury” (aka intense anger).

    One could say that the law was abused, because such an old statute shouldn’t be used to apply to modern-day circumstances. That said, the bicycle was invented in the 1820s or 1830s. But one could also say that having a catch-all law is important to make sure the law doesn’t have any holes.

    Returning to American law, it’s important to note that when there is non-specific law, it is up to the legislative body to fill those gaps. But for the same flexibility reasons, Congress or the state or tribal legislatures might want to confer some flexibility on how certain laws are applied. They can imbue “discretion” upon an agency (eg USA Department of Commerce) or to a court (eg Superior Court of California). At other times, they write the law so that “good judgement” must be exercised.

    As those terms are used, discretion more-or-less means having a free choice, where either is acceptable but try to keep within reasonable guidelines. Whereas “good judgement” means the guidelines are enforced and there’s much less wiggle-room for arbitraryness. And confusingly so, sometimes there’s both a component of discretion and judgment, which usually means Congress really didn’t know what else to write.

    Some examples: a District Attorney anywhere in California has discretion when it comes to filing criminal charges. They could outright choose to not prosecute person A for bank robbery, but proceed with prosecuting person B for bank robbery, even though they were working together on the same robbery. As an elected official, the DA is supposed to weigh the prospects of actually obtaining a guilty verdict, as well as whether such prosecution would be beneficial to the public or a good use of the DA office’s limited time and budget. Is it a bad look when a DA prosecutes one person but not another? Yes. Are there any guardrails? Yes: a DA cannot abuse their discretion by considering disallowed factors, such as a person’s race or other immutable characteristics. But otherwise, the DA has broad discretion, and ultimately it’s the voters that hold the DA to account.

    Another example: the USA Environmental Protection Agency’s Administrator is authorized by the federal Clean Air Act to grant a waiver of the supremacy of federal automobile emissions laws, to the state of California. That is to say, federal law on automobile emissions is normally the law of the land and no US State is allowed to write their own laws on automobile emissions. However, because of the smog crisis in the 70/80s, the feds considered that California was a special basket-case and thus needed their own specific laws that were more stringent than federal emissions laws. Thus, California would need to seek a waiver from the EPA to write these more stringent laws, because the blanket rule was “no state can write such laws”. The federal Clean Air Act explicitly says only California can have this waiver, and it must be renewed regularly by the EPA, and that California cannot dip below the federal standards. The final requirement is that the EPA Administrator shall issue the waiver if California requests it, and if they qualify for it.

    This means the EPA Administrator does not have discretion, but rather is exercising good judgement: does California’s waiver application satisfy the requirements outlined in the Clean Air Act? If so, the Administrator must issue the waiver. There is no allowance of an “i don’t wanna” reason for non-issuance of the waiver. The Administrator could only refuse if they show that California is somehow trying to do an end-run around the EPA, such as by trying to reduce the standards.

    The third question is: do laws encompass all aspects of everything?. No, laws are only what is legally enforced. There are also rules/by-laws and norms. A rule or by-law is often something enforced by something outside the legal system’s purview. For example, the penalty for violating a by-law of the homeowner’s association might be a revocation of access to the common spaces. For a DnD group, the ultimate penalty for violating a rule might be expulsion.

    Meanwhile, there are norms which are things that people generally agree on, but felt were so commonplace that breaking the norm would make everything else nonfunctional. For example, there’s a norm that one does not use all-caps lock when writing an online comment, except to represent emphasis or yelling. One could violate that norm with no real repercussions, but everyone else would dislike you for it, they might not want to engage further with you, they might not give you any benefit of the doubt, they may make adverse inferences about you IRL, or other things.

    TL;DR: there are unwritten principles that form part of the law, and there’s no way to record all the different non-law rules and social norms that might apply to any particular situation.





  • The bike seems fine at a cursory glance. What I wanted to comment about was this:

    But here’s my two cents: Most US motorcycle riders tend to lean toward heavier, higher-displacement bikes, owing to long-distance riding and highway commuting. The W175’s output may feel underwhelming for most American riders, essentially restricting its market appeal to commuters or moped-class buyers.

    That seems to me as: 1) probably correct, and 2) really devastating for what motorcycling will be in the next few decades in the USA. Already, the rate of motorcycle registrations (8.1 million in 2011, to 8.6 million in 2020) is not keeping pace with population growth (311 million in 2011, 343 million in 2020). Then add the likelihood that if younger folks are less inclined to want to drive (indicated by lower new driving license issuances), they’re also probably even less likely to want to ride a motorcycle.

    On that last comparison, the link does explain some of the factors for why under-25’s might delay or never obtain a driving license, and some will apply directly to motorcycles as well: the costs, especially insurance, and a growing irrelevance of needing to go somewhere just to connect with friends, when the Internet and smartphones can do that. I personally do value seeing people face-to-face but that’s becoming less of a predominant view amongst younger folks.

    And all that before we look into what makes learning to ride a motorcycle harder than learning to drive an automobile. While some riders may just have a knack for motorized two-wheeling, I would hazard that many riders learned or knew someone who rode, and that’s how the prospect of even wanting a motorcycle came into being. This is not unlike most other human endeavors: someone else is doing it, it looks fun, I wanna do it too.

    But if there are fewer riders overall, no parent or distant relative that rides, fewer instances of nonfictional motorcycles depicted in movies, scaremongering stories in the news about how a motorist murders a motorcyclists and gets away with it, then I can’t really blame people for thinking that motorcycles are more like skydiving and less like everyday transport. Sadly, it seems that as an activity, motorcycles are approaching what aviation calls the death spiral, when it will only be a matter of time before it disappears from view.

    Keeping the discussion germane to that original quote from the article, I think the explosion of ebikes – and good, ol fashioned acoustic bikes – has filled a large gap in demand, where people want cheap, simple, short-range mobility. It’s often quoted that of trips that Americans make, the majority are less than six miles (10 km) away. And so ebikes meet a good portion of that need, and what disadvantages they have (eg weather exposure, road hazards, motorist hazards) are compensated by being ridiculously cheaper than driving and insuring an automobile.

    So that kinda leaves only the commuter or touring use-cases left for motorcyclists. I personally am bullish on a slow-but-positive-growth for public transportation in the USA, and given that costs for all motorized transportation have historically gone up over time, the difference will be that public transportation can split those costs over more people. So growing transit ridership can overcome rising costs, making it the cheaper option at some crossover point, at least in or near urban areas. In such case, the commuter scenario on a motorcycle would make less sense than it does now.

    Will there be enough motorcycle enthusiasts in future to support a functioning domestic market? The winds are not in its favor.




  • One way to make this more Pythonic – and less C or POSIX-oriented – is to use the pathlib library for all filesystem operations. For example, while you could open a file in a contextmanager, pathlib makes it really easy to read a file:

    from pathlib import Path
    ...
    
    config = Path("/some/file/here.conf").read_text()
    

    This automatically opens the file (which checks for existence), reads out the entire file as a string (rather than bytes, but there’s a method for that too), and then closes up the file. If any of those steps go awry, you get a Python exception and a backtrace explaining exactly what happened.



  • To many of life’s either-or questions, we often struggle when the answer is: yes. That is to say, two things can hold true at the same time: 1) LLMs can result in job redundancies, and 2) LLMs hallucinate results.

    But if we just stopped the analysis there, we wouldn’t have learned anything. To use this reality to terminate any additional critical thinking is, IMO, wholly inappropriate for solving modern challenges, and so we must look into the exact contours of how true these statements are.

    To wit, LLM-induced job redundancies could come from skills which have been displaced by the things LLMs can do well. For example, typists lost their jobs when businesspeople were expected to operate a typewriter on their own. And when word processing software came into existence for the personal computer, a lot of typewriter companies folded or were consolidated. In the case of LLMs, consider that people do use them to proofread letters for spelling and grammar.

    Technologically, we’ve had spell-check software for a while, but grammar was harder. In turn, an industry appeared somewhere in the late 2000s or early 2010s to develop grammar software. Imagine how the software devs at these companies (eg Grammarly) might be in a precarious situation, if an LLM can do the same work. At least with grammar checking, even the best grammar software still struggles with some of the more esoteric English sentence constructions, so if an LLM isn’t 100% perfect, that’s still acceptable. I can absolutely see the fortunes of grammar software companies suffering due to LLMs, and that means those software devs are indeed threatened by what LLMs can do.

    For the second statement, it is trivial to find examples of LLMs hallucinating, sometimes spectacularly or seemingly ironic (although an LLM would be hard-pressed to simulate the intention of irony, I would think). In some fields, such hallucinations are career-limiting moves for the user, such as if an LLM was used to advise on pharmaceutical dosage, or used to draft a bogus legal appeal and the judge is not amused. This is very much a FAFO situation, where somehow the AI/LLM companies are burdened with none of the risk and all of the upside. It’s like how autonomous driving automotive companies are somehow allowed to do public road tests of their beta-quality designs, but the liability for crashes still befalls the poor sod seated behind the wheel. Thoss companies just keep yapping about how those crashes are all “human error” and “an autonomous car is still safer”.

    But I digress.

    My point is that LLMs have quite a lot of capabilities, and people make a serious mistake when they assume its incompetence in one capacity reflects its competency in another. This is not unlike how humans assess other humans, such as how a record-setting F1 driver would probably be a very good chauffeur for a limousine company. But whereas humans have patterns that suggest they might be good (or bad) at something, LLMs are a creature unlike anything else.

    I personally am not bullish on additional LLM improvements, and think the next big push will require additional academic research, being nowhere near commercialization. But even I have to recognize that some very specific tasks are decent using today’s availabile LLMs. I just don’t think that’s good enough for me to consider using them, given their subscription costs, the possibility of becoming dependent, and being too niche.





  • Let me make sure I understand the background info. Before things crashed, you had two machines that shared a two-way laser serial link, and so your testing involved sending from one machine to the other, as a way to exercise the TUN driver. Now that the second machine is dead, you wish to light up a spare two-way laser serial link. But rather than connecting to the second (dead) machine or some third machine, this spare link is functionally a “loop back” to the existing machine, the one that’s still alive. And you wish to continue your testing with this revised setup, to save yourself from having to commute to the office just to reboot the second machine.

    Do I have that right? If so, firstly, it’s a Saturday in all parts of the world lol. But provided that you’re getting sufficient rest from work, I will continue.

    As it stands, you are correct that the Linux machine will prefer to pass traffic internally, when it sees that the destination is local. We can try to defeat this, but it’s very much like cutting against the grain. This involves removing the kernel stack’s tendency to route packets locally, but only for the traffic going to/from the TUN interfaces. But if you get this wrong, you might lose access to the machine, and now you have 0/2 working machines…

    IMO, a better solution would be to move at least one of the TUN interfaces into its own “network namespace”. This is the Linux kernel’s idea of separate network stacks, and is one of the constituent technologies used to enable containers (which are like VMs but more lightweight). Since you only require the traffic to exit on one TUN netif and come back in on the other TUN netif, this could work.

    First, you create a new namespace (I’ll call it bobby), then you move tun11 into the bobby ns, and then you run all your commands in a shell that’s spawned within the bobby ns. The last part means you have access to all the files and your filesystem, but because you’re in a separate network namespace, you will not see the same netifs that would show up in the “default” namespace.

    Here are the commands, but you can check this against this reference too:

    ip netns add bobby
    ip link set tun11 netns bobby
    ip netns exec bobby /bin/bash
    

    From inside this shell, that’s how you access tun11 (and only tun11). You’ll want to open a second SSH connection to your remote machine, which will naturally be in the “default” namespace and will allow you access to the tun10 netif (but not tun11).

    Good luck!


  • Using an MSP430 microcontroller, I once wrote an assembly routine that (ab)used its SPI peripheral in order to stream a bit pattern from memory out to a GPIO pin, at full CPU clock rate, which would light up a “pixel” – or blacken it – in an analog video signal. This was for a project that superimposed an OSD onto the video feed of a dashcam, so that pertinent vehicle data would be indelibly recorded along with the video. It was for one heck of a university project car.

    To do this, I had to study the MSP430 instruction timings, which revealed that a byte could be loaded from SRAM into the SPI output register, then a counter incremented, then a comparison against a limit value in a tight loop, all within exactly 8 CPU cycles. And the SPI completes an 8-bit transfer every 8 SPI clock cycles, but the CPU and SPI blocks can use the same clock source. In this way, I can prepare a “frame buffer” of bits to write to the screen – plenty of time during the vertical blanking interval of analog video – and then blast it atop the video signal.

    I think I ended up running it at 8 MHz, which gave me sufficient pixel resolution on a 480i analog video signal. Also related was the task of creating a set of typefaces which would be legible on-screen but also be efficient to store in the MSP430’s limited SRAM and EEPROM memories. My job was basically done when someone else was able to use printf() and it actually displayed text over the video.

    This MSP430 did not have a DMA engine, and even if it did, few engines permit an N-to-1 transaction to write directly to the SPI output register. Toggling the GPIO register directly was out of the question, due to taking multiple clock cycles to toggle a single bit and load the next value. Whereas my solution was a sustained 1 bit per clock cycle at 8 MHz. All interrupts disabled too, except for the vertical and horizontal blanking intervals, which basically dictated the “thinking time” available for the CPU.