Blog

Puppy Linux: ROX File Manager Basics

This is the first of what I hope will be a series of practical guides for using Puppy Linux. I’d also like to contribute these to the wiki later but I don’t want to learn how to do that right now. Anyway, this is a short post explaining some things about the ROX File Manager, the default file manager in Puppy. Everything here is also in the full documentation, but digging into that can be daunting when you’re starting out.


Nix RFC 0098: Community Team

Nix RFC 0098 was submitted to the Nix community recently. In its own words at the time of this post, it aims to “establish an official community team to model social norms, mediate interpersonal problems, and make moderation decisions”.


Linux Mixtapes

I use Puppy Linux on my laptop. Everyone I mention this to is like “Oh yeah Puppy, I used that on a flash drive that one time at school” or something to that extent. That’s kinda where I was when I tried it too; I didn’t want to buy a boot drive for my thinkpad when I had a slim USB stick I could just plug in with 128 gigs of storage, and I had heard puppy was fast for that. I wasn’t wrong either, this thing runs way better than it has any right to given the speed of this storage device. But what’s even cooler is how easy it is to remix a puppy linux distribution into your own custom puppy that you can share with others.


why i don't use analytics

Social ranking numbers are poison to my mind. Likes, views, retweets, boosts, all these things are to me a social slot machine. Put words out, see which words get the numbers highest, chase that dopamine one more time.


eGPU with a Thinkpad x220 from 2011

Something I’ve been quite enamored with recently is ExpressCard. It’s an older standard that’s conceptually similar to Thunderbolt; basically, it’s a slot in the laptop that can provide a USB 2.0, USB 3.0, or PCI Express interface.


The Workgirl Keyboard Layout

There’s a keyboard layout I’ve been using for the past 8 or 9 months. It’s called the workgirl layout. It may look familiar to some of you:


Extended Lua Hashbang - Portable Lua Scripts

So you have a lua file, and you want to be able to run it from the command line like ./your_script.lua. In languages like python or ruby you would accomplish this by adding #!/usr/bin/env ruby or #!/usr/bin/env python as the first line of the file. The #! magic pattern, known as a shebang (sheh-bang) or hashbang, tells linux to use a specific command to execute the file. You can do this in Lua too, but it’s not the most portable option.


Your Anti-bot is Not Accessible

TL;DR: Input sequencing and automation tools such as autohotkey scripts, hardware macros, auto-clickers, and turbo buttons are important accessibility tools that allow people with disabilities to play games they’d otherwise be unable to play. These tools are often banned in multiplayer titles, particularly MMORPGs, in the name of fairness and bot prevention. I argue that these tools should be allowed, or even implemented within the game itself. With the recognition that a line has to be drawn somewhere, I suggest that a tool should be classified as a bot only if it automatically makes meaningful decisions in response to stimuli provided directly by the game, creating a feedback loop that does not involve the player. Further, I suggest that in the games that can’t allow external tools fairly, first-party accessibility features can still make the game playable for more people.


Declawing the Dragon - Voice Coding in 2020

In this post I am going to talk about programming with speech recognition software, also known as voice coding. Voice coding as a concept is nothing new, though you may not have heard of it. Here are some talks you can check out if you want to see what this actually looks like in practice:


Mirroring YouTube Playlists

Recently I wanted to set up a periodic job to mirror some of my personal youtube playlists. There’s plenty of reasons one might want to do this. For me it’s simple: one copy is none copy, and two copies is one copy, so I want a second copy of youtube videos I care about stored locally. This protects against videos getting removed, copyright stuck, youtube shutting down, or anything else that might make the youtube video otherwise unavailable.


SSTV Tx/Rx with a Pi and an RTL-SDR

It turns out that transmitting and receiving SSTV signals is pretty easy, using just a raspberry pi as a transmitter and an RTL-SDR as a receiver. There are a few programs which you’ll need to install before you begin:


TI-BASIC Bejeweled

TI-BASIC is the unofficial name for the programming language included on the stock operating systems of the TI-83 and TI-84 Plus series of calculators. This includes a large set of calculators, the most popular these days being the 96x64 monochrome TI-84+SE, the 320x240 16 bit color TI-84+ Color SE (referred to as the “CSE”), and the newly released TI-84+CE which features a LCD which is significantly faster to access than the CSE and a processor upgrade from a z80 to an ez80.


Prelude of the Chambered in Dart

I was watching [REDACTED] write what was essentially a re-implementation of Doom in Dart recently, and it inspired me to port Prelude of the Chambered (PotC) to Dart.


z80 Assembly: Binary-Coded Decimal

One method for displaying numbers larger than 16 bits is to convert it to Binary Coded Decimal (BCD) first, and display the result. BCD works by using four bits to store each decimal (base 10) digit of a number. The following code can convert a number to BCD, and display it. It’s currently written to convert a 24 bit number to a 10 digit BCD number, but can be modified to support anything really. It is memory ineffecient, because it uses one byte for each digit rather than storing two digits per byte. This is useful though because it makes the display routine simpler.


TI-84+CSE: Max Pixel Fill Speed with OTIR

One of the fastest practical ways to write arbitrary pixels (no 1-color rectangles) to the LCD is with an OTIR loop copying pixel data directly from memory. That being said, I was wondering how many pixels you could theoretically update per frame. As mentioned, this is theoretical. This does not take into account the overhead of adjusting the LCD window, or any of the other logic you may have. It also assumes that interrupts are disabled.


TI-84+CSE: Half Resolution Mode

Half res mode is an LCD mode which results in a halved horizontal resolution. This can also be used for double buffering, because one can write to the left side of the screen while displaying the right side or vice versa.