diff --git a/blog/2024/goodbye-windows.html b/blog/2024/goodbye-windows.html new file mode 100644 index 00000000..13fd8a08 --- /dev/null +++ b/blog/2024/goodbye-windows.html @@ -0,0 +1,16 @@ +Goodbye Windows

Goodbye Windows

It's you, not me.

August 6, 2024windowslinuxdebian

I finally did it. All the computers in my house are now running debian except for the office PC. I've +used Windows for at least 30 years but over the last few years it's become more and more user hostile. After the latest +Windows Recall push and the security implications surrounding it, I decided I could no longer +keep running Windows on all the machines in my house.

+ + +

Fox my linux distribution I went with debian because I want my machines to just work™. I don't really know +what to think about Ubuntu and their snap packages and while I tried fedora and was initially +impressed, I found that a few things subtley didn't work. debian seems to be super stable with packages in apt and for +anything where I need the latest and greatest I just install it by hand or build it from source. It's a boring distribution but I see that +as a good thing.

+

I even installed it on my gaming PC and now have a console like experience up and running on it. I only enabled the "non-free" repos in +debian and everything seems to work well enough even though I have an nVidia graphics card in it. I think only +the open source nVidia driver is installed and not the proprietary one from nVidia but so far I haven't noticed any major problems. I found +one game that wouldn't work from my Steam collection so far but that's it.

+
\ No newline at end of file diff --git a/blog/page10.html b/blog/page10.html index 7d582465..d04f1621 100644 --- a/blog/page10.html +++ b/blog/page10.html @@ -1,4 +1,6 @@ -The Blog of Zachary Snow

LINQ calls IEqualityComparer<T>.GetHashCode() before Equals()

November 24, 2014.netlinq

This is a problem that has bitten me more than a few times so I thought it was about time to write a blog post about it. It's one of those problems +The Blog of Zachary Snow

Using batch files as the task runner in Visual Studio Code

July 9, 2015vsvscodebatch

Visual Studio Code allows you specify tasks which can be in a task runner. Most examples +I've seen show how to integrate with Javascript task runners such as Gulp. There is no reason why you can't simpley use +batch files though.

Read More

LINQ calls IEqualityComparer<T>.GetHashCode() before Equals()

November 24, 2014.netlinq

This is a problem that has bitten me more than a few times so I thought it was about time to write a blog post about it. It's one of those problems that makes you scratch your head for a bit and then the light bulb goes on and you remember you've solved this one before. It occurs whenever you use a LINQ extension method which takes an instance of IEqualityComaparer.

Read More

My Experience with OpenGL vs Direct3D

November 18, 2014graphicsopengldirect3D

I've struggled a lot with myself over whether I should use OpenGL or Direct3D. There is no blanket answer to this question that anyone can tell you. Both APIs have a very different feel and which one you prefer can only be decided on your own.

Read More

Code from when I was young and stupid and needed the money

June 18, 2014old-codec++

We have had 2 interns at work for the past few weeks and one of the tasks we gave them was to implement Quicksort. @@ -22,9 +24,4 @@ .AddReferences(new MetadataFileReference(Assembly.GetEntryAssembly().Location)) .AddSyntaxTrees(syntaxTree); -

All the cool kids are static

March 9, 2014static-websites

Seems like all the cool kids these days have converted their websites to completely static ones. I'm looking at you Mr. Haacked. I thought this was a pretty cool idea and a chance -to really refresh my website so I decided to take a stab at it. It's currently a work in progress.

-

I ended up writing my own tool I call Gatsby to do it. I also set up the whole deploy process myself involving pushing to Github -which then informs my website to pull from the Github repository. Hopefully that will be a blog post in the not too distance future.

-

Sorry for any inconvenience.

\ No newline at end of file diff --git a/blog/page11.html b/blog/page11.html index 16c8379d..a7cbfbfd 100644 --- a/blog/page11.html +++ b/blog/page11.html @@ -1,4 +1,9 @@ -The Blog of Zachary Snow

Using Component Glue to build your object graphs automatically

Component Glue is an IoC container and you use it of course to wire up your object graphs for you. Component Glue can also build your object graphs for you automatically if there are no interfaces involved. Take this example:

+The Blog of Zachary Snow

All the cool kids are static

March 9, 2014static-websites

Seems like all the cool kids these days have converted their websites to completely static ones. I'm looking at you Mr. Haacked. I thought this was a pretty cool idea and a chance +to really refresh my website so I decided to take a stab at it. It's currently a work in progress.

+

I ended up writing my own tool I call Gatsby to do it. I also set up the whole deploy process myself involving pushing to Github +which then informs my website to pull from the Github repository. Hopefully that will be a blog post in the not too distance future.

+

Sorry for any inconvenience.

+

Using Component Glue to build your object graphs automatically

Component Glue is an IoC container and you use it of course to wire up your object graphs for you. Component Glue can also build your object graphs for you automatically if there are no interfaces involved. Take this example:

In After.cs, you can see that Component Glue is able to build the entire object graph for us. This will include all future dependencies as well so long as interfaces don't come into play. Should an interface be needed, you can just bind that single component.

@@ -22,29 +27,4 @@

Changelog:

Introducing GLDotNet

Today I released a project I've been playing around with for a year or so on Codeplex. It's called GLDotNet. From the project description:

C# wrapper for OpenGL. Partially generated from the OpenGL spec and partially written by hand, the aim is to have a flexible and native feeling C# binding.

I have generated functions from the OpenGL spec excluding 1 or 2 but unfortunately of the generated code is untested. There is a demo project included in the source code. The Github repository is located here: https://github.com/smack0007/GLDotNet

-

HTTP Status Codes as Telephone Calls

December 18, 2012http

I had a funny idea to describe HTTP Status Codes as telephone conversations so I thought I'd write it in a blog post.

-
-
301
-
She's not here right now but she'll be back later.
- -
302
-
She doesn't live here anymore, she now lives somewhere else.
- -
304
-
He hesn't changed a bit.
- -
401
-
I can't allow you to speak to him.
- -
402
-
$1.99 for the first minute...
- -
404
-
No one by that name lives here.
- -
500
-
It's not you, it's me.
- -
503
-
I can't deal with this anymore.
-
\ No newline at end of file +
\ No newline at end of file diff --git a/blog/page12.html b/blog/page12.html index 74e8cf98..c2143c6f 100644 --- a/blog/page12.html +++ b/blog/page12.html @@ -1,4 +1,29 @@ -The Blog of Zachary Snow

Snowball is now modular

November 6, 2012.netgame-programming

