If you’ve ever tried to snag a popular California State Parks campsite, you know the frustration: spots get booked months ahead, and then a bunch of them open up only one day before the weekend. That makes it tough to plan, and it leaves campsites sitting unused longer than they need to.
The key change: refunds now reward earlier cancellations
Here’s the refund schedule the policy spells out (shared exactly so it’s easy to read):
7 or more days before your reservation starts: You get all site fees back, minus the cancellation fee.
2–6 days before: You lose the first night’s site fee, and the rest is refunded (minus the cancellation fee).
Less than 2 days before (or no-show):No refund — all fees are forfeited.
A couple important details people will miss if they don’t read closely:
There’s an $8.25 cancellation fee, and the reservation fee paid at booking is non-refundable.
“Reservation start” is defined as 12:00 PM on the arrival date (not the campground’s check-in time). To qualify for the “7+ days” full refund tier, you need to cancel by 12:00 PM exactly one week before.
Why this is a good idea
This setup gives people a real reason to cancel earlier if they’re not going to use the site. Instead of waiting until the last minute (when plans change or weather looks bad), the best financial move is to decide at least a week out — which should help campsites reopen sooner for everyone else.
What this means if you’re hunting for a campsite
If you’re hoping to catch someone else’s cancellation, the sweet spot is starting about 7 days before the date you want to go. That’s the point where many people will be motivated to cancel to avoid losing bigger chunks of their payment.
So if you want a Friday night site, start checking the Friday a week before, and keep an eye on openings through the week.
(And if you’re the one holding a reservation you might not use: canceling sooner doesn’t just help your wallet — it helps someone else actually get outside.)
If you ride your bike a lot—commuting, gravel, road, or mountain—your drivetrain is quietly wearing out beneath you. Most of that wear starts with one part: the chain.
The good news? There’s a cheap little tool that can dramatically cut your maintenance costs:
It usually sells for around $11–$16 depending on the shop.
And used right, it can easily save you hundreds of dollars over the life of a bike.
Why “Chain Stretch” Matters (and Why It’s Not Really Stretch)
Chains don’t literally stretch like rubber bands. The pins and rollers wear down over time, which makes the distance between links slightly longer. That tiny elongation means:
The chain no longer meshes perfectly with the teeth on your cassette and chainring.
Load gets concentrated on the leading edges of teeth instead of spread evenly.
Over time, the cassette and chainring teeth get “shark-finned” and worn out.
A worn chain is cheap to replace.
A worn cassette and chainring? Not so much.
Meet the Park Tool CC-3.2
The Park Tool CC-3.2 is a simple “go/no-go” gauge:
One side measures 0.5% elongation
The other side measures 0.75% elongation
For modern 11–12 speed drivetrains (like SRAM GX Eagle), most mechanics recommend replacing the chain around 0.5% wear to protect your cassette. Older 8–10 speed systems can usually go a bit further, up to around 0.75%.
How it works:
Hook one end of the tool into a link.
Try to drop the opposite end into the chain.
If the 0.5% side drops in cleanly on an 11/12-speed chain → time to think about a new chain.
If the 0.75% side also drops in → you’ve waited too long; the cassette is probably already wearing.
That’s it. No math. No measuring. Just “keep” or “replace.”
The Economics: SRAM GX Eagle Example
Let’s put some real numbers on this using a SRAM GX Eagle 12-speed drivetrain, a super common “mid-pack” group set.
Approximate street prices (US):
Part
Approx. Price (USD)
Park Tool CC-3.2 chain checker
$12–$16
SRAM GX Eagle 12-speed chain
$35–$45
SRAM GX Eagle XG-1275 cassette
$220–$255
SRAM GX Eagle direct-mount chainring
$40–$50
(Of course, prices vary by shop, sale, and region—but these numbers are a realistic ballpark.)
Now let’s look at two riders over 3,000 miles of riding.
Rider A: Uses a Chain Checker, Replaces Chains Early
Rider A checks their chain regularly. On a modern 12-speed drivetrain, a chain can often go roughly 1,000 miles (give or take—conditions matter) before hitting 0.5% wear if it’s cleaned and lubed reasonably well.
So over 3,000 miles, Rider A might use:
3 chains × ~$40 each ≈ $120
Because the chains were replaced before they got too worn, the cassette and chainring stay in good shape and don’t need replacing yet.
Total drivetrain wear cost for 3,000 miles: ~$120
Cost per mile:
120 ÷ 3000 = 0.04 → about 4¢ per mile
Rider B: Never Checks Chain Wear, Waits Until It Skips
Rider B just rides. No checking. Eventually, the chain gets so long that:
Shifting starts to feel rough
The chain skips under load
The cassette teeth are visibly hooked
At that point, you usually can’t just slap on a fresh chain—
the cassette is worn to match the old chain, and a new chain will skip.
So Rider B ends up needing:
1 new chain ≈ $40
1 new cassette (XG-1275) ≈ $240
Possibly 1 new chainring ≈ $45
Total: ~$325
Now do the same cost-per-mile math over those 3,000 miles:
325 ÷ 3000 ≈ 0.108 → about 11¢ per mile
The Bottom Line: 4¢ vs 11¢ per Mile
Rider A (with a $12–$16 chain checker): ~4¢ per mile in wear parts
Rider B (no checker, just rides it into the ground): ~11¢ per mile
There is also a higher likelihood that the chain will break before the 3000 miles, causing this expense earlier.
Even if the exact numbers shift a bit for your terrain, weight, and riding style, the pattern is clear:
Replacing chains early is dramatically cheaper than replacing chains + cassette + chainring later.
And that $12–$16 Park Tool CC-3.2 pays for itself the first time it saves your cassette. After that, it’s just making you money.
How to Use This Tool in Your Routine
You don’t need to obsessively measure your chain every ride. But building a simple habit makes a big difference:
If you ride a lot (3–5x per week):Check every 2–3 weeks or roughly every 300–500 miles.
If you’re an occasional rider:Check once a month or after a few big rides.
If you ride in mud, rain, or dust:Check more frequently; grit accelerates wear.
A quick routine:
Wipe down the chain (cleaner chain = more accurate reading).
Drop in the CC-3.2 on the 0.5% side.
Read the tool
If it doesn’t quite drop all the way in → keep riding.
If it drops in easily on a GX Eagle → order a new chain.
Want to build your own DeskHog but found the official project page lacking in instructions? I did too. Here’s the step-by-step guide I wish I had when I started—complete with photos, links, and tips.
I downloaded the .3mf file and imported it into my 3D printer software. The slicer recommended adding supports, which I did.
I used PLA+ at 0.2mm layer height
Here is what the print looked like:
The print includes 3 pieces:
Bottom case
Top case
Keypad
After printing, I removed the supports and cleaned things up with a knife and sandpaper. The hardest part was getting the keypad to fit cleanly into the top case.
Here’s the final result after cleanup.
Assembling the Hardware
Attach the LiPo battery to the board.
Place both inside the bottom case.
Snap the top case on.
Connect the DeskHog to your computer via USB-C.
Setting Up the Firmware
1. Clone the repo:
git clone https://github.com/PostHog/DeskHog.git
cd DeskHog
2. Install the UV Package Manager (if you don’t have it)
I’m using UV package manager to make this process easier. If you don’t have uv install, here is how:
This creates and activates a fast Python virtual environment.
4. Install PlatformIO, which the project uses to build and flash the firmware:
uv pip install platformio
5. Flash the Firmware
Make sure you’re in the root project folder (where platformio.ini lives), then:
platformio run --target upload
This builds and uploads the firmware using USB (with Auto-DFU support).
6. Power and charge:
To power off: Hold the ● + ▼ buttons.
To power on: Press the reset pad.
Charging is automatic when plugged into USB-C.
What It Does Out of the Box
Once booted, you’ll see:
ProvisioningCard: Shows a QR code for Wi‑Fi setup
InsightCard: Displays PostHog data
FriendCard: A sweet ‘encouragement’ screen featuring Max the hedgehog
Connecting to Wi-Fi
Once powered on, the DeskHog shows a QR code for Wi-Fi setup. Scan it to connect to your network—just pick your SSID and enter the password.
From here you can select your network and enter your password. Once connected you’ll see 2 screens. A screen with: WiFi, IP, Signal, Version and API. And a FriendCard
Add PostHog Insights
Go to the IP address displayed on your DeskHog.
You’ll see the configuration page.
Enter your PostHog Team ID (or Project ID) and a read-only API key.
Add the Insights you want to display.
And you’re done! You now have your own fully functional DeskHog.
Final Thoughts
This was a fun weekend project. If you’re already using PostHog, it’s a nice little dashboard for your desk—and a conversation starter too.
I recently put together a small Python script to automate downloading all the available Kensington Outlook newsletters from the Kensington Community Council website.
I wrote it because I enjoy reading the Outlook on my iPad. Until now, I had to go through the site and manually download each PDF. This script fetches all the PDF links from the site, downloads them to a folder on my Mac, and skips any files that are already downloaded. That folder is synced to my iPad, so I can easily read the latest issues offline.
Have you ever encountered this pop-up when trying to change a file extension?
Are you sure you want to change the extension from “.txt” to “.md”?
If you make this change, your document may open in a different application.
This warning can be helpful, but if you frequently change file extensions and find it unnecessary, you can easily disable it. There are two ways to do this: via the GUI (Graphical User Interface) or the CLI (Command Line Interface).
Disable via GUI
Open the Finder
In the menu bar, go to Finder > Settings…
Click on the Advanced tab.
Uncheck “Show warning before changing an extension“
Disable via CLI (Terminal)
If you prefer using the command line, you can disable the warning using Terminal commands.
Disable the Warning
defaults write com.apple.finder "FXEnableExtensionChangeWarning" -bool "true" && killall Finder
Enable the Warning Again
defaults write com.apple.finder "FXEnableExtensionChangeWarning" -bool "true" && killall Finder
The fuel door on our 2021 Ford Transit broke. Unfortunately, it’s held together by a flimsy plastic piece, which makes it prone to damage.
When I took the van in for a routine service at the Ford dealership, I asked for a quote to fix the fuel door. They quoted me over $600, which included the cost of the door and painting it to match the van. Needless to say, I decided not to get it fixed there.
Later, I did some research online and found that replacement fuel doors could be purchased for around $50. I also came across an excellent video tutorial on YouTube Ford Transit Fuel Door Replacement – YouTube that showed exactly how to replace it.
Using the tools, I first unscrewed the T25 Torx screws holding the fuel door and surrounding panels in place. Then, I carefully used the trim removal tools to pop the panels off. The process was straightforward, and none of the clips broke during removal.
I positioned the new fuel door assembly in place, secured it with the Torx screws, and snapped the panels back on. It was a seamless fit, and everything went back together smoothly.
And screwed it in and snapped the panels back into place. The final result:
For those who prefer a seamless look, it’s possible to transfer the painted panel from the old fuel door to the new one. However, I liked the sleek black look of the replacement door and decided to keep it as is. I saved the painted panel in case I change my mind in the future.
The entire replacement process took just 10 minutes. By doing the repair myself, I saved over $550 compared to the dealership’s quote. If you’re dealing with a broken Ford Transit fuel door, I highly recommend tackling this repair yourself. It’s quick, easy, and cost-effective.
I’ve owned and used a Fellow Stagg Gooseneck Kettle for about 5 years now. It’s been a great kettle. Recently I wanted a kettle for my home office, so I could make tea while working. I didn’t want to spent $165. on a Fellow and started looking around. I was drawn to the DmofwHi Gooseneck Electric Kettle in Green. It was simple and beautiful. I spent some time researching it before buying for $39.99. Below are some thoughts on the two kettles.
This has been a great kettle. It has lasted over 5 years with no problems. It boils quickly and pours precisely.
The spout size on the Fellow is way too narrow. You need super patience when pouring. This is OK when pouring a drip coffee and you want to be precise, but frustrating when pouring tea. I often find myself tilting too far and water comes out the top. I have to tell myself slow down.
It has features I never use through. I don’t ever change the temperature, expect by accident. At which point I need to find the manual to set it back to what is was. But others may want to dial in exactly the temperature.
DmofwHi
I’ve only been using the DmofwHi for about a month, but love it already. It boils quickly. At 1000 Watts, it will be slower than the Fellow. But I’ve never noticed.
I love how quickly it pours. And I’ve never spilt water out the top while pouring.
And I’d assume that being less complicated, there are less things to break over time.
Summary
The Fellow has been a great kettle. But the DmofwHi at a fraction of the price gives me everything I need. I would happily buy the DmofwHi again or give it as a gift.
Are you using Xcodes.app and Expo and seeing this error when trying to run the app in the simulator?
› Opening on iOS...
✔ Xcode must be fully installed before you can continue. Continue to the App Store? … yes
Going to the App Store, re-run Expo CLI when Xcode has finished installing.
The problem is that Xcodes installs apps with a version like: Xcode-15.2.0.app. Where the App Store installs it like: Xcode.app
All you need to do is let it know when you Xcode is with the following command:
Visiting a bike shop for repairs or maintenance is a routine part of a cyclist’s life. However, it’s not just about dropping off your bike and picking it up later. There’s an unspoken etiquette that ensures a smooth experience for both you and the shop’s staff. In this guide, we’ll go over some key points to remember before your next visit.
1. Clean Your Bike Beforehand
It’s basic courtesy to clean your bike before taking it in for service. A bike caked in mud or road grime can make the mechanic’s job more difficult and time-consuming. While bike shops are equipped to handle dirty bikes, they’re not a cleaning service. If you bring in a particularly dirty bike, be prepared to pay an additional fee for cleaning. A clean bike also helps the mechanic accurately diagnose and fix issues without dirt obscuring any problems.
2. Be Mindful of Shop Hours
Just like any other business, bike shop employees appreciate customers respecting their operating hours. Avoid bringing your bike in for service minutes before the shop closes. This doesn’t give the staff enough time to assess your bike and can lead to rushed or deferred service. Plan your visit with ample time for the staff to help you properly.
3. Know What You Need
Having a clear idea of what service or parts you need can greatly expedite your visit. If you’re unsure, that’s okay too, but try to describe the problem as best as you can. This helps the mechanic understand your needs and provide the right solution.
4. Patience is Key
Sometimes, the repair or service you need might take longer than expected due to various factors like parts availability or workload. Be patient and understand that the mechanics are working to provide the best service possible.
5. Trust the Experts
Your local bike shop staff are likely experienced and knowledgeable. Trust their advice and recommendations, even if it’s not what you initially had in mind. They understand bikes and can offer insights that might save you time and money in the long run.
6. Respect the Space
Remember that the workshop area is for staff only. It’s tempting to hover and watch the repairs, but this can disrupt the mechanics’ workflow and space. Feel free to ask questions, but also respect their workspace.
Following these simple guidelines of bike shop etiquette not only ensures a smoother experience for you but also shows respect and appreciation for the mechanics’ hard work. Happy cycling, and remember to treat your bike shop visits with the same care and respect you give to your bike!