The Operating System is Built to Serve the User

Using a computer generally means doing one of a few common, repeating goals: listen to music, consume media content, create, connect, or have fun. The operating system is the bridge to accomplishing those goals.

Evaluating how well an operating system performs as this bridge involves a few key points.

  • It offers quick, simple ways to achieve your goals
  • It provides privacy and security in a straightforward way
  • It gets out of your way
  • And, hopefully (though less important), it doesn’t look like trash

When the capabilities of computers were still being explored, there was a clear drive to improve every aspect of the operating system.

Now, simplicity and “not confusing the user” often takes precedence, even if it sacrifices functionality.

As a side effect, computers become less useful for everyone. Instead of encouraging users to rise to the level of what the machine can do, functionality is stripped back and lowered to the simplest possible use case. The result is a system designed for the ideal but non existent lowest common denominator.

Windows

For example, the Windows 10 update was largely marketed as an attempt to polish the UI and create a more cohesive experience. That effort failed, largely due to a lack of clear direction within the company. Updating legacy UI components or fixing outdated Control Panel links to work with the modern Settings app doesn’t generate revenue, so management simply doesn’t care. The end result was a significant loss of user privacy, a slower interface, and fewer options.

With Windows 11, it feels like we’ve regressed even further; reinventing the wheel, repeatedly, and for no gain.

Windows 11 now assumes I need a slow-loading AI Chat to help solve problems that have had reliable solutions for years. Its latest major feature, “Copilot,” is just a rebranded Bing AI chat baked into the OS. Here are the Windows Settings you can modify:

Change Windows settings

In the chat pane try any of these:

  • Turn on dark mode
  • Mute volume
  • Change wallpaper

Perform common tasks

  • Take a screenshot
  • Set a focus timer for 30 minutes
  • Open File Explorer
  • Snap my windows
http://web.archive.org/web/20231103070429/https://support.microsoft.com/en-us/windows/welcome-to-copilot-in-windows-675708af-8c16-4675-afeb-85a5a476ccb0

Why would I need to click, wait for Bing Chat to slowly connect to internet services, and then send off a query just to open File Explorer? “Snap my windows”? Instead of dragging a window to the edge in a fraction of a second, why would I want to ask a slow-loading chat to do it for me? Mute volume? Isn’t there already a hardware shortcut for that? If some sound is blaring and I need to mute it quickly, I’d never waste time going through the chat. I don’t need Microsoft to reinvent the wheel when it comes to changing my wallpaper or launching a troubleshooter that never works. Why can’t I ask it to create a firewall rule to block every program with ‘razer’ in its name? And why is the Control Panel still in Windows 11, two versions after they claimed they were consolidating everything into the new Settings app? It’s pure laziness.

Two years later, they’ve completely removed those ‘features’ from public view, and simply say it supports all the features the web version does. No improvements.

Erosion of User Trust

You may have heard the term “enshittification”, referring to the process by which a company first acquires users by acting in their best interests, then shifting to serve the company’s best interests once users are hooked. This is happening with the entire culture of the internet.

It’s become a pervasive pattern across the digital landscape. Tools are no longer designed to accomplish tasks; instead, they’re built to collect data, spy on users, manipulate behavior for profit, and create addictive experiences. The result is an environment that prioritizes corporate gain over user satisfaction.

The concept of the “user” is often treated as a mythical, incompetent being that needs constant protection. While learning often comes through trial and error (by breaking things), there’s a widespread desire for a perfect, effortless solution that simply doesn’t exist. I recently read that the Signal app refuses to add any options, as outlined in their design philosophy.

Development Ideology

Truths which we believe to be self-evident:

  1. The answer is not more options. If you feel compelled to add a preference that’s exposed to the user, it’s very possible you’ve made a wrong turn somewhere.
  2. The user doesn’t know what a key is. We need to minimize the points at which a user is exposed to this sort of terminology as extremely as possible.
  3. There are no power users. The idea that some users “understand” concepts better than others has proven to be, for the most part, false. If anything, “power users” are more dangerous than the rest, and we should avoid exposing dangerous functionality to them.

This sets an extremely dangerous precedent. Not only does it assume people are incapable of learning, but it also forces everyone using a computer to the same, incompetent level as the “ideal” user – the mythical stupid person. Rather than adding advanced features that could benefit users and push humanity forward, the focus shifts to making sure the app is foolproof.