The version of Snowball currently on GitHub under the "develop" branch has been split into multiple projects. There is now an assembly for each major piece of Snowball, such as Graphics, Input, Sound. Although this means having to reference more assemblies, the amount of code your project depends on is now smaller. This also makes code maintenance a bit easier as it's more clear now what parts of the library depend on other parts of the library.

+The Blog of Zachary Snow

HTTP Status Codes as Telephone Calls

December 18, 2012http

I had a funny idea to describe HTTP Status Codes as telephone conversations so I thought I'd write it in a blog post.

+
+
301
+
She's not here right now but she'll be back later.
+ +
302
+
She doesn't live here anymore, she now lives somewhere else.
+ +
304
+
He hesn't changed a bit.
+ +
401
+
I can't allow you to speak to him.
+ +
402
+
$1.99 for the first minute...
+ +
404
+
No one by that name lives here.
+ +
500
+
It's not you, it's me.
+ +
503
+
I can't deal with this anymore.
+

Snowball is now modular

November 6, 2012.netgame-programming

The version of Snowball currently on GitHub under the "develop" branch has been split into multiple projects. There is now an assembly for each major piece of Snowball, such as Graphics, Input, Sound. Although this means having to reference more assemblies, the amount of code your project depends on is now smaller. This also makes code maintenance a bit easier as it's more clear now what parts of the library depend on other parts of the library.

The parts of the library which really make up a Game Framework has also been split out into their own library. This allows for using Snowball as a just a simple set of libraries or a full blown game framework, depending on what your situation calls for.

Using Themes in Visual Studio Express for Windows Desktop

September 15, 2012vsvs2012

I just want to post some information that took me while to find. Check out the original article here with pictures and more information.

@@ -19,6 +44,4 @@

The function of the Renderer class was essentially been reduced to pushing data to the GPU and therefore I decided to rename the class to GraphicsBatch. The Begin() overload which would allow you to specify RendererSettings has been removed and been replaced with an overload which allows you to specify an Effect file to use. Also, the DrawLine() method has been removed, although vertical and horizontal lines can still be drawn using the DrawFilledRectangle() method. Better line drawing should be possible through shaders and I hope to eventually make a sample which provides an example.

I've added a sample (pictured above) which demonstrates using a custom shader. By default, GraphicsBatch uses a BasicEffect class which is basically the old way of rendering implemented in a shader.

In order for shaders to work properly when using GraphicsBatch, the GraphicsBatch class must pass a few parameters to the shader. At the moment, this only includes a transform matrix but may include more parameters in the future. The GraphicsBatchEffectWrapper can be used to wrap custom effects which you write in order to work with GraphicsBatch correctly. GraphicsBatchEffectWrapper will pass the parameters to your shader by following a standard naming convention. For example, the transform matrix is passed to your shader through a parameter named "TransformMatrix". You can also write you own class which implements IGraphicsBatchEffect. See the sample for an example of using the wrapper class.

-

Snowball - Shaders in progress

June 22, 2012.netopen-source

It's been a long couple of months. I'm in the middle of switching jobs, been on vacation a bit, and have been playing around with OpenGL a bit to get a feel for how that API works compared to Direct3D. As of yesterday I started working on implementing shaders in Snowball.

-

In order to implement shaders or Effect(s), there may have to be a few changes to the API / interface of the Renderer class. Nothing significant I don't think but mainly changes to the Begin() method overloads. Today I pushed the branch which contains my initial implementation.

\ No newline at end of file diff --git a/blog/page13.html b/blog/page13.html index 8fa0afb3..eb76523c 100644 --- a/blog/page13.html +++ b/blog/page13.html @@ -1,4 +1,6 @@ -The Blog of Zachary Snow

Snowball now using SharpDX

For a little while, I was thinking about giving up on Snowball. When you're one guy working on a project that gets to a certain size, it can start to feel a little daunting. You find a bug, and you feel like you need to fix it asap. I don't know if anyone reading this has actually tried Snowball, but if you have, please comment to let me know. It would encourage me.

+The Blog of Zachary Snow

Snowball - Shaders in progress

June 22, 2012.netopen-source

It's been a long couple of months. I'm in the middle of switching jobs, been on vacation a bit, and have been playing around with OpenGL a bit to get a feel for how that API works compared to Direct3D. As of yesterday I started working on implementing shaders in Snowball.

+

In order to implement shaders or Effect(s), there may have to be a few changes to the API / interface of the Renderer class. Nothing significant I don't think but mainly changes to the Begin() method overloads. Today I pushed the branch which contains my initial implementation.

+

Snowball now using SharpDX

For a little while, I was thinking about giving up on Snowball. When you're one guy working on a project that gets to a certain size, it can start to feel a little daunting. You find a bug, and you feel like you need to fix it asap. I don't know if anyone reading this has actually tried Snowball, but if you have, please comment to let me know. It would encourage me.

I decided to switch Snowball over to SharpDX. It's not that I was unhappy with SlimDX, it just seems like there is a lot more innovation happening on the SharpDX side. I also like the fact that I can include the DLLs in the repository so end users don't have to download another dependency in order to compile it. The Win8 stuff is also quite interesting, although the SlimDX guys say they are working on that.

I plan to set a road map soon for what I want to include the first release of Snowball. Music and Pixel Shaders are high the list. I've experimented with implementing a UI library but I think I want to push that back for a later release.

Getting Started with Snowball

My game framework Snowball is far enough along that small games can be developed with it by now. The basic overall design is now laid out and not too much is likely to change as I'm now developing my own small games with it.

@@ -17,7 +19,4 @@

I still have a ways to go before I will consider it a version 1.0 release. As of this writing, I'm transitioning to more of a ContentLoader class style for loading your game's content. Any resource type from within the framework can be loaded by hand if you want, the ContentLoader class will just make it easier. After that I have a few other features like GamePad and Music which I would like to implement before saying I have a Beta type release.

The future after that is up in the air. I would love to try and have different implementations of the API for Xna and/or OpenTK.

I recommend for anyone who is interested as to why an API designer choose to implement the API in the way they did to try it for themselves. I have learned many things from this project including why certain design decisions were made by the Xna Framework team.

-

WMI - Converting datetime values to DateTime objects

July 12, 2011.netwmi

Just a quick post to hopefully save anyone who finds this some time. If you need to convert a datetime value from a WMI query to a native DateTime object in C#, you can use the method ToDateTime() on the ManagementDateTimeConverter class.

-
ManagementDateTimeConverter.ToDateTime(dmtfDate);
-
\ No newline at end of file diff --git a/blog/page14.html b/blog/page14.html index 5d8597f9..6b9aa180 100644 --- a/blog/page14.html +++ b/blog/page14.html @@ -1,4 +1,7 @@ -The Blog of Zachary Snow

