GPT-3 Text Generation Demonstration: An AI rants about Windows

I like Windows, but the new update is terrible. They broke my favorite programs and the new interface is confusing.

But that’s not the only thing they broke.

They also broke the Start menu. Back in my Windows 7 days, the Start menu was a thing of wonder. With the Aero theme (which I miss so much), it was an amazing thing to look at. And it was simple to use. You wanted to start a new program? You clicked “All Programs”. You wanted to find a program? You clicked “All Programs”. You wanted to change a setting? You clicked “All Programs”, then “Control Panel”. You wanted to shut down your computer? You clicked “All Programs”, then “Shut Down”. You wanted to turn off your computer? You clicked “All Programs”, then “Turn Off Computer”. And it was fast. You didn’t have to wait for the Start menu to load, it was just there.

When Windows 8 came out, they tried to change this by introducing the Metro interface and the Start screen. The Metro interface was not the best choice for a desktop interface, but it was still better than the Start screen. The Start screen was a mess. It was hard to find anything and it was slow. They tried to fix this in Windows 8.1 by adding the Start button, but it was still a mess. In Windows 10, they tried to fix it again by adding the Start menu, but it was still a mess. And they tried to fix it again in the Creators Update, but it was still a mess. I don’t know what they’re going to try to do in the Fall Creators Update, but I’m sure it will be a mess.

This is what I was trying to say. I don’t know if it will be a deal breaker for me. I’m considering it, but I’m not sure. I’m not a big fan of the interface or the lock-in, but I like that it’s a good deal and the hardware is good. I’m thinking of getting the 128GB version, though.

The new release of Microsoft’s major operating system has lots of bugs. This sentence is correct.

As for Windows, I’ve used it for years and it’s still not ready for the desktop yet. It’s much better than it was in the past, and it’s getting better, but it’s not quite there yet. I’ll be keeping an eye on it, and when it’s more polished I’ll give it a go.

There is no longer the option to move a box to the front or back. Instead, the option is to change the order in the stack, which may not be as intuitive. The design of the interface has been greatly simplified. The panels have fewer tabs and the options have been moved to a separate popout menu. The search bar has also been removed. The position of the panels and the zoom level are no longer stored with the document. It may be annoying to have to zoom out and rearrange the panels for every new document you open. The new interface may be less friendly for new users. The interface was already quite simple, but the new interface is even simpler.


Wondering wtf you just read? Everything above was generated with GPT-3 with my posts as a base.


It helps me if you share this post with anyone who might be interested.
Quick Links to My Stuff

Published 2022-10-20 07:12:00

Press SHIFT to disable caps lock

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!

To learn how to enable this glorious setting, just read on. Or, if you’re using Linux, this will get that Google search (or DuckDuckGo) started for you. ๐Ÿ™‚

Windows 10

  1. Visit Settings > Typing > Advanced keyboard settings
  2. Then find Input language hot keys
  3. From there you will see the very last image’s menu

Windows 11

  1. Navigate to Time and Language > Typing > Advanced keyboard settings
  2. Find Input language hot keys
  3. You will see the very last image’s menu

You will then want to change this option:

Now I can’t go back, and I never wonder or think about caps lock accidentally being on. Been using this as default for around five years now. It surprises me this isn’t the de facto setting.


It helps me if you share this post with anyone who might be interested.
Quick Links to My Stuff

Published 2022-08-19 07:05:33

Carbon Coding Language: Google’s Experimental Successor to C++

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.

JavaScript โ†’ TypeScript
Java โ†’ Kotlin
C++ โ†’ Carbon?

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++.

// C++ Code
#include <math.h>
#include <iostream>
#include <span>
#include <vector>

struct Circle {
  float r;
};

void PrintTotalArea(std::span<Circle> circles){
  float area = 0;
  for (const Circle& c : circles) {
    area += M_PI * c.r * c.r;
  }
}

auto main(int argc, char** argv) -> {
  std::vector<Circle> circles = {{1.0}, {2.0}};
  // Converts 'vector' to 'span' implicitly
  PrintTotalArea(circles);
  return 0;
}
C++ coding example

Compared to Carbon:

// Carbon Code
package Geometry api;
import Math;

class Circle {
  var r: f32;
};

fn PrintTotalArea(circles: Slice(Circle)) {
  var area: f32 = 0;
  for (c: Circle in circles) {
    area += Math.Pi * c.r * c.r;
  }
}

fn Main() -> i32 {
  // Array like vector
  var circles: Array(Circle) = ({.r = 1.0}, {.r = 2.0});
  
  // Array to slice implicitly 
  PrintTotalArea(circles);
  return 0;
}
Carbon coding example