This attitude has quickly spread across the digital landscape. Take Changelogs, for example. Once meant to document actual changes, they now rarely list anything concrete. These days, most update notes offer vague phrases like “Bug fixes and improvements,” with no real information. This stems partly from a condescending view of users (“they don’t need to know or wouldn’t understand the details”), and partly from the fact that most changes no longer benefit the user. Instead, they quietly push the app in a worse direction, hidden behind empty words.

Trust is a two way street. The less products trust their users, the less users trust the product.

When software is built on the assumption that users are clueless and untrustworthy, it erodes the relationship entirely. Removing options, hiding functionality, and oversimplifying interfaces signal that the product doesn’t respect the user’s intelligence or intent. In turn, users become skeptical of updates, of features, and the motives behind every change. Once that mutual trust breaks down, users stop engaging, stop exploring, and eventually stop caring.

What We Can Do

Put your energy into products that genuinely respect the user. Don’t support this growing trend of junk food tech, designed for easy consumption but empty of real value. Exercise your right to ownership fully and freely. Don’t hesitate to push back against companies that exploit your time, attention, and data without accountability. Scream as loud as you can. Seek out tools that empower rather than pacify. Support software that offers transparency, flexibility, and control, not just convenience. Change won’t come from passivity; it will come from users demanding better, choosing alternatives, and refusing to settle for less.

Alternatives

The most important thing is to stop encouraging massive corporations to make their products even more user-hostile. You can do this by seeking out alternatives and, as the saying goes, voting with your wallet. Here are a few options to start with, and there are always more out there.

CategoryCommon Proprietary ProductAlternativeNotes
Web SearchGoogle SearchDuckDuckGoPrivacy respecting search engine with great similar performance.
BrowserChrome / Edge / SafariFirefoxMaintained by Mozilla; one of the only other browsers not built on Google code. ALL Chromium based browsers are helping Google.
EmailGmail / OutlookProton MailPrivacy respecting email with a desktop app.
Office SuiteMicrosoft 365 / Google WorkspaceLibreOfficeFull office suite, compatible with most file formats.
Cloud StorageGoogle Drive / iCloud / OneDriveNextcloudFile sync, collaboration, and app platform; self-hostable.
CalendarGoogle Calendar / Outlook CalendarNextcloud CalendarPart of the Nextcloud ecosystem.
Maps & NavigationGoogle Maps / Apple MapsOrganic MapsOffline maps, based on OpenStreetMap, privacy-friendly.
Operating SystemWindows / macOSLinuxUbuntu is recommended.
Video ConferencingZoom / Teams / Google MeetJitsi MeetEncrypted, open-source video chat, usable without accounts.
NotesEvernote / Google Keep / OneNoteJoplinMarkdown support, sync, encryption.
MessagingWhatsApp / Messenger / iMessageElement (Matrix)Secure, decentralized communication platform.
Photo ManagementGoogle Photos / iCloud PhotosPhotoPrismSelf-hosted AI photo manager with tagging and search.
TranslationGoogle TranslateApertiumMultilingual machine translation engine.
Tasks / To-DoMicrosoft To Do / Google TasksTasks.orgAndroid app supporting local and CalDAV sync (e.g., with Nextcloud).
SpreadsheetsMicrosoft Excel / Google SheetsEtherCalcReal-time collaborative spreadsheet editor.
DocumentsMicrosoft Word / Google DocsLibreOffice WriterWord processor in the LibreOffice suite.
Forms & SurveysGoogle Forms / TypeformLimeSurveyAdvanced, customizable survey platform.

Some alternatives may require learning more about your computer or adjusting your habits. That’s okay. Change doesn’t need to happen all at once. In fact, trying to cut everything off immediately will lead to frustration and burnout, making it likely you’ll give up and fall back into old patterns.

Start small. Stop paying companies that would hold a gun to your head for the next payment if it was legally allowed. Use an Adblocker (recommended by the FBI). Stop paying Google for YouTube Premium and instead use Invidious Instances and GrayJay. Stop paying for Microsoft 365 and start using LibreOffice for projects that allow it.