Snowball: A Slightly Different Direction

July 2, 2011.netcodeplex

At first, I had imagined Snowball, now located on Codeplex, to be a framework which would define how your game objects look. I.E. I had a class called GameEntity which I imagined would handle a lot of boiler plate code for you such as setting up Initialize(), Update(), Draw(), etc.

+The Blog of Zachary Snow

WMI - Converting datetime values to DateTime objects

July 12, 2011.netwmi

Just a quick post to hopefully save anyone who finds this some time. If you need to convert a datetime value from a WMI query to a native DateTime object in C#, you can use the method ToDateTime() on the ManagementDateTimeConverter class.

+
ManagementDateTimeConverter.ToDateTime(dmtfDate);
+
+

Snowball: A Slightly Different Direction

July 2, 2011.netcodeplex

At first, I had imagined Snowball, now located on Codeplex, to be a framework which would define how your game objects look. I.E. I had a class called GameEntity which I imagined would handle a lot of boiler plate code for you such as setting up Initialize(), Update(), Draw(), etc.

I've decided to move away from that and let Snowball purely focus on the subsystems of a game, such as Graphics, Sound, Input, etc. Extending from the Game class completely sets up these aspects of your game for you. I think I will include helper components, such as a collision detection system, but I will not force you to use them.

XAudio2: Stop Currently Playing Sound

July 2, 2011.netslimdxxaudio2

Using SlimDX, if you want to stop a sound which is currently playing via XAudio2, use the following methods on the SourceVoice object:

sourceVoice.Stop();
@@ -7,5 +10,4 @@
 

Switching from Git to Mercurial

June 3, 2011gitmercurial

I've decided to make the switch from using git to Mercurial. Git's syntax to me is much more complicated than it needs to be and Mercurial seems to be more my style. I find it's much easier to find out how to do things with Mercurial and to be honest, I use about 10% of the functionality in either git or Mercurial.

This also means I'll be transitioning Snowball to Codeplex I think. I'll be moving it away from GitHub for sure just not 100% sure where.

Marker Interfaces

May 24, 2011design-patterns

In Snowball I was debating adding an empty interface to identify certain classes in my framework as components. I wasn't sure if this was code smell or not so I did some searching on Stackoverflow and found out this concept is actually called "Marker Interfaces". Learn something new every day.

-

ComponentGlue on GitHub

I moved the ComponentGlue repository to GitHub. I updated the example slightly and cleaned up some of the source code a little. Need to build a full blown app with it eventually.

\ No newline at end of file diff --git a/blog/page15.html b/blog/page15.html index 8d4242e0..789c00b1 100644 --- a/blog/page15.html +++ b/blog/page15.html @@ -1,4 +1,5 @@ -The Blog of Zachary Snow

Snowball and GitHub

April 12, 2011.netgithubsnowball

I started writing a 2D Game Engine on GitHub. I call it Snowball because I'm original like that.

+The Blog of Zachary Snow

ComponentGlue on GitHub

I moved the ComponentGlue repository to GitHub. I updated the example slightly and cleaned up some of the source code a little. Need to build a full blown app with it eventually.

+

Snowball and GitHub

April 12, 2011.netgithubsnowball

I started writing a 2D Game Engine on GitHub. I call it Snowball because I'm original like that.

Using git-gui with Cygwin on Windows 7

April 7, 2011cygwingitwindows-7

I've started using git via cygwin and was running into trouble trying to pin it to my taskbar in Windows 7.

First I created a .bat file in the c:\cygwin folder which launches the app standalone:

@@echo off
@@ -91,57 +92,4 @@
     }
 }
 
-

OpenTK - Simple Movable Sprite

March 29, 2011.netopengl

I wrote my second OpenTK app. This time I'm drawing a sprite which you can move around the screen using the keyboard. I've included the source code after the jump or you can download it.

Read More

Getting started with OpenTK

March 29, 2011.netopengl

I started experimenting with OpenTK and I had to look in a few places to put this code together, so I'm posting it here for anyone who might be looking for an easy getting started lesson.

-

I've set up a window similar to what I've been used to in Xna (CornflowerBlue 4 life). I've also set up a 2D projection matrix and drawn a triangle in a 2D fashion. You'll need to add a reference to the OpenTK assembly for your project in Visual Studio.

-
using System;
-using System.Drawing;
-using OpenTK;
-using OpenTK.Graphics;
-using OpenTK.Graphics.OpenGL;
-
-namespace OpenTKApp1
-{
-    public class AppWindow : GameWindow
-    {
-        public AppWindow()
-        {
-            this.Title = "OpenTK App 1";
-            this.WindowBorder = WindowBorder.Fixed;
-            this.ClientSize = new Size(800, 600);			
-        }
-
-        protected override void OnRenderFrame(FrameEventArgs e)
-        {
-            base.OnRenderFrame(e);
-
-            GL.ClearColor(Color.CornflowerBlue);
-            GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit);
-
-            GL.MatrixMode(MatrixMode.Projection);
-            GL.LoadIdentity();
-            GL.Ortho(0, 800, 600, 0, -1, 1);
-            GL.Viewport(0, 0, 800, 600);
-            
-            GL.Begin(BeginMode.Triangles);
-            GL.Color3(Color.Red);
-            GL.Vertex3(400, 150, 0);
-            GL.Color3(Color.Green);
-            GL.Vertex3(600, 450, 0);
-            GL.Color3(Color.Blue);
-            GL.Vertex3(200, 450, 0);
-            GL.End();
-
-            GL.Flush();
-            this.SwapBuffers();
-        }
-
-        [STAThread]
-        public static void Main()
-        {
-            AppWindow window = new AppWindow();
-            window.Run();
-        }
-    }
-}
-
-
\ No newline at end of file +

OpenTK - Simple Movable Sprite

March 29, 2011.netopengl

I wrote my second OpenTK app. This time I'm drawing a sprite which you can move around the screen using the keyboard. I've included the source code after the jump or you can download it.

Read More
\ No newline at end of file diff --git a/blog/page16.html b/blog/page16.html index b5284bd0..b8b0eb62 100644 --- a/blog/page16.html +++ b/blog/page16.html @@ -1,4 +1,57 @@ -The Blog of Zachary Snow

Keeping SplitContainer SplitterDistance consistent

February 9, 2011.netwinforms

If you're having trouble keeping the SplitterDistance property of a SplitContainer consistent across app sessions, you can set the FixedPanel property of the splitter to FixedPanel.Panel1.

+The Blog of Zachary Snow

Getting started with OpenTK

March 29, 2011.netopengl

I started experimenting with OpenTK and I had to look in a few places to put this code together, so I'm posting it here for anyone who might be looking for an easy getting started lesson.

