Posts

Fixing Gnome's Gnonsense

Although I spent a long time not liking Gnome, I've come round to it, and think it's the only desktop environment (on any OS) I can confidently recommend (I have not tried them all) (I used to be able to recommend Unity). Specifically, I recommend Gnome with Ubuntu's defaults and some additional extensions to improve the experience. Extensions Hide Top Bar — Makes the top bar only visible in the window spread / app list view. This makes the desktop cleaner and it's nice having the top of a window at the top of a screen. I prefer this to moving the top bar to the bottom because the top bar can only appear on one screen and I want my screens to look the same. No Topleft Hot Corner — It's too easy to trigger this by accident. Better OSD & Transparent OSD — I use these to improve the appearance of the volume indicator. By default it's too big, too central, and too opaque. These extensions change all of that. Volume Mixer —This lets you independ...

How to Host TTT

1. Download add-ons Recommended Client Add-Ons Recommended Maps Recommended Server Add-Ons 2. Allow players to connect to your machine. In your router's settings create a new port forwarding rule. Forward TCP and UDP traffic on port 27015 to your computer. Different routers have different user interfaces, so you may have to dig a little to find the options. The settings will likely be presented to you as a of external ports mapped to a range of internal ports. Unless you have to doing something special, you just want all those values to be 27015. 3. Get players to connect to your machine. In your Steam profile settings, you should allow your friends to see your online activity. (View Profile -> Privacy Settings -> Game Details) Other players should be able to see that you are in game in their friends list. And by right-clicking on you, they should be able to join your game once you have your server running. This doesn't always seem to work, so you can allo...

TypeScript: Turn an Array of Values into a Type Union

I found the answer I was looking for here: https://dev.to/shakyshane/2-ways-to-create-a-union-from-an-array-in-typescript-1kd6 I wasn't sure that it would be possible. In fact, it turns out that the solution is far more impressive than I expected. What follows cuts to the core part of the article that I need solved my particular problem. Problem I want to have an object type with specific keys and I want a static array of those keys, but I don't want to have the same list of keys written out twice in case I mistakenly make them differ in the future type K = "a" | "b" | "c"; type O = Record<K, V>; const keys: K[] = ["a","b","c"]; I want to be sure that 'keys' contains every member of type 'K' exactly once and vice-versa. I want to use 'keys' to build an object of type 'O', so I can't just rely on using 'Object.keys' on an ...

In HTML the default type of button is not button

The default type of <button> is "submit" which is why a <button> in a <form> submits the form when clicked. Simply doing <button type="button"> removes this behaviour without the need for JavaScript. https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button

Hiding non-hidden files in your file manager

Create a file called .hidden and fill it with a newline separated list of files. Works in Nautilus and Dolphin. Perfect for ~/snap.

The TypeScript "extends" Keyword Doesn't Extend Types

I was looking through the built in TypeScript definition file "lib.es5.d.ts" and found the definition "Pick". //From T pick a set of properties K type Pick<T, K extends keyof T> = {     [P in K]: T[P]; }; In more words: Pick<T,K> is a new type of object whose keys are the set K , which has to be a subset of the keys in T . But when I tried to understand what it was from the code itself, I had some trouble, and the source of that trouble is simply the extends  keyword. We usually use ' A extends B ' to mean  A  has all the keys in  B  and maybe some more, which the English also suggests. But in reality  K must be a subset of T 's keys. What is going on? What is a Type? A type is a set of values based on some rule. e.g. Colour = { red orange yellow ... } If A is a subtype of B, values that match A are a subset of values that match B. The definition of the subtype therefore has to be a narrower ve...

Turn a Web Page into a Desktop Application

I can't believe how simple the whole thing turned out to be. It's literally this simple, if you have Chromium/Chrome installed. Linux: Make sure you didn't install Chromium with snap . Go to the URL you want the app to open to Ellipsis Button (...) ->  "More tools"  ->  "Create shortcut" Don't un-tick the checkbox for "Open as window" Click "Create" Copy the newly created .desktop file to ~/.local/share/applications Windows: Basically the same But you'll have to look up how to put the shortcut in the all programs list I used to have on my desktop a shortcut to the all programs folder, which I used to drag and drop shortcuts into Formerly meirl: "Oh, what a dream that would be!" "It's a shame so many great programs are stuck nested in a browser window." "The Chromium button on my launcher is cramped with stuff that doesn't belong there." "I love Alt+Tab....