But the most meaningful, impactful step you can take? Stop using Windows. If you’ve never tried Ubuntu (or haven’t in years), it’s time to give it a shot. Modern Linux has become surprisingly user-friendly, even for people with no technical background.

It’ll only getting better as more demand a return to simpler times: when the computer served the user.


It helps me if you share this post

Published 2025-05-12 07:00:00

Unity Shaders Intro Part 2: HLSL/CG | Edge Distortion Effects

I recently saw these UI effects in a game called Cult of the Lamb and they were very satisfying to watch. Let’s learn how to create our own types of effects like these.

Prerequisites

  • Unity (I’m using 2022.3.17f)
  • Photo editing software (Aseprite, Photoshop, etc)
  • Seamless perlin noise generator for the noise texture we will need later

Base 2D Shader

Create a basic empty file with the ‘.shader’ extension in your Unity project or Right click > Shader > Standard Surface Shader

Shader "Custom/EdgeShader" 
{
	Properties 
	{
	}
	
	SubShader
	{		
		Pass 
		{
			CGPROGRAM
			ENDCG
		}
	}
}

We want to begin with a base shader to manipulate, so let’s start by displaying a sprite.

Our shader must expose it to the editor in order to set our texture. Add a line under our properties defining a main texture.

_MainTex ("Base (RGB) Trans (A)", 2D) = "white" {}

And the variable under SubShader.

sampler2D _MainTex;
float4 _MainTex_ST;

The _ST value will contain the tiling and offset fields for the material texture properties. This information is passed into our shader in the format we specified.

Now define the vertex and fragment functions.

struct vct 
{
	float4 pos : SV_POSITION;
	float2 uv : TEXCOORD0;
};

vct vert_vct (appdata_base v) 
{
	vct o;
	o.pos = UnityObjectToClipPos(v.vertex);
	o.uv = TRANSFORM_TEX(v.texcoord, _MainTex);
	return o;
}

fixed4 frag_mult (vct i) : COLOR 
{
	fixed4 col = tex2D(_MainTex, i.uv);
	col.rgb = col.rgb * col.a;
	return col;
}

Simple enough.

…or is it? That doesn’t look like it’s working properly. Let’s fix it.

We can add a Blend under our tags to fix the transparency issue.

Blend SrcAlpha OneMinusSrcAlpha

And we can just add the color property to our shader. At this point, we can display 2D sprites on the screen, yay!

Shader "Custom/EdgeShaderB" 
{
    Properties 
    {
        _MainTex ("Base (RGB) Trans (A)", 2D) = "white" {}
    }
    
    SubShader
    {		
        Tags {"Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent"}
        Blend SrcAlpha OneMinusSrcAlpha
        
        Pass 
        {
            CGPROGRAM
            #pragma vertex vert_vct
            #pragma fragment frag_mult 
            #include "UnityCG.cginc"

            sampler2D _MainTex;
            float4 _MainTex_ST;
            
            struct vct 
            {
                float4 vertex : POSITION;
                fixed4 color : COLOR;
                float2 texcoord : TEXCOORD0;
            };

            vct vert_vct(vct v)
            {
                vct o;
                o.vertex = UnityObjectToClipPos(v.vertex);
                o.color = v.color;
                o.texcoord = v.texcoord;
                return o;
            }

            fixed4 frag_mult (vct i) : COLOR
            {
                fixed4 col = tex2D(_MainTex, i.texcoord) * i.color;
                return col;
            }

            ENDCG
        }
    }
}

Now we can start messing with things.

Edge Distortion Shader

We want to add some movement and distortion to our sprite. Begin with movement.

How can we manipulate our shader pixels? Let’s show an example by modifying our main texture. We’ll simply change the position. To do so, we can do something simple like shifting the texture coordinate down and to the left.

fixed4 frag_mult (vct i) : COLOR
{
	float2 shift = i.texcoord + float2(0.15, 0.25);
	fixed4 col = tex2D(_MainTex, shift) * i.color;

	return col;
}

Okay, now how about some movement?

fixed4 frag_mult (vct i) : COLOR
{
	float2 shift = i.texcoord + float2(cos(_Time.x * 2.0) * 0.2, sin(_Time.x * 2.0) * 0.2);
	fixed4 col = tex2D(_MainTex, shift) * i.color;

	return col;
}

If you examine your sprite at this point, you may notice some odd distortion as it moves.