+

I've set up a window similar to what I've been used to in Xna (CornflowerBlue 4 life). I've also set up a 2D projection matrix and drawn a triangle in a 2D fashion. You'll need to add a reference to the OpenTK assembly for your project in Visual Studio.

+
using System;
+using System.Drawing;
+using OpenTK;
+using OpenTK.Graphics;
+using OpenTK.Graphics.OpenGL;
+
+namespace OpenTKApp1
+{
+    public class AppWindow : GameWindow
+    {
+        public AppWindow()
+        {
+            this.Title = "OpenTK App 1";
+            this.WindowBorder = WindowBorder.Fixed;
+            this.ClientSize = new Size(800, 600);			
+        }
+
+        protected override void OnRenderFrame(FrameEventArgs e)
+        {
+            base.OnRenderFrame(e);
+
+            GL.ClearColor(Color.CornflowerBlue);
+            GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit);
+
+            GL.MatrixMode(MatrixMode.Projection);
+            GL.LoadIdentity();
+            GL.Ortho(0, 800, 600, 0, -1, 1);
+            GL.Viewport(0, 0, 800, 600);
+            
+            GL.Begin(BeginMode.Triangles);
+            GL.Color3(Color.Red);
+            GL.Vertex3(400, 150, 0);
+            GL.Color3(Color.Green);
+            GL.Vertex3(600, 450, 0);
+            GL.Color3(Color.Blue);
+            GL.Vertex3(200, 450, 0);
+            GL.End();
+
+            GL.Flush();
+            this.SwapBuffers();
+        }
+
+        [STAThread]
+        public static void Main()
+        {
+            AppWindow window = new AppWindow();
+            window.Run();
+        }
+    }
+}
+
+

Keeping SplitContainer SplitterDistance consistent

February 9, 2011.netwinforms

If you're having trouble keeping the SplitterDistance property of a SplitContainer consistent across app sessions, you can set the FixedPanel property of the splitter to FixedPanel.Panel1.

splitter.FixedPanel = FixedPanel.Panel1;
 

I guess this could also work with FixedPanel.Panel2 as well but I haven't given it a try. Credit this stackoverflow post.

@@ -61,11 +114,4 @@
mkdir $(TargetDir)dir
 move $(TargetDir)myDLL.dll $(TargetDir)dir\myDLL.dll
 
-

Xna: Load Texture2D from Embedded Resource

If you're writing an app which uses Xna, you may need to load a texture from an embedded resource. Here's how:

-

First embed the resource in your app. Do so by choosing Embedded Resource as the Build Action in the properties of the resource.

-

After that you can load the Texture2D using a stream handle to the embedded file.

-
Stream stream = Assembly.GetCallingAssembly().GetManifestResourceStream("AppNamespace.Folder.font.bmp");
-return Texture2D.FromFile(graphicsDevice, stream);
-
-

GetCallingAssembly() can be exchanged with GetExecutingAssembly() if needed. The name of the resource must be fully qualified with the app's namespace and folders. I usually keep my resources in a folder Resources so I would have: AppNamespace.Resources.font.bmp.

\ No newline at end of file diff --git a/blog/page17.html b/blog/page17.html index 9ff3e9f4..3c7af5bd 100644 --- a/blog/page17.html +++ b/blog/page17.html @@ -1,4 +1,11 @@ -The Blog of Zachary Snow

Implementing basic Dependency Injection using a Service Container

By extending your Service Container class, a very basic version of dependency injection can be implemented. We'll implement two forms of dependency injection: constructor and property injection.

Read More

500 Downloads of the Same Game

My little Xna game that I wrote nearly 2 years ago reached the 500 downloads mark (binaries and source) the other day. With that said, I'd like to say that I'm working on version 2.0.

+The Blog of Zachary Snow

Xna: Load Texture2D from Embedded Resource

If you're writing an app which uses Xna, you may need to load a texture from an embedded resource. Here's how:

+

First embed the resource in your app. Do so by choosing Embedded Resource as the Build Action in the properties of the resource.

+

After that you can load the Texture2D using a stream handle to the embedded file.

+
Stream stream = Assembly.GetCallingAssembly().GetManifestResourceStream("AppNamespace.Folder.font.bmp");
+return Texture2D.FromFile(graphicsDevice, stream);
+
+

GetCallingAssembly() can be exchanged with GetExecutingAssembly() if needed. The name of the resource must be fully qualified with the app's namespace and folders. I usually keep my resources in a folder Resources so I would have: AppNamespace.Resources.font.bmp.

+

Implementing basic Dependency Injection using a Service Container

By extending your Service Container class, a very basic version of dependency injection can be implemented. We'll implement two forms of dependency injection: constructor and property injection.

Read More

500 Downloads of the Same Game

My little Xna game that I wrote nearly 2 years ago reached the 500 downloads mark (binaries and source) the other day. With that said, I'd like to say that I'm working on version 2.0.

In version 2.0 I'm going to make the code more event driven. The old code uses the Xna Game class and in the new version I'll be making it WinForms based. Almost a complete rewrite.

My work so far is available through SVN on the project's Codeplex page.

Progress Bar in Windows 7 Taskbars

June 1, 2010.netc#windows-7

I decided to add progress bar to the Windows 7 Taskbar in my Timer app.

@@ -28,25 +35,4 @@

If you want you view to be as dumb as possible, your view can communicate with the "Application" class only through events. In my case though, I choose to go with a smart view and have the view call back to methods in the "Application" class. The "Application" class tells the view when models are loaded and unloaded. The view subscribes to events on the models and reacts to the events.

All of my forms and controls communicate with each other through the "WinFormsView" class. One control might change the value of a property in the "WinFormsView" class and another control might subscribe to a change event and update as necessary. This keeps the controls and forms slightly less coupled.

It's not a perfect implementation of MVC but it keeps my model logic decoupled enough from my view logic that I can later implement a WPF version of the view I think.

-

Drawing Rectangles with SpriteBatch

Just a quick code snippet which adds an extension method for drawing Rectangles to SpriteBatch:

-
public static class SpriteBatchHelper
-{
-    static Texture2D pixel;
-
-    private static void LoadPixel(GraphicsDevice graphicsDevice)
-    {
-        if(pixel == null)
-        {
-            pixel = new Texture2D(graphicsDevice, 1, 1);
-            pixel.SetData&lt;Color&gt;(new Color[] { Color.White });
-        }
-    }
-
-    public static void DrawRectangle(this SpriteBatch spriteBatch, Rectangle rectangle, Color color)
-    {
-        LoadPixel(spriteBatch.GraphicsDevice);
-        spriteBatch.Draw(pixel, rectangle, color);
-    }
-}
-
\ No newline at end of file diff --git a/blog/page18.html b/blog/page18.html index 862d0ab4..39ec1c03 100644 --- a/blog/page18.html +++ b/blog/page18.html @@ -1,4 +1,25 @@ -The Blog of Zachary Snow

