When typing, it’s always disconcerting to realize THAT CAPS LOCK IS ON. Caps Lock is useful (sometimes), but more often than not I find myself accidentally engaging it. However, you can change things around in your preferred OS (this guide is for Windows) to allow disabling Caps Lock with Shift. This simple setting changes things for the better, and makes more logical sense.
We’ve Been Doing It Wrong
The logical argument for disabling Caps Lock with Shift boils down to states, and being aware of the key’s current state with the least amount of information possible.
If Caps Lock is a toggle, it’s possible to accidentally hit the key an unknown number of times, or lose track of whether it’s on or off. In order to discover the ‘state’ of the key, you must begin typing. The other way to discover the ‘state’ would be to glance down at your keys, or have some other sort of ‘indicator’ like a keyboard implements visually or graphically. Both of these are wasted efforts and time.
When typing, you shouldn’t look at the keys as much as possible. The cleaner way to handle our problem then is to make Shift disable Caps Lock. When you start typing your sentence, if caps lock is on, it’s naturally disabled. It works naturally with how you type and I no longer encountered any errors with Caps Lock at all upon integrating this. When you need to use it, turn it on. Then, go back to typing as before. It’s no longer a separate mechanism to keep track of, but integrated into the typing experience and bows out quickly after usage without any extra key press. As an added bonus, you don’t have to wonder if Caps Lock is ON either. You simply click it, and type. If it was on, no effect!
On July 19th 2022, Google introduced Carbon Language. What exactly is Carbon, and what does it aim to achieve? Note that the Carbon coding language is experimental.
To understand Carbon, we first need to take a look at the language it’s attempting to augment. That is, C++. It remains the dominant programming language for performance critical software, and has been a stable foundation for massive codebases. However, improving C++ is extremely difficult. This is due to a few reasons:
Decades of technical debt
Prioritizing backwards compatibility over new features
C++, ideally, is about standardization rather than design
Carbon, as Google puts it, is okay with “exploring significant backwards incompatible changes”. This has pros for those wanting to work with a language developing with the mindset of “move fast and break things”.
Carbon promises a few things in their readme:
Carbon is fundamentally a successor language approach, rather than an attempt to incrementally evolve C++. It is designed around interoperability with C++ as well as large-scale adoption and migration for existing C++ codebases and developers. A successor language for C++ requires:
Performance matching C++, an essential property for our developers.
Seamless, bidirectional interoperability with C++, such that a library anywhere in an existing C++ stack can adopt Carbon without porting the rest.
A gentle learning curve with reasonable familiarity for C++ developers.
Comparable expressivity and support for existing software’s design and architecture.
Scalable migration, with some level of source-to-source translation for idiomatic C++ code.
Google wants Carbon to fill an analogous role for C++ in the future, much like TypeScript or Kotlin does for their respective languages.
Talk is cheap, show me the code
Okay, so what does Carbon look like then?
First, let’s see how to calculate the area of a circle in C++.
Compared to Carbon:
One neat feature they’ve shown is the interoperability between Carbon and C++. You can call C++ from Carbon and vice versa. You can rewrite or replace as little or as much of your libraries as you want without fear of breaking anything. Well, at least without breaking anything more than normal when dealing with C++.
And better memory safety is also promised
Safety, and especially memory safety, remains a key challenge for C++ and something a successor language needs to address. Our initial priority and focus is on immediately addressing important, low-hanging fruit in the safety space:
Tracking uninitialized states better, increased enforcement of initialization, and systematically providing hardening against initialization bugs when desired.
Designing fundamental APIs and idioms to support dynamic bounds checks in debug and hardened builds.
Having a default debug build mode that is both cheaper and more comprehensive than existing C++ build modes even when combined with Address Sanitizer.
Time will tell if the language develops into a developer favorite or fades into obscurity like Dlang. What, you haven’t heard of D?
Typically, browser vendors force default button styles onto the program. This can be troublesome when you use something like SecureUxTheme to change your Windows styles, and you care about the cohesiveness. There is a hacky solution, even if the Firefox forums told me there wasn’t. 😉
For Google Chrome, Edge, Brave, and some other Chromium-based browsers
For Chromium based browsers you can simply change the shortcut target to allow launching with your custom changes.
Open start menu.
Search and find your browser shortcut
Right-click, and open file location
Right click > open Properties of the browser shortcut (The shortcut for Chrome in the Start Menu may be found in C:\ProgramData\Microsoft\Windows\Start Menu\Programs)
Add this line --disable-windows10-custom-titlebar to the end of the Target field after a space. (For Chrome, “C:\Program Files\Google\Chrome\Application\chrome.exe” becomes “C:\Program Files\Google\Chrome\Application\chrome.exe” –disable-windows10-custom-titlebar )
In order for your changes to show up you may need to use Task Manager (ctrl + shift + esc) and kill all background processes of that browser
Repeat for each browser shortcut you use.
Changing the Registry Launch settings
This is all well and good but what if you click on a link and the browser opens automatically? Now we aren’t using the custom launch option anymore. We can edit the registry to fix this.
This is the “I’m not responsible if you break your computer” warning: BE SURE TO ALWAYS MAKE A BACKUP OF THE REGISTRY BEFORE PERFORMING ANY CHANGES.
Launch the Registry Editor (Win + R, regedit)
Navigate to Computer\HKEY_CLASSES_ROOT\ChromeHTML\shell\open\command
Change the (Default) value from "C:\Program Files\Google\Chrome\Application\chrome.exe" --single-argument %1 to "C:\Program Files\Google\Chrome\Application\chrome.exe" --disable-windows10-custom-titlebar --single-argument %1
We are essentially just adding that custom launch argument onto the default launch arguments Windows calls when it opens the program
Starting the browser now use your themed settings. Older versions Chromium may have a different startup option. Try --disable-features=Windows10CustomTitlebar if it doesn’t work for you
Firefox needs CSS and changing an internal flag in order to work.
Open your Firefox profile. You can find it in %appdata%\Mozilla\Firefox\Profiles, try looking at the one most recently modified.
If the folder doesn’t exist already, create a folder called ‘chrome‘. Yes, this is the tutorial for Firefox.
Inside the ‘chrome‘ folder in your profile, create or edit the file ‘userChrome.css‘.
Put these contents (or embedded down below) into the css file, either on its own or adding to what is already there. You can modify anything you want, such as the ‘titlebar-button:hover’ alpha value to your liking.
Open a new Firefox window
Enter about:config into the URL bar, and bypass the warning
Change the toolkit.legacyUserProfileCustomizations.stylesheets option to true by double clicking.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
At some point when looking through Task Manager you may notice the ‘priority’ setting in Task Manager and decide that you want your favorite game (example: Minecraft) to run faster. You right click the process in Task Manager and set the priority to ‘realtime’, the highest setting.
However, upon clicking that option, a scary looking dialogue option pops up informing you that this is probably a bad move.
Changing the priority in this instance causes our laptop mouse to lag across the screen and explorer.exe to stop responding. Fun! Why is this the case? What’s going on here?
Realtime priority is the absolute highest priority you can set a program. This tells Windows you want to dedicate as much CPU time as possible to that process, so basic process like mouse input and Windows UI start competing for CPU cycles.
OPTIONAL: Process Table Explanation and Further Information
The “Base priority” column in Task Manager is showing you the process class (called “process priority class” in some docs). Note that Task Manager (at least in Windows 10) labels the “Idle” priority class as “Low” (probably to avoid confusion with the idle process, etc.).
The process class is used only to initialize the priority of threads created within the process. Every thread is created with the “normal” thread priority. If the process is of the “normal” process class, then that means the thread has a base priority of 8.
Programs can change the priorities of their own threads within their process class. In a “normal” process, setting a thread to THREAD_PRIORITY_HIGHEST sets that thread’s base priority to 10. If you change the priority class of a process (say with Task Manager) then every thread’s base priority changes according to the table.
There are a lot of “name anomalies” in this table. “Highest” is not the highest thread priority, “lowest” is not the lowest, “idle” does not mean you are not or will not be doing anything, and “realtime” does not guarantee scheduling behavior suitable for real-time work (it’s just more predictable than the non-realtime classes, partly because it’s above them all, and partly because automatic priority adjustment is turned off in the “realtime” class).
For processes, one is supposed to use the process classes to indicate how important – or not – it is for each process to get CPU time, relative to a “normal” process. And within each process, the developer is supposed to set the thread priorities similarly, relative to a “normal” thread within the process. In practice, very few developers ever bother. (And they should. For example, a compute-bound task like video rendering should be set to a lower-than-normal priority, to avoid interfering with interactive use of the system.)
And the “idle” process class, and the “idle” thread priority within a process, does not mean nothing will be done by that process or that thread. It just means the thread or the process is willing to live with CPU cycles that nobody else wants.
You’ll notice that there is no “0” on the table. Ordinary applications cannot request running at priority 0 through the normal APIs. Only kernel mode threads can run at priority zero. As you’ve found, that is reserved for the zero page thread – or threads; there may be more than one on a NUMA machine.
This doesn’t lead to locking the system entirely because most programs don’t actually use 100% of the CPU regardless of their priority. Most threads do wait for things sometimes, and that could include waiting for a read/write to complete, or some other thread to indicate that they don’t have to wait any more. Additionally, “real-time priority” as a term actually consists of a range of priorities, as indicated by the table above. It’s possible for one “real-time” process to have higher priorities than those of another “real-time” process.
Most of the time, there’s no real reason to change process priority, although a few times it has been personally helpful in situations where two programs are working on a CPU intensive task, and they are slowing each other down. It’s possible to set the program’s process priority to “Above normal” pretty safely, allowing the CPU to dedicate more time to it.
“Is there even an android version of the game out?” No. 🙂
Undertale has been one of the most influential and one of my favorite games of all time. Since the game’s release in 2015 I’ve been entranced by its secrets and storyline. I played it blind when it first came out and have been hooked ever since.
I’ve been a part of a few different Undertale data mining communities over the years and although I admit there probably aren’t any secrets left, I’m still interested in any new theories or fan works/mods.
I came across a method to patch gamemaker files including Undertale to mobile, and then discovered there’s already been some work in the community into this area. I took the existing mobile Undertale modifications online and added full controller and keyboard support (note this build is Android only).
A SAVE EDITOR has also been added into the game. If you visit the SETTINGS menu from either the beginning of the game or the Continue menu, you can overwrite your save file with presets. Save file preset names are below, but THEY CONTAIN SPOILERS (if you haven’t somehow heard/played UNDERTALE already)
And of course an option to clear and reset. This option is broken currently though.
This along with the added Bluetooth controller support should make it bearable to play Undertale on mobile devices!
This build is for educational purposes and Undertale research only. Also, some stuff is broken right now. If you can’t get past “Begin game” or the game freezes, try going to the settings beforehand and loading a preset save file.
Task Manager may display a startup entry with a blank program icon and the name ‘Program’. What is this?
While this can look malicious or suspicious, typically it’s the result of a mistake. When a program registers itself as a startup program, it may not enclose one or more values in double quotes correctly. Thus, if a program path is supposed to be ‘C:\Program Files\Starcheat\starcheat.exe‘, the developer may have mistakenly not enclosed the path correctly. Windows will read a space as the end of the value, therefore it becomes C:\Program.
View Offending File Path
If you want to view the path causing this, simply right click on the header of the task manager startup entries and show the ‘Command line’ option. ‘Startup type’ is useful to show as well.
From here, you will now be able to see the broken path and navigate there yourself.
As you can see, in this instance the value is not enclosed correctly, leading to this error.
You can then potentially remove the startup entry entirely or laugh at the developer’s incompetence.
It’s 2022, and cryptocurrencies have hit something of an impasse. While assets like Bitcoin and Ethereum are firmly established in the public consciousness, many questions still remain about crypto security and long-term viability. Even now, in the age of wild NFT hype and rampant digitalization (of seemingly everything), there’s as much discussion about the safety of the various exchanges and wallets you’d use for digital dealings as there is about the actual marketplaces.
Amidst this uncertainty, cryptocurrencies are still being used primarily as investment assets, and haven’t made much of an impact on how we physically (or virtually) spend our money. Volatility in particular remains a big issue; vendors are reluctant to accept currencies with such wild value swings as some cryptos –– and by the same token, those with crypto assets may be loathe to spend them and risk potentially missing out on value gains.
All of this begs the question though: What opportunities remain for crypto to make the jump from being something to have into something to use? A few options with legitimate potential come to mind
El Salvador caused a storm in September of 2021 when the country itself started to accept Bitcoin as legal tender. With 1.4 million Salvadorans living and working in the U.S. and foreign remittance accounting for some $6 billion (or about 23% of El Salvador’s GDP), crypto’s speed and potentially lower cost compared to traditional money transfer methods make it an attractive proposition. Accused of pandering to rich currency speculators, President Nayib Bukele went to pains to show how crypto would benefit the average family with the launch of payment app Chivo, which Salvadorans can use to pay directly with Bitcoin at both local vendors and global chains such as McDonald’s and Starbucks in San Salvador.
This is, of course only one country’s journey with crypto. But we know that Panama, Paraguay, Brazil, and Argentina at minimum are among the nations monitoring how El Salvador’s integration of crypto into daily life progresses. It appears possible that in the near future there may be countries and regions for which cryptocurrency will become a favored if not necessary option among travelers (not to mention entire local populations).
When Elon Musk announced in January that Tesla would accept Dogecoin for certain company-branded merchandise, the headlines were focused on the acceptance of what was once seen as a “joke” crypto. However, even when we look beyond Musk’s high profile, many retailers have been quietly accepting many cryptos for some years now.
Unsurprisingly, tech vendors were among the first to get on board, with Newegg having welcomed Bitcoin transactions since 2014, and added Dogecoin, Shiba Inu, and Litecoin to its payment methods in 2021. Meanwhile, Chinese vendor FastTech ships worldwide and accepts 22 different cryptocurrencies as of this writing. And Home Depot has gone one step further; the biggest hardware chain in the U.S. has accepted Bitcoin for both website and in-store purchases since 2019.
Given that the internet is where cryptos are stored and traded, gaming seems like a natural outlet for spending. Accordingly, Microsoft accepts Bitcoin payments for both hardware and software, through users’ Microsoft accounts. The game streaming platform Twitch allows users to tip their favorite accounts using multiple cryptocurrencies. And in the emerging Decentraland metaverse, poker salons where players wager the in-house crypto MANA have become some of the most popular locations in the platform’s digital world.
Traditional poker sites have also been quick to capitalize on cryptocurrency being held by growing numbers of people. Indeed, with more than 100 million individuals now holding some form of crypto asset, the market has diversified well beyond “tech bros” and fund managers and now more closely mirrors the general public –– much of which plays poker online.
As this mainstream transition has occurred, it has also become clear that crypto in poker has numerous potential benefits. First and foremost, the security the blockchain offers means a safer (and more anonymous) way of depositing funds. Additionally, payouts can be actioned almost instantaneously. And as a sort of added bonus –– depending on how you look at it –– the volatility of cryptos adds potential perks to gambling, in that winnings can appreciate in value, and lost cryptocurrency might eventually become less valuable (though of course both of these perceived perks can also work the other way around). Because of these factors, we have already seen some adoption of crypto by poker sites, and it’s likely the trend will continue.
Dining and Entertainment
On the dining front, it sometimes goes overlooked that some major restaurants now accept crypto payments. Food at the countrywide Mastro’s steakhouse chain can be paid for with Bitcoin or Bitcoin Cash, for instance. The delivery app Menufy also accepts Bitcoin, as can the Takeaway app in Europe.
As for entertainment, there seem to be more examples with each passing month. Crypto advocate Mark Cuban has ensured fans can use Bitcoin and Dogecoin to buy tickets and merchandise connected to his NBA franchise (the Dallas Mavericks). AMC Theaters now accept various cryptos as payment methods for movie tickets as well. And these are just a few highlights in the entertainment sector.
It’s true that cryptocurrencies haven’t become as much a part of our daily lives as some acolytes have predicted over the years. Chances are they won’t until federal government regulations lay out formal structures for a safer ecosystem that more traditional companies can get on board with. At this point though, there are still plenty of ways to use crypto in day-to-day spending, and the use cases are only growing.