Set your sprite’s import settings correctly!
Mesh Type: Full Rect
Wrap Mode: Repeat

Once you ensure your sprite has the correct import settings, it’s time to introduce our final 2d sprite we want to manipulate with the shader to achieve our effect.

This image will greatly change the shader appearance, and you should try different gradients and patterns. Here’s my image scaled up:

But I recommend using the smallest resolution that looks good for your project due to memory and performance.

yes it’s that small (12×12)

We also need a seamless noise texture, for the distortion.

Let’s add another variable for it.

_NoiseTex ("Base (RGB) Trans (A)", 2D) = "white" {}

Once we’ve assigned our noise texture, it’s time to start moving it.

fixed4 frag_mult (vct i) : COLOR
{
	float2 shim = i.texcoord + float2(
		tex2D(_NoiseTex, i.vertex.xy/500 - float2(_Time.w/60, 0)).x,
		tex2D(_NoiseTex, i.vertex.xy/500 - float2(0, _Time.w/60)).y
	);
	fixed4 col = tex2D(_MainTex, shim) * i.color;
	return col;
}

Now, add the static sprite to its left in the same color and connect it vertically.

Adjusting the transparency will function as expected, so we could overlay this.

Shader "Custom/EdgeShader" 
{
    Properties 
    {
        _MainTex ("Base (RGB) Trans (A)", 2D) = "white" {}
        _NoiseTex ("Base (RGB) Trans (A)", 2D) = "white" {}
    }
    
    SubShader
    {		
        Tags {"Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent"}
        Blend SrcAlpha OneMinusSrcAlpha 
        
        Pass 
        {
            CGPROGRAM
            #pragma vertex vert_vct
            #pragma fragment frag_mult 
            #include "UnityCG.cginc"

            sampler2D _MainTex;
            sampler2D _NoiseTex;
            float4 _MainTex_ST;
            float4 _NoiseTex_ST;
            
            struct vct 
            {
                float4 vertex : POSITION;
                fixed4 color : COLOR;
                float2 texcoord : TEXCOORD0;
            };

            vct vert_vct(vct v)
            {
                vct o;
                o.vertex = UnityObjectToClipPos(v.vertex);
                o.color = v.color;
                o.texcoord = v.texcoord;
                return o;
            }

            fixed4 frag_mult (vct i) : COLOR
            {
                    float2 shim = i.texcoord + 
                float2(tex2D(_NoiseTex, i.vertex.xy/500 - float2(_Time.w/60, 0)).x,
                tex2D(_NoiseTex, i.vertex.xy/500 - float2(0, _Time.w/60)).y);
                fixed4 col = tex2D(_MainTex, shim) * i.color;
                return col;
            }

            ENDCG
        }
    }
}

Crown Shader

Here’s my quick little crown sprite.

Let’s make it evil.

We can repurpose the wall shader we just created and scale down the distortion as well as smoothing it

fixed4 frag_mult(v2f_vct i) : COLOR
{
    float2 shim = i.texcoord + float2(
        tex2D(_NoiseTex, i.vertex.xy/250 - float2(_Time.w/7.2, 0)).x,
        tex2D(_NoiseTex, i.vertex.xy/250 - float2(0, _Time.w/7.2)).y
    )/ 20;

    fixed4 col = tex2D(_MainTex, col) * i.color;

    return col;
}

Then we can add another pass to handle the normal sprite display.

