Skip to content

Instantly share code, notes, and snippets.

View brandonzylstra's full-sized avatar
🛤️
Riding the Rails

Brandon Zylstra brandonzylstra

🛤️
Riding the Rails
  • UC Berkeley
  • the tubes
View GitHub Profile
#!/usr/bin/env zsh
# git rename-remote-user - Change username in Git remote URLs
# Usage: git rename-remote-user [options] <old_username> <new_username>
# TODO: make it clear when nothing has changed.
# TODO: write tests with one of the following:
# - Bats
@brandonzylstra
brandonzylstra / git-clean-ignore
Created June 11, 2025 22:39
Synchronize .gitignore patterns with tracked files
#!/usr/bin/env zsh
#
# git-clean-ignore: Synchronize .gitignore patterns with tracked files
#
# This script scans a Git repository for files that match patterns in .gitignore
# but are still being tracked. It prompts the user to either remove these files
# from tracking or remove the corresponding patterns from .gitignore.
#
# Usage:
# git-clean-ignore [options]
@brandonzylstra
brandonzylstra / CONVENTIONS.md
Last active February 17, 2025 22:13 — forked from peterc/CONVENTIONS.md
CONVENTIONS.md file for AI Rails 8 development
  • You MUST NOT try and generate a Rails app from scratch on your own by generating each file. For a NEW app you MUST use rails new first to generate all of the boilerplate files necessary.
  • Create an app in the current directory with rails new .
  • Use Tailwind CSS for styling. Use --css tailwind as an option on the rails new call to do this automatically.
  • Use Ruby 3.4.2+ and Rails 8.0+ practices.
  • Use the default Minitest approach for testing, do not use RSpec.
  • Default to using SQLite in development. rails new will do this automatically but take care if you write any custom SQL that it is SQLite compatible.
  • An app can be built with a devcontainer such as rails new myapp --devcontainer but only do this if requested directly.
  • Rails apps have a lot of directories to consider, such as app, config, db, etc.
  • Adhere to MVC conventions: singular model names (e.g., Product) map to plural tables (products); controllers are plural.
  • Guard against incapable browsers accessing controllers with `al
This file has been truncated, but you can view the full file.
<details><summary>Zed.log</summary><pre>
<!-- Click below this line and paste or drag-and-drop your log-->
2024-10-04T00:04:02.983854-04:00 [INFO] ========== starting zed ==========
2024-10-04T00:04:02.988191-04:00 [INFO] Opening main db
2024-10-04T00:04:02.990823-04:00 [INFO] Opening main db
2024-10-04T00:04:03.018765-04:00 [INFO] Using git binary path: Some("/Applications/Zed.app/Contents/MacOS/git")
2024-10-04T00:04:03.229928-04:00 [ERROR] invalid binding value for keystroke cmd-alt-enter, context Some("Editor")
Caused by:
@brandonzylstra
brandonzylstra / float_approximation.rb
Created June 15, 2024 23:08
Safely compare floats
## you presumably already know that this returns false, because of the way floats are stored:
0.1 + 0.2 == 0.3
# => false
# we can create a more useful way of comparing floats that matches what humans would expect:
class Float
def =~(number, tolerance = 0.0001)
(self - number).abs < tolerance
end
@brandonzylstra
brandonzylstra / ruby-the-future-of-frozen-string-literals.md
Last active May 24, 2024 17:39 — forked from fxn/ruby-the-future-of-frozen-string-literals.md
Xavier's helpful post, with grammar fixes (in progress).

Ruby: The future of frozen string literals

What is a literal?

In programming languages, literals are textual representations of values in the source code. This is a syntactical concept.

Some examples:

7 # integer literal
@brandonzylstra
brandonzylstra / button_progress_controller.js
Created February 22, 2024 03:20 — forked from dbreunig/button_progress_controller.js
Poor man's form button progress indicator, in Stimulus, for those long processing requests.
import { Controller } from "@hotwired/stimulus"
export default class extends Controller {
connect() {
addEventListener("turbo:submit-end", ({ target }) => {
clearInterval(this.interval);
this.element.innerHTML = this.originalLabel;
})
this.originalLabel = this.element.innerHTML;
}
@brandonzylstra
brandonzylstra / upgrading_ruby_for_rails
Last active January 3, 2023 04:46
How To Upgrade Ruby for your Rails App, Locally & on a Server with Passenger
Overview
--------
Consider the commands given to be examples, not to necessarily be precisely
what you will use. They were based on my circumstances, in which
* my local platform is macOS,
* where Homebrew is the de facto package manager;
* my laptop (and the server) are managing Ruby with rbenv;
* vim is my remote editor of choice, and an acceptable local editor; and
Goals
Editable by Supervisor
Employee Data Safe
Supervisor Edits Goals -> Editable by Supervisor
Supervisor Assigns Rights to Employee -> Editable by Employee
Employee Data Lost
No Simple Solution -> Employee Data Lost
Editable by Employee
Employee Data Still Safe
Employee Begins Editing Goals -> Employee Data at Risk
# https://wikihub.berkeley.edu/display/robots/CC+-+20181213+More+Changes+to+Pilot+Specs
Proposed Performance Pilot Workflow - Newest
No Review Exists*
Create New Form -> Supervisor Starts Form
Review In Process
Supervisor Starts Form
Save -> Draft
Save & Share with Employee -> Participants Comment and Sign
New*
Draft