C# Extension Methods in your own Library

Normally I use extension methods in C# to extend a library that I did not write and therefore I have no control over. There are situations where it makes sense to use extension methods for a library that you yourself are writing.

+The Blog of Zachary Snow

Drawing Rectangles with SpriteBatch

Just a quick code snippet which adds an extension method for drawing Rectangles to SpriteBatch:

+
public static class SpriteBatchHelper
+{
+    static Texture2D pixel;
+
+    private static void LoadPixel(GraphicsDevice graphicsDevice)
+    {
+        if(pixel == null)
+        {
+            pixel = new Texture2D(graphicsDevice, 1, 1);
+            pixel.SetData&lt;Color&gt;(new Color[] { Color.White });
+        }
+    }
+
+    public static void DrawRectangle(this SpriteBatch spriteBatch, Rectangle rectangle, Color color)
+    {
+        LoadPixel(spriteBatch.GraphicsDevice);
+        spriteBatch.Draw(pixel, rectangle, color);
+    }
+}
+
+

C# Extension Methods in your own Library

Normally I use extension methods in C# to extend a library that I did not write and therefore I have no control over. There are situations where it makes sense to use extension methods for a library that you yourself are writing.

For example, when you have interfaces in your library. You want to keep the number of methods in that interface as low as possible so that classes implementing the interface don't have to do a lot of heavy lifting. This means cutting out methods in an interface that are for the most part just syntactic sugar for another method in the interface.


 public interface IServiceContainer
@@ -76,7 +97,4 @@
 

I used this to calculate an angle from the Vector2 of the Left Stick.

The original credit for this source code comes from here.

-

The Game Show Host Problem, aka The Monty Hall Problem

February 12, 2009random

NOTE: This is a repost from my old blog.

-

So, me and my girlfriend went to see 21 last night and in the movie they make mention of The Game Show Host problem, aka The Monty Hall Problem.

-

The jist of the problem is this: You are on a game show. The host presents you with 3 doors, 1 of which has a car behind it, the other 2 have goats. The game show host tells you to pick a door. You do so, at which point the game show host opens up a door to show you a goat behind the door and then asks you if you would like to switch your choice to the other closed door. The question is then, should you switch your choice?

-

The correct answer is yes. More on why after the jump.

Read More
\ No newline at end of file +
\ No newline at end of file diff --git a/blog/page19.html b/blog/page19.html index 69310edc..4e8e8c77 100644 --- a/blog/page19.html +++ b/blog/page19.html @@ -1,4 +1,7 @@ -The Blog of Zachary Snow

Drawing 2D Lines as Rotated Quads

February 7, 2009.net

I haven't had much time lately with work but one question I've seen asked many many times is how to draw lines of different widths. So, to cut to the chase I'll share the code I've used to do it.

+The Blog of Zachary Snow

The Game Show Host Problem, aka The Monty Hall Problem

February 12, 2009random

NOTE: This is a repost from my old blog.

+

So, me and my girlfriend went to see 21 last night and in the movie they make mention of The Game Show Host problem, aka The Monty Hall Problem.

+

The jist of the problem is this: You are on a game show. The host presents you with 3 doors, 1 of which has a car behind it, the other 2 have goats. The game show host tells you to pick a door. You do so, at which point the game show host opens up a door to show you a goat behind the door and then asks you if you would like to switch your choice to the other closed door. The question is then, should you switch your choice?

+

The correct answer is yes. More on why after the jump.

Read More

Drawing 2D Lines as Rotated Quads

February 7, 2009.net

I haven't had much time lately with work but one question I've seen asked many many times is how to draw lines of different widths. So, to cut to the chase I'll share the code I've used to do it.