Shader "Custom/CrownShader" 
{
    Properties 
    {
        _MainTex ("Base (RGB) Trans (A)", 2D) = "white" {}
        _NoiseTex ("Base (RGB) Trans (A)", 2D) = "white" {}
        _SpriteColor ("Color Tint Mult", Color) = (1,1,1,1)
    }
    
    SubShader
    {
        Tags {"Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent"}
        Blend SrcAlpha OneMinusSrcAlpha
        
        Pass 
        {
            CGPROGRAM
            #pragma vertex vert_vct
            #pragma fragment frag_mult 
            #pragma fragmentoption ARB_precision_hint_fastest
            #include "UnityCG.cginc"

            sampler2D _MainTex;
            sampler2D _NoiseTex;
            float4 _MainTex_ST;
            float4 _NoiseTex_ST;

            struct vct
            {
                float4 vertex : POSITION;
                float4 color : COLOR;
                float2 texcoord : TEXCOORD0;
            };

            vct vert_vct(vct v)
            {
                vct o;
                o.vertex = UnityObjectToClipPos(v.vertex);
                o.color = v.color;
                o.texcoord = v.texcoord;
                return o;
            }

            fixed4 frag_mult(vct i) : COLOR
            {
                float2 shim = i.texcoord + float2(
                    tex2D(_NoiseTex, i.vertex.xy/250 - float2(_Time.w/7.2, 0)).x,
                    tex2D(_NoiseTex, i.vertex.xy/250 - float2(0, _Time.w/7.2)).y
                )/ 20;

                shim *= float2(0.97, 0.91);
                shim -= float2(0.01, 0);

                fixed4 col = tex2D(_MainTex, shim) * i.color;
                return col;
            }
            
            ENDCG
        } 
        Pass 
        {
            CGPROGRAM
            #pragma vertex vert_vct
            #pragma fragment frag_mult 
            #pragma fragmentoption ARB_precision_hint_fastest
            #include "UnityCG.cginc"

            sampler2D _MainTex;
            sampler2D _NoiseTex;
            float4 _MainTex_ST;
            float4 _NoiseTex_ST;

            float4 _SpriteColor;

            struct vct 
            {
                float4 vertex : POSITION;
                float4 color : COLOR;
                float2 texcoord : TEXCOORD0;
            };

            vct vert_vct(vct v)
            {
                vct o;
                o.vertex = UnityObjectToClipPos(v.vertex);
                o.color = v.color;
                o.texcoord = v.texcoord;
                return o;
            }

            fixed4 frag_mult(vct i) : COLOR
            {
                float2 uv = i.texcoord;
                uv -= 0.5;
                uv *= 1.1;
                uv += 0.5;

                fixed4 col = tex2D(_MainTex, uv);
                col.rgb = _SpriteColor.rgb;

                return col;
            }
            
            ENDCG
        } 
    }
}

Source


It helps me if you share this post

Published 2024-01-26 06:00:00

AI Music Generation: MusicGen

Researchers have recently released a new paper and subsequent model, “Simple and Controllable Music Generation”, where they highlight it “is comprised of a single-stage transformer LM together with efficient token interleaving patterns, which eliminates the need for cascading several models”. What this essentially means in practice is the music generation can now be completed in less steps, and is getting more efficient as we make progress on various different types of models.

I expect AI to hit every industry in an increasingly rapid pace as more and more research becomes available and progress starts leapfrogging based on other models. MUSICGEN was trained with about 20K hours of unlicensed music, and the results are impressive.

Here are some interesting generations I thought sounded nice. As more models from massively trained datasets hit the public, we will see more community efforts and models as well just like with art.

Medium Model

I used the less performant medium model (1.5B parameters and approx 3.7 GB) to demonstrate how even on relatively poor hardware you could achieve reasonable results. Here is some lofi generated from the medium model.

Large Model

A step up is the 6.5 GB model. This produce slightly better sounding results.

What is that melody?

There is also a ‘Melody’ model that is a refined 1.5B parameter version.

Limitations

There are a few limitations on this model, namely the lack of vocals.

Limitations:

  • The model is not able to generate realistic vocals.
  • The model has been trained with English descriptions and will not perform as well in other languages.
  • The model does not perform equally well for all music styles and cultures.
  • The model sometimes generates end of songs, collapsing to silence.

However, future models and efforts will remedy these points. It’s only a matter of time before a trained vocal model is released with how fast machine learning advancements are accelerating.


It helps me if you share this post

Published 2023-06-10 18:36:40

AI

AI will help developer efficiency, not replace it.

One of the most significant use cases I’ve found for AI in my development work is its ability to automate repetitive tasks, such as using a bunch of similarly named, grouped variables. I recently was creating a ‘Human’ class, and needed all body parts for variables. That was suggested and picked up almost immediately by Copilot after a couple lines, and the whole class was done in mere seconds vs a few minutes. This adds up and means that I can focus on other creative tasks, such as developing new features, creating new UI ideas or focusing on user feedback. The result is increased productivity and faster software development.

I imagine a future where one can describe the architecture of my Android app in as much detail as possible and then go in and clean up the resulting code manually to a specific vision. Developers will be fast tracked to a more active management role.


