1
0
Fork 0

Add guides

This commit is contained in:
Owen Ryan 2024-02-05 23:13:57 -05:00
parent 5bf555aaa3
commit 65ec3ec18f
57 changed files with 510 additions and 91 deletions

View file

@ -0,0 +1,91 @@
---
layout: project
title: Adventures with old calculators
description: Shenanigans with graphing calculators my school was throwing away
year: current
permalink: /projects/calculators
thumbnail_url: /assets/images/calculators.webp
SEO_tags: [Calculator, Texas Instruments, TI82, Z80, Assembly, MS-DOS, Overclocking]
---
**Note: This article is still expanding, check back later for more content!**
In January 2023, my high school was getting rid of over a hundred old calculators. Around half were mismatched
scientific and 4-function calculators, and the other half consisted of graphing calculators from the early and mid
1990s. Most of the graphing calculators are Texas Instruments TI-82, so this article will be focused on them, but I do
plan on making other posts.
After replacing the dead batteries every single TI-82 turned on and functioned, but some had malfunctioning screens.
# Overclocking
This section is based on
[this archived webpage](https://web.archive.org/web/20220303160216/http://richfiles.solarbotics.net/Turbo82.html).
There is a 26pf capacitor labeled **C7** on the top right of the TI-82's motherboard. When this is replaced with a 15pf
capacitor, the speed of the calculator increases by 2-2.5x.
Here is the resistor before and after replacement:
<img src="/assets/images/resistorcomparison.webp" class="auto-scale" alt="Split photo of motherboard with old and new resistor">
And here is a speed comparison between a stock TI-82 (left), and an overclocked TI-82 (right):
<video src="/assets/videos/calculatorperf.webm" class="auto-scale" loop autoplay></video>
# Connecting to computer
The TI-82 and TI-85 introduced the ability to connect to another calculator or to a computer to share programs.
## Hardware
The TI-82 (and TI-85) used the TI Graph-link adapter, which connected to the calculator's link port and to a computer's
9 or 25-pin serial port. Luckily, this serial adapter can be converted to USB (shown below).
<img src="/assets/images/graphlinkadapter.webp" class="auto-scale" alt="Photo of TI-Graph Link adapter attached to a serial to USB adapter">
## Software
The TI-Graph Link™ software only supports very old versions of Microsoft Windows based on DOS, and some ancient versions
of Mac OS. I chose to run the software in an MS-DOS virtual machine with Windows 3.1 since I already have experience
with the platform.
If you want to replicate my virtual machine, use the [MS-DOS 6.22](https://winworldpc.com/product/ms-dos/622) and
[Windows 3.1](https://winworldpc.com/product/windows-3/31) images from WinWorldPC, and use this archive of the
[TI Graph Link Software](https://archive.org/details/TiGraphLink). For transferring files I decided to use a physical
Floppy Drive since I had one lying around. Here is my Proxmox configuration file (I would recommend editing the config
file after creating a VM through Proxmox).
```yaml
# Replace with your floppy drive block device
args: -fda /dev/sdb
acpi: 0
# You may need to enable booting from floppy to install DOS
boot: order=ide0
cores: 1
cpu: kvm32
hotplug: disk
# Change this to the storage device you want to store your OS
ide0: local-lvm:vm-69420-disk-0,size=2G
localtime: 0
memory: 512
name: msdos
numa: 0
ostype: other
scsihw: virtio-scsi-pci
# Replace with your serial adapter
serial0: /dev/ttyUSB0
sockets: 1
tablet: 1
tags: ms-dos
vga: std
```
## What's next
Both CRASH and ASH allow you to create and load programs written in Z80 assembly. In the near future I plan on creating
some basic programs in assembly and stretching the limits on what can be run on a TI-82.

View file

@ -0,0 +1,53 @@
---
layout: project
title: "Informinator"
description: News aggregator built with React and TypeScript
year: current
permalink: /projects/informinator
thumbnail_url: /assets/images/informinator.webp
project_url: https://informinator.owenryan.us/
source_url: https://code.owenryan.us/owenryan/informinator
SEO_tags: [News, FOSS, React, RSS, TypeScript]
---
**Note: Informinator will be open-sourced in the near future when the site leaves the testing stage**
Informinator is a web-based news aggregator that acts as a central place to catch up on current events.
## Origins
During the spring 2023 semester, two separate classes I was taking had weekly news quizzes that checked that you had
been following current events. I decided that the best way to study for these quizzes was to create a news aggregator
to simplify the process of looking at several news outlets per day.
The original version of Informinator was hacked together in a weekend and worked much differently than the current
version. It was written entirely in Python using Aiohttp as the webserver and jinja as the template engine. The server
did everything from Parse RSS to render HTML, which led to 5+ second load times as every RSS feed had to be fetched
before HTML was returned. It also only pulled feeds from RSSHub, and thus only featured stories from BBC News,
Al jazeera, The Associated Press, and Op-eds from The Guardian.
## Privacy
Informinator aims to be a privacy-friendly solution for news aggregation. Some information is inadvertently collected to
prevent spam, but it can be entirely avoided by self-holding your own instance of Informinator.
The official Informinator instance collects the following information
- IP address when you load the page - This is logged by the webserver and used to identify Denial-Of-Service (DOS) and
similar attacks.
- IP address and RSS feed URL when using the official informinator proxy to load articles - Again used for detecting
abuse.
## Current issues
The first version of Informinator was hacked together over a weekend, so some design choices are suboptimal. Some of these include:
- All articles are loaded on page-load, even though most are hidden behind the carousel.
- Informinator's RSS parsing code only supports feeds from [RSSHub](https://docs.rsshub.app/en/).
- RSSHub's New York Times English feed is currently unusable due
to [a parsing error](https://github.com/DIYgod/RSSHub/issues/12371).
- All articles are cached in Python when an in-memory database such as Redis would greatly improve performance.
## Roadmap
Informinator's public roadmap can be found [here](https://informinator.owenryan.us/roadmap).

View file

@ -2,9 +2,11 @@
layout: project
title: "Jambox"
description: "Discord music bot built with Hikari and Lavalink"
year: current
permalink: /projects/jambox
project_url: https://discord.com/api/oauth2/authorize?client_id=1102705272805404722&permissions=4298394880&scope=applications.commands%20bot
thumbnail_url: /assets/images/jambox.webp
SEO_tags: [Discord, Python, Hikari, Lavalink]
SEO_tags: [ Discord, Python, Hikari, Lavalink ]
---
**Note:** This project is currently on haitus due to a core Python library becoming deprecated.

View file

@ -0,0 +1,52 @@
---
layout: project
title: This website
description: The self-built site using Jekyll, Bootstrap, TypeScript, and more!
year: current
permalink: /projects/website
thumbnail_url: /assets/images/website.webp
project_url: https://owenryan.us/
source_url: https://code.owenryan.us/owenryan/owenryan.us
SEO_tags: [Website, HTML, CSS, Jekyll]
---
After squatting on this domain for 7 years, I finally stopped procrastinating and decided to create a website.
Here is everything I used to turn my visions into reality.
## Structure
This website was created using the [Jekyll](https://jekyllrb.com/) static site generator, which runs on the
[Liquid](https://shopify.github.io/liquid/) template engine. Jekyll supports writing posts in
[Markdown](https://en.wikipedia.org/wiki/Markdown), which makes writing simple pages like this one much easier. On the
other hand, using plain markdown makes embedding videos and icons much more difficult.
## Theme
Every page is running a custom theme built with the [Bootstrap](https://getbootstrap.com/) CSS library, and styled wit
[SASS](https://sass-lang.com/). Jekyll automatically renders markdown files to fit the site theme.
## Typescript
When it comes to creating websites, I try to keep scripting down to a minimum to improve client performance. On this
site, there are currently only three times Javascript is used on this site.
- Lazy loading Stylesheets (Used for loading FontAwesome icons in the background)
- Gradient rotator (Only on index.html)
- "Get Email Address" button in contact.html (Decodes an obfuscated version of my email address to prevent scraping)
I chose to work with TypeScript over JavaScript since I prefer to use static-typing whenever possible to avoid confusion
and to allow better static analysis and linting. On the other hand, Jekyll only has built-in support for CoffeeScript,
so compiling to JavaScript has to be done manually.
## Hosting
Jekyll produces static HTML and CSS files, meaning that they can be hosted anywhere. I chose to host this website using
the [Apache webserver](https://httpd.apache.org/) because it's reliable and has better documentation than NGINX.
## DOOM Easter Egg
You might have noticed the spaghetti monster on the social media panel on the front page. I had no idea what to put
there, so I linked to a page with a built-in x86 emulator ([v86](https://github.com/copy/v86)), that runs a super
lightweight Linux image built with Buildroot that boots straight into the original DOOM via [Chocolate
Doom](https://www.chocolate-doom.org/wiki/index.php/Chocolate_Doom). [Feel free to check out the buildroot
configuration](https://code.owenryan.us/owenryan/buildroot-doom)