public void DrawLine(Vector3 p1, Color c1, Vector3 p2, Color c2, int width)
 {
     float distance = Vector3.Distance(p1, p2);
diff --git a/blog/page2.html b/blog/page2.html
index d481c81b..eaddf57f 100644
--- a/blog/page2.html
+++ b/blog/page2.html
@@ -1,4 +1,10 @@
-The Blog of Zachary Snow

Iterating thru an Object in JavaScript

For the longest time if I wanted to iterate thru an object +The Blog of Zachary Snow

deno: Get the path of the current script in

In deno obtaining the path of the current script is done via the +import.meta.url api:

+
const scriptPath = new URL(import.meta.url).pathname;
+
+

On Windows though this will return a path with unix style path seperators and a leading /:

+
/D:/Code/deno-path-of-script/main.ts
+
Read More

Iterating thru an Object in JavaScript

For the longest time if I wanted to iterate thru an object in JavaScript I would write code that looked something like this:

const obj = { a: "foo", b: "bar" };
@@ -28,11 +34,4 @@
 usage of WebAssembly: https://conciso.de/practical-webassembly/.

Use bash.exe to run bash scripts in Windows

September 1, 2021windowswslbash

If you have the Windows Subsystem for Linux (WSL) installed then you can use wsl.exe to start any linux distribution you have installed from the command prompt. What I recently learned about -though is that there is a bash.exe as well which can be used to execute a bash script directly.

Read More

Powered by TypeScript

June 4, 2021typescript

Over the past couple of years my career has moved more and more torwards me becoming -a frontend developer. Since 2018 I've basically been a TypeScript programmer professionally -and the language has really grown on me. Over the last couple of days I've had some -down time so I decided now was the time to reprogram the blog in TypeScript.

-

The site is still a static site but the compiler is a now a custom TypeScript program. The -size of the program is now considerably smaller but that isn't necessarily becuase C# was -bad but rather that this is the 2nd implementation and I know what I did and did not need.

-
\ No newline at end of file +though is that there is a bash.exe as well which can be used to execute a bash script directly.

Read More
\ No newline at end of file diff --git a/blog/page3.html b/blog/page3.html index 5571484e..5d22bd74 100644 --- a/blog/page3.html +++ b/blog/page3.html @@ -1,8 +1,14 @@ -The Blog of Zachary Snow

Windows Terminal fork command

I wanted a way to fork the current tab in Windows Terminal and +The Blog of Zachary Snow

Powered by TypeScript

June 4, 2021typescript

Over the past couple of years my career has moved more and more torwards me becoming +a frontend developer. Since 2018 I've basically been a TypeScript programmer professionally +and the language has really grown on me. Over the last couple of days I've had some +down time so I decided now was the time to reprogram the blog in TypeScript.

+

The site is still a static site but the compiler is a now a custom TypeScript program. The +size of the program is now considerably smaller but that isn't necessarily becuase C# was +bad but rather that this is the 2nd implementation and I know what I did and did not need.

+

Windows Terminal fork command

I wanted a way to fork the current tab in Windows Terminal and so I've come up with this PowerShell function:

function fork { wt -w 0 -d "$(Get-Location)" }
 

Convert TypeScript AST to JSON

January 13, 2021nodetypescript

I needed to convert a TypeScript AST (Abstract Syntax Tree) to json so that I can consume it in a C# application so I wrote a tiny node script to convert the AST to json.

Read More

Starting Redis and the Redis CLI with Docker

January 8, 2021dockerredis

If you'd like to get a Redis instance up and running to play with it's fairly easy via Docker.

Read More

NativeLibraryLoader for Assembly with ModuleInitializer

December 18, 2020c#c#9

In C# 9 the ModuleInitializer -atrribute was introduced which makes it easy to implement loading of native assemblies in your library.

Read More

GitHub Actions

December 6, 2020github

My blog is now being generated via GitHub actions in ubuntu-latest. This allows me to rebuild my -blog everytime there is a pushed commit.

Read More
\ No newline at end of file +atrribute was introduced which makes it easy to implement loading of native assemblies in your library.

Read More
\ No newline at end of file diff --git a/blog/page4.html b/blog/page4.html index 95ec80de..fa398677 100644 --- a/blog/page4.html +++ b/blog/page4.html @@ -1,9 +1,8 @@ -The Blog of Zachary Snow

Use nginx in docker to serve static files

December 1, 2020dockernginx

Not sure how practical this really is but I thought it was neat. Run nginx and tell it to +The Blog of Zachary Snow

GitHub Actions

December 6, 2020github

My blog is now being generated via GitHub actions in ubuntu-latest. This allows me to rebuild my +blog everytime there is a pushed commit.

Read More

Use nginx in docker to serve static files

December 1, 2020dockernginx

Not sure how practical this really is but I thought it was neat. Run nginx and tell it to serve some static content on your system.

Read More

Add the current time to your command prompt

November 26, 2020cmd

I am someone who never made the jump to Powershell and to this day still use my cmd shell with pride. My cmd is very personalized at this point and is available on GitHub though I'm not sure how useful it is for anyone but me. I use git and GitHub to synchronize my cmd between my different machines.

Read More

Execute different commands in MSBuild depending on platform

November 20, 2020msbuild

Another quick snippet that shows how to change what command will be executed in MSBuild -based on the OS the script is running on.

Read More

Filter ItemGroup by extension in MSBuild

November 4, 2020msbuild

Just a quick snippet that shows how to filter an exiting ItemGroup by an extension.

Read More

Use Newtonsoft.Json in .NET Core 3 Web Api

October 22, 2020.net.netcoreasp.net

This post is mostly just distilling information I got from -.NET Core Tutorials to -revert back to Newtonsoft.Json in asp.net core WebApi.

Read More
\ No newline at end of file +based on the OS the script is running on.

Read More

Filter ItemGroup by extension in MSBuild

November 4, 2020msbuild

Just a quick snippet that shows how to filter an exiting ItemGroup by an extension.

Read More
\ No newline at end of file diff --git a/blog/page5.html b/blog/page5.html index bbcea5ea..334b9803 100644 --- a/blog/page5.html +++ b/blog/page5.html @@ -1,4 +1,6 @@ -The Blog of Zachary Snow

Node script for syntax highlighting

I decided to switch my blog to use highlightjs instead of the mixture of my own library and +The Blog of Zachary Snow

Use Newtonsoft.Json in .NET Core 3 Web Api

October 22, 2020.net.netcoreasp.net

This post is mostly just distilling information I got from +.NET Core Tutorials to +revert back to Newtonsoft.Json in asp.net core WebApi.

Read More

Node script for syntax highlighting

I decided to switch my blog to use highlightjs instead of the mixture of my own library and ColorCode. I still wanted everything to rendered statically though so I decided to use highlight.js as it already offered instructions on how to use the library from node.

Read More

Angular in Visual Studio

October 8, 2020angularvs

Now that the Angular Language Service @@ -11,8 +13,4 @@ I recommend you give it a watch. The algorithm he talks about in the video is the Lehmer random number generator.

I'm implementing a simple match the blocks game in TypeScript and I wanted to implement the algorithm -mentioned there in TypeScript.

Read More

Creating a tsexec command

August 21, 2020typscriptbatch

I want to use TypeScript as a scripting language for my machine and -so I want to be able just to execute TypeScript files directly. There -are npm packages like ts-node -that do this already but I wanted to have a crack at implementing it -myself. So this is the batch file I've come up with so far.

Read More
\ No newline at end of file +mentioned there in TypeScript.

Read More
\ No newline at end of file diff --git a/blog/page6.html b/blog/page6.html index 55cc8dae..1f1113f1 100644 --- a/blog/page6.html +++ b/blog/page6.html @@ -1,4 +1,8 @@ -The Blog of Zachary Snow

Checking for uncommited git changes in a batch program

July 22, 2020batchgit

Sometimes it's helpful to exit out of a batch script if there are pending +The Blog of Zachary Snow

Creating a tsexec command

August 21, 2020typscriptbatch

I want to use TypeScript as a scripting language for my machine and +so I want to be able just to execute TypeScript files directly. There +are npm packages like ts-node +that do this already but I wanted to have a crack at implementing it +myself. So this is the batch file I've come up with so far.

Read More

Checking for uncommited git changes in a batch program

July 22, 2020batchgit

Sometimes it's helpful to exit out of a batch script if there are pending changes to a repo. This is done in batch script in a non intuitive way.

@ECHO OFF
 PUSHD %~dp0
@@ -30,21 +34,4 @@
 {
     Console.WriteLine(MyVariable1);
 }
-
Read More

Dynamically loaded DLL thows AccessViolationException on first function call

October 22, 2019.netc#

In my library GLESDotNet I load -the libegl.dll and libglesv2.dll DLLs dynamically via the Win32 functions -LoadLibrary -and GetProcAddress. -I already had everything working via DLLImport but I wanted to be able to -load the DLLs from different subdirectories depending on the architecture.

-

For the first test I only loaded the libegl.dll DLL before moving on to -the libglesv2.dll. I made the classic programmer mistake of changing too much -at one time. The first call to any function in libegl.dll resulted in an -AccessViolationException. I couldn't figure out what was going wrong so I -decided to revert my changes and try again.

-

I noticed that when the DLLs were in the same directory the -AccessViolationException went away. Changing the working directory -to the directory of the DLLs also solved the problem once the DLLs -were placed in subdirectories again. This led me to believe that -loading libegl.dll must be implicitly loading libglesv2.dll. Loading -libglesv2.dll via LoadLibrary along with libegl.dll solved the problem.

-
\ No newline at end of file +
Read More
\ No newline at end of file diff --git a/blog/page7.html b/blog/page7.html index 3b9fae01..c1e43f76 100644 --- a/blog/page7.html +++ b/blog/page7.html @@ -1,4 +1,21 @@ -The Blog of Zachary Snow

Abusing IDisposable

August 27, 2019.netc#

In C# the interface IDisposable is usually used to indicate that an object +The Blog of Zachary Snow

Dynamically loaded DLL thows AccessViolationException on first function call

October 22, 2019.netc#

In my library GLESDotNet I load +the libegl.dll and libglesv2.dll DLLs dynamically via the Win32 functions +LoadLibrary +and GetProcAddress. +I already had everything working via DLLImport but I wanted to be able to +load the DLLs from different subdirectories depending on the architecture.

+

For the first test I only loaded the libegl.dll DLL before moving on to +the libglesv2.dll. I made the classic programmer mistake of changing too much +at one time. The first call to any function in libegl.dll resulted in an +AccessViolationException. I couldn't figure out what was going wrong so I +decided to revert my changes and try again.

+

I noticed that when the DLLs were in the same directory the +AccessViolationException went away. Changing the working directory +to the directory of the DLLs also solved the problem once the DLLs +were placed in subdirectories again. This led me to believe that +loading libegl.dll must be implicitly loading libglesv2.dll. Loading +libglesv2.dll via LoadLibrary along with libegl.dll solved the problem.

+

Abusing IDisposable

August 27, 2019.netc#

In C# the interface IDisposable is usually used to indicate that an object needs to dispose of unmanaged resources. C# provides the using syntax to ensure that the Dispose method is called once the instance of the object is no longer needed.

@@ -19,25 +36,4 @@

This property can set to any of the values listed here. As of this writing VS Code doesn't seem to like it when you use 7.3 instead of latest. VS Code will show errors in your code although the code will compile without any problems.

-

A neat way to curry in C#

May 25, 2018c#fp

I was reading an older blogpost from Mike Hadlow about -Partial Application in C# in which he discusses how -Partial Application can be implemented in C# via -Currying. Although I appreciate his example of implementing currying via extsion -methods, the syntax is hideous. There is a suggestion in the comments though that I found to be a much better solution.

-
// Define a local function Add.
-int Add(int a, int b) => a + b;
-
-// Here we do the currying.
-Func<int, int> add3 = (b) => Add(3, b);
-
-// This will print 5.
-Console.WriteLine(add3(2));
-
-// Curry one more time so that we have
-// a function that simply produces 5.
-Func<int> five = () => add3(2);
-
-// This will also print 5.
-Console.WriteLine(five());
-
\ No newline at end of file diff --git a/blog/page8.html b/blog/page8.html index bf1559ab..6bd82284 100644 --- a/blog/page8.html +++ b/blog/page8.html @@ -1,4 +1,25 @@ -The Blog of Zachary Snow

Lambda Collection Wrappers

April 26, 2018c#fp

I've been reading a lot as of late about functional programming and I try to +The Blog of Zachary Snow

A neat way to curry in C#

May 25, 2018c#fp

I was reading an older blogpost from Mike Hadlow about +Partial Application in C# in which he discusses how +Partial Application can be implemented in C# via +Currying. Although I appreciate his example of implementing currying via extsion +methods, the syntax is hideous. There is a suggestion in the comments though that I found to be a much better solution.

+
// Define a local function Add.
+int Add(int a, int b) => a + b;
+
+// Here we do the currying.
+Func<int, int> add3 = (b) => Add(3, b);
+
+// This will print 5.
+Console.WriteLine(add3(2));
+
+// Curry one more time so that we have
+// a function that simply produces 5.
+Func<int> five = () => add3(2);
+
+// This will also print 5.
+Console.WriteLine(five());
+
+

Lambda Collection Wrappers

April 26, 2018c#fp

I've been reading a lot as of late about functional programming and I try to incorperate as much as possible into my everyday programming. One trick that I've definitely started using is wrapping collections in lambda functions.

Read More

string.Join Extension Method

April 19, 2018.netc#linq

Normally if want to do a string.Join on the result of a Linq query you end up with somthing looking like this:

@@ -38,5 +59,4 @@ </Project>

This is documented here.

-

Git Quick Push

March 29, 2018gitbatch

Here's a quick one liner to quickly stage all your changes in the current git repo, commit them and then push -the commit to origin master branch.

Read More
\ No newline at end of file +
\ No newline at end of file diff --git a/blog/page9.html b/blog/page9.html index 170f9684..26c1e25a 100644 --- a/blog/page9.html +++ b/blog/page9.html @@ -1,4 +1,5 @@ -The Blog of Zachary Snow

Poor Man's Template Engine in C# Part 3

Include

In our last episode we implemeted the first +The Blog of Zachary Snow

Git Quick Push

March 29, 2018gitbatch

Here's a quick one liner to quickly stage all your changes in the current git repo, commit them and then push +the commit to origin master branch.

Read More

Poor Man's Template Engine in C# Part 3

Include

In our last episode we implemeted the first two helper funcitons HtmlEncode and If. Today we want to implement Include.

Read More

Poor Man's Template Engine in C# Part 2

HtmlEncode and If

In our last episode we laid the groundwork for our simple template engine. In this episode we'll introduce our first 2 helper functions.

Read More

Poor Man's Template Engine in C# Part 1

Groundwork

If you're looking for a poor man's solution to a templating engine for .net and don't really need the overhead a complete template engine brings with it, I've come up with the following solution.

Read More

Snowball V2.0

February 23, 2018.netsnowballc#

I haven't written anything new here in a very long time and a lot has happened since then. I started a new job at @@ -8,6 +9,4 @@ for .net core and will be developed with cross platform capability in mind. The api will look similar but will have some changes.

The old repo is still available on my github at https://github.com/smack0007/Snowball_v1.

-

Using batch files as the task runner in Visual Studio Code

July 9, 2015vsvscodebatch

Visual Studio Code allows you specify tasks which can be in a task runner. Most examples -I've seen show how to integrate with Javascript task runners such as Gulp. There is no reason why you can't simpley use -batch files though.

Read More
\ No newline at end of file +
\ No newline at end of file diff --git a/feed.rss b/feed.rss index acc07e90..a6834b98 100644 --- a/feed.rss +++ b/feed.rss @@ -5,9 +5,19 @@ The Blog of Zachary Snow The Blog of Zachary Snow https://smack0007.github.io/ - Sun, 28 Apr 2024 00:00:00 GMT - Sun, 28 Apr 2024 00:00:00 GMT + Tue, 06 Aug 2024 00:00:00 GMT + Tue, 06 Aug 2024 00:00:00 GMT 1800 + + <![CDATA[Goodbye Windows]]> + I finally did it. All the computers in my house are now running debian except for the office PC. I've +used Windows for at least 30 years but over the last few years it's become more and more user hostile. After the latest +Windows Recall push and the security implications surrounding it, I decided I could no longer +keep running Windows on all the machines in my house.

]]>
+ https://smack0007.github.io/blog/2024/goodbye-windows.html + https://smack0007.github.io/blog/2024/goodbye-windows.html + Tue, 06 Aug 2024 00:00:00 GMT +
<![CDATA[Start Syncthing in the Background on Windows]]> Just a quick tip for myself (and anyone who is reading this) for the future. To start syncthing in @@ -246,15 +256,6 @@ based on the OS the script is running on.

]]>
https://smack0007.github.io/blog/2020/filter-itemgroup-by-extension-in-msbuild.html Wed, 04 Nov 2020 00:00:00 GMT
- - <![CDATA[Use Newtonsoft.Json in .NET Core 3 Web Api]]> - This post is mostly just distilling information I got from -.NET Core Tutorials to -revert back to Newtonsoft.Json in asp.net core WebApi.

]]>
- https://smack0007.github.io/blog/2020/use-newtonsoft.json-in-.net-core-3-web-api.html - https://smack0007.github.io/blog/2020/use-newtonsoft.json-in-.net-core-3-web-api.html - Thu, 22 Oct 2020 00:00:00 GMT -
diff --git a/index.html b/index.html index 103d9c18..399b5cde 100644 --- a/index.html +++ b/index.html @@ -1,4 +1,7 @@ -The Blog of Zachary Snow