It helps me if you share this post

Published 2023-05-17 01:05:41

Bad Bot Traffic

The internet has changed the way we live, work, and communicate. It’s opened up new possibilities for innovation and creativity, allowing individuals and businesses to connect with each other and share their ideas with the world. But with this rise in connectivity and accessibility, there has slowly been another, darker side rising, in the form of bot traffic and spam.

Bots have become a major problem on the internet, with their traffic accounting for over 50% of all web traffic and spam in recent years (this number fluctuates) making up the majority of all email traffic. This rise in bot traffic and spam has had a devastating impact on small websites and businesses, choking their ability to innovate and grow.

Small websites and businesses rely on organic traffic to grow and thrive. However, with so much spam on the internet, it can be difficult for these small players to compete. Bots can scrape content from websites, stealing their intellectual property and driving down their search engine rankings. And, can also be used to flood websites with irrelevant comments and messages, making it difficult for genuine users to engage with the content. Any website or content not protected with some sort of bot protection is immediately bombarded, DDoSed, hacked, or simply probed for information. I have almost 1,000 spam comments sitting in my queue for this website from the last time I checked. spam comments number: 886

This can have a particularly devastating impact on small websites and businesses. As the internet has become more monetized, with companies looking to profit from every aspect of online life, small websites and businesses have found it increasingly difficult to compete. They are often forced to rely on advertising revenue to survive, but with so much bot traffic and spam, they find it harder to generate real revenue, along with the growing popularity of ad blockers which are essentially a must in today’s internet landscape.

Another problem with the rise of bot traffic and spam is that it has made the internet more rigid and lifeless. Where once the internet was a place for hobbyists and enthusiasts to share their ideas and connect with like-minded individuals, it has now become a place where everything is monetized and controlled by large corporations.

In recent years, the rise of increasing malicious traffic on the internet has led many businesses to turn to big players like Cloudflare for protection. While these services can provide effective protection against bots and other malicious activity, they can also come at a cost for smaller businesses and startups.

One of the biggest problems with relying on big players for bot protection is that it can stifle innovation. Smaller businesses and startups are often the most innovative, as they are not burdened by the same bureaucracy and red tape as larger companies.

This is because these big players often provide a one-size-fits-all solution that may not be suitable for smaller businesses with different needs and requirements. Smaller businesses may be forced to adapt their operations and workflows to fit the requirements of these big players, rather than being able to innovate and develop their own unique solutions. Less competition, less innovation, and leads to things like Cloudflare taking down the entire internet when it has problems.

Another problem with relying on big players for bot protection is that it can be expensive. These services can come at a significant cost, which can be prohibitive for smaller businesses and startups that may not have the same financial resources as larger companies. This can create a barrier to entry for these smaller players and may limit their ability to compete with larger companies. Bots drive these costs up significantly, and basically make a gated entry for participation.

The rise of bot traffic and spam on the internet is a major problem that is choking innovation and creativity, overall making it difficult for small websites and businesses to compete. The web, nowadays, has become a strictly regulated and experiment discouraged place. Accounts are needed for every service. Every file could be a virus, and it’s often recommended not to click on ANY strange link or file, or venture off the beaten path. There’s no adventure, no random communities and sites you can discover. The internet, at its roots, is a place created for innovation and creativity. In recent years, it looks like just another tool for corporate profit.


It helps me if you share this post

Published 2023-03-18 21:00:00

Help! I’ve been hacked! What do I do?! My PC Has a Virus or is Infected Recovery Guide

This is a guide for virus removal for Windows PCs. If you have a computer/computers that you believe have a virus or have been hacked, here are the steps you must take to protect yourself.

Isolate from the internet

This is the most important step. A lot of functionality is limited if they don’t have a connection.

Make sure the device you believe has been compromised is disconnected from all forms of connectivity. Bluetooth should be off, airplane mode should be on, Ethernet should be unplugged. WiFi should be turned off, and device should be powered down until ready to perform other necessary recovery steps. This will prevent any malware from getting worse, ransomware from progressing, or hackers from sending remote instructions to your computer.

Additionally, immediately boot your computer into Safe Mode (as fast as possible), to prevent malware processes like ransomware from progressing further.

Booting into safe mode (with networking)