My initial thoughts are that the syntax looks mixed between C#, JavaScript, and C++. Prepending “var” before each variable seems redundant. Why not a type name followed by a declaration? One might argue that it leads to easy variable identification without memorization of variable types but that makes little sense as you put the type anyway. The way variables are initialized with “:” instead of =, reminds me of Javascript. Not sure if that’s a good thing, it looks less like C++ than I expected. Oddly, they chose “import” for the system packages it seems which is also shared with Python. I do like the shortening of function to fn. You could argue shorthand is the point because it’s cleaner and smaller, but again why is it defined as a function and then an ‘i32’? Seems redundant. unless they decided fn FunctionName() -> i32 is shorter than int FunctionName(). It could be their goal is simply to separate the syntax from other known languages enough to recognize at a glance. Maybe I’m missing something.

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++.

// C++ code used in both Carbon and C++;
struct Circle ( float r; ); 
// Carbon exposing a function for C++:
package Geometry api; 
import Cpp library "circle.h";
import Math; 
fn PrintTotalArea(circles: Slice(Cpp.Circ/e)) {
    var area: f32 = 0;
    for (c: Cpp.Circle in circles) { 
        area += Math.Pi * c.r * c.r;
    } 
    Print("Total area: {0}", area); 
}
// C++ calling Carbon:
#include <vector>
auto main(int argc, char** argv) -> int { 
    std::vector<Circle> circles = {{1.0), (2.8)}}; 
    Geometry::PrintTotalArea(circles);
    return 0; 
}
C++ code used in both Carbon and 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?


It helps me if you share this post with anyone who might be interested.
Quick Links to My Stuff

Published 2022-08-03 00:19:33

Applying custom Windows styles to Firefox, Chrome, and other Chromium browser’s window buttons in Windows 10 & 11

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. ๐Ÿ˜‰

DEFAULT: Custom themed Notepad next to standard browsers

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.

  1. Open start menu.
  2. Search and find your browser shortcut
  3. Right-click, and open file location
  4. 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)
  5. 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 )
  6. 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
  7. 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.

  1. Launch the Registry Editor (Win + R, regedit)
  2. Navigate to Computer\HKEY_CLASSES_ROOT\ChromeHTML\shell\open\command
  3. 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
  4. 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

Firefox needs CSS and changing an internal flag in order to work.

  1. Open your Firefox profile. You can find it in %appdata%\Mozilla\Firefox\Profiles, try looking at the one most recently modified.
  2. If the folder doesn’t exist already, create a folder called ‘chrome‘. Yes, this is the tutorial for Firefox.
  3. Inside the ‘chrome‘ folder in your profile, create or edit the file ‘userChrome.css‘.
  4. 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.
  5. Open a new Firefox window
  6. Enter about:config into the URL bar, and bypass the warning
  7. Change the toolkit. legacyUserProfileCustomizations. stylesheets option to true by double clicking.
  8. Restart Firefox
@namespace xul url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");
@namespace html url("http://www.w3.org/1999/xhtml");
.titlebar-button {
background-color: transparent !important;
transition: background-color 0.5s ease;
height: 0px;
}
.titlebar-button>.toolbarbutton-icon {
list-style-image: none;
}
.titlebar-button:hover {
background-color: rgba(121, 121, 121, 0.1) !important;
}
#titlebar-close:hover {
background-color: rgba(121, 121, 121, 0.1) !important;
}
#titlebar-close:hover>.toolbarbutton-icon {
list-style-image: url("chrome://browser/skin/caption-buttons.svg#close-white") !important;
}
#main-window {
-moz-appearance: -moz-win-glass !important;
background: transparent !important;
}
#navigator-toolbox {
background: transparent !important
}
view raw userChrome.css hosted with ❤ by GitHub

And finally, get my better dark theme for Firefox. ๐Ÿ™‚


Now your browser buttons look sleek and uniform, just like the rest of your system.


It helps me if you share this post with anyone who might be interested.
Quick Links to My Stuff

Published 2022-07-31 09:03:00

Realtime Priority: Ask and you will receive

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.
realtime priority preview

However, upon clicking that option, a scary looking dialogue option pops up informing you that this is probably a bad move.
realtime priority warning

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.

Realtime is the highest process class

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.


It helps me if you share this post with anyone who might be interested.
Quick Links to My Stuff

Published 2022-07-24 05:03:48

Undertale Mobile Native Android Build with Controller & Keyboard Support + Save Editor

What the heck?” I hear yourself asking.

“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)

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.

Download .APK v0.0.8 for ANDROID


It helps me if you share this post with anyone who might be interested.
Quick Links to My Stuff

Published 2022-06-17 07:39:00