Start Syncthing in the Background on Windows

April 28, 2024syncthingwindows

Just a quick tip for myself (and anyone who is reading this) for the future. To start syncthing in +The Blog of Zachary Snow

Goodbye Windows

It's you, not me.

August 6, 2024windowslinuxdebian

I finally did it. All the computers in my house are now running debian except for the office PC. I've +used Windows for at least 30 years but over the last few years it's become more and more user hostile. After the latest +Windows Recall push and the security implications surrounding it, I decided I could no longer +keep running Windows on all the machines in my house.

Read More

Start Syncthing in the Background on Windows

April 28, 2024syncthingwindows

Just a quick tip for myself (and anyone who is reading this) for the future. To start syncthing in the background on Windows open up the startup apps folder via the run command (Win+R) with shell:startup amd then create the following shortcut:

powershell.exe -c "Start-Process -FilePath 'syncthing' -ArgumentList '--no-browser' -WindowStyle Hidden"
@@ -47,10 +50,4 @@
 I really need a solution for Numeric enums
 as SDL is full of them.

Read More

Now powered by deno

December 23, 2022deno

I finally sat down and got my blog compiling with deno. Now that there is official npm support I didn't need to completely rewrite the compiler which was what was -stopping me before.

Read More

deno: Get the path of the current script in