Safe Mode is a diagnostic operating mode, used mainly to troubleshoot problems affecting the normal operation of Windows. Such problems range from conflicting drivers to viruses preventing Windows from starting normally. In Safe Mode, only a few applications work and Windows loads just the basic drivers and a minimum of operating system components. This is why most viruses are inactive when using Windows in Safe Mode, and they can be easily removed.

bitdefender.com

From Settings app

  1. Press the Windows logo key windows key + I on your keyboard to open Settings. If that doesn’t work, click the Start windows key button in the lower-left corner of your screen, then select Settings Settings icon.
  2. Select Update & security Update and security icon, then click on Recovery Recovery icon.
  3. Under Advanced startup, select Restart now.
  4. After your PC restarts to the Choose an option screen, go to Troubleshoot > Advanced options > Startup Settings > Restart.
  5. After your PC restarts, you’ll see a list of options. Press 4 or F4 to start your PC in Safe Mode. Or if you’ll need to use the Internet, select 5 or F5 for Safe Mode with Networking.

From sign in screen

1. Restart your PC. When you get to the Windows sign-in (login) screen, hold the Shift key down while you click the Power  icon in the lower-right corner of the screen then select Restart.
2. After your PC restarts to the Choose an option screen, go to Troubleshoot > Advanced options > Startup Settings > Restart.
3. After your PC restarts, you’ll see a list of options. Press 4 or F4 to start your PC in Safe Mode. Or if you’ll need to use the Internet, select 5 or F5 for Safe Mode with Networking.

From system configuration

1. Launch System Configuration in Windows by simultaneously pressing the Windows windows key + keys on your keyboard. Then write msconfig in the text field and press OK.
2. Switch to Boot tab and, in the Boot options section, select the Safe Boot with Network. Then click OK.


If you have an Ethernet cable, plug the computer in directly.

NOTE: After you finished your work in Safe Mode, please open System Configuration again (step 1) and uncheck the Safe Boot option (step 2). Click OK and restart your machine. Your computer will now boot normally.
safe mode checkbox system configuration

3. Windows will tell you that you need to reboot your computer in order for the new setting to take effect. After the reboot, your computer will automatically boot into Safe Mode.

IMPORTANT: You may not have internet because of drivers and Safe Mode

Safe Mode doesn’t load most third party drivers as a precaution. This could lead to the scenario where you can’t access the internet. In this instance, you can use another computer to download the .exe setup file and transfer it with a USB drive. You could even use your phone to download and transfer from your phone with a hard wire.

Use Virus removal tools

AFTER YOU HAVE REBOOTED INTO SAFE MODE I recommend:

  1. Download Malwarebytes FREE, install and run
    (they will push you to buy the premium version, it is unneeded for our usage)
  2. Download AdwCleaner, install and run
  3. Download Sophos on demand Scan & Clean. If you want a faster download I’ve mirrored it, but this may be an out of date (3/9/2022) version. This is a ‘second opinion’ scanner that should be run after Malwarebytes.
32 BIT64 BIT
DOWNLOADDOWNLOAD

If you prefer, you can use your own antivirus removal tools.


If you are sure the virus is removed off the device, you can start recovery steps

After removing all traces of Malware

Okay, you’ve restarted your machine. You’ve run Malwarebytes. You’ve run Adwcleaner. You’ve turned off safe mode and now you’re back on the desktop. What now?

Run another virus scan

Seriously, you want to be 100% sure your device is at ground 0 again, especially after a breach. It’s better to be safe than sorry. Now that your device is at a “normal” state, it’s best to be sure some sneaky process isn’t running in the background again somehow.

Change your passwords

Depending on the type of virus, it may be prudent to update the passwords you use for online sites that are important to you. Especially any financial accounts or important email passwords. Trojans frequently exfiltrate passwords as one of the first actions taken upon an infected system.

Check your files

Double check that none of your important files were affected. If they were, this is a great reminder to do a backup! Or at least backup the files that are important to you.

Check antivirus settings

Make sure everything is functioning again and there aren’t any settings turned off from the attack.

Monitor site logins

Watch for site logins (via email or sms) over the next few weeks. If you’ve changed your passwords this shouldn’t be an issue but you can never be too careful.


It helps me if you share this post

Published 2022-12-10 07:00: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

Published 2022-08-19 07:05:33