In deno obtaining the path of the current script is done via the -import.meta.url api:

-
const scriptPath = new URL(import.meta.url).pathname;
-
-

On Windows though this will return a path with unix style path seperators and a leading /:

-
/D:/Code/deno-path-of-script/main.ts
-
Read More
\ No newline at end of file +stopping me before.

Read More
\ No newline at end of file diff --git a/sitemap.xml b/sitemap.xml index 2742cb71..11b9d7d9 100644 --- a/sitemap.xml +++ b/sitemap.xml @@ -177,6 +177,9 @@ https://smack0007.github.io/blog/2009/the-game-show-host-problem-aka-the-monty-hall-problem.html + + https://smack0007.github.io/blog/2024/goodbye-windows.html + https://smack0007.github.io/blog/2024/start-syncthing-background-windows.html diff --git a/tags/debian/index.html b/tags/debian/index.html new file mode 100644 index 00000000..5c5d2b6a --- /dev/null +++ b/tags/debian/index.html @@ -0,0 +1,4 @@ +debian

Goodbye Windows

It's you, not me.

August 6, 2024windowslinuxdebian

I finally did it. All the computers in my house are now running debian except for the office PC. I've +used Windows for at least 30 years but over the last few years it's become more and more user hostile. After the latest +Windows Recall push and the security implications surrounding it, I decided I could no longer +keep running Windows on all the machines in my house.

Read More
\ No newline at end of file diff --git a/tags/index.html b/tags/index.html index 32b3d563..655a457d 100644 --- a/tags/index.html +++ b/tags/index.html @@ -1 +1 @@ -The Blog of Zachary Snow \ No newline at end of file +The Blog of Zachary Snow \ No newline at end of file diff --git a/tags/linux/index.html b/tags/linux/index.html new file mode 100644 index 00000000..dc74a5ee --- /dev/null +++ b/tags/linux/index.html @@ -0,0 +1,4 @@ +linux

Goodbye Windows

It's you, not me.

August 6, 2024windowslinuxdebian

I finally did it. All the computers in my house are now running debian except for the office PC. I've +used Windows for at least 30 years but over the last few years it's become more and more user hostile. After the latest +Windows Recall push and the security implications surrounding it, I decided I could no longer +keep running Windows on all the machines in my house.

Read More
\ No newline at end of file diff --git a/tags/windows/index.html b/tags/windows/index.html index 0bc753e3..ce081849 100644 --- a/tags/windows/index.html +++ b/tags/windows/index.html @@ -1,4 +1,7 @@ -windows

Start Syncthing in the Background on Windows

April 28, 2024syncthingwindows

Just a quick tip for myself (and anyone who is reading this) for the future. To start syncthing in +windows

Goodbye Windows

It's you, not me.

August 6, 2024windowslinuxdebian

I finally did it. All the computers in my house are now running debian except for the office PC. I've +used Windows for at least 30 years but over the last few years it's become more and more user hostile. After the latest +Windows Recall push and the security implications surrounding it, I decided I could no longer +keep running Windows on all the machines in my house.

Read More

Start Syncthing in the Background on Windows

April 28, 2024syncthingwindows

Just a quick tip for myself (and anyone who is reading this) for the future. To start syncthing in the background on Windows open up the startup apps folder via the run command (Win+R) with shell:startup amd then create the following shortcut:

powershell.exe -c "Start-Process -FilePath 'syncthing' -ArgumentList '--no-browser' -WindowStyle Hidden"