A selfie of Cait shirtless. She has long blonde hair and crows tarried in her shoulders. Sheβs looking cheeky
Guess what, I feel pretty
A selfie of Cait shirtless. She has long blonde hair and crows tarried in her shoulders. Sheβs looking cheeky
Guess what, I feel pretty
I just realized that I don't think I've ever heard my dad tell me, my siblings or my mom that he loves us. Dude is incapable of it
Happy anniversary to @sweetgus.bsky.social for an amazing nine years together π€
Ohhhh thatβs what happened! I thought something was off!
I was also able to do cool stuff like support right-to-left UI for Arabic language users, right out of the box. So yeah, if you're starting a new crossplatform app I definitely recommend learning Dart (it's not too different from TypeScript) and giving Flutter a try
Now instead of doing a Git merge and fixing merge conflicts, I can just run one shell script that creates me Android and iOS app packages I can upload. I'm sure if I wanted to be clever I could automate the upload process too
I was also able to move away from my old approach of creating multiple versions of the app using different Git branches, to creating one unified branch and creating different build flavors that take a set of version-specific configuration files.
I just finished (mostly) a nontrivial science data collection app that had been built in HTML and JavaScript using Angular / Capacitor, completely in Dart using Flutter. I think I might adore Flutter? It makes it so much easier to make a cross-platform app feel like a real app!
If I wanted to I could do this properly with Cloudflare I could do that, but I have nasty feelings about Cloudflare, I don't have money for Cloudflare, and this was something I could knock out in 20 minutes
A wall of green text on a black screen showing a ton of malicious requests to commonly used configuration secret files that could let someone hack my app
@Injectable() export class HoneypotMiddleware implements NestMiddleware { private readonly logger = new Logger('HoneypotMiddleware'); private readonly criticalPaths = [ /\.env/, /sendgrid_keys/, /sendgrid_config/, /secrets\//, /\.git\//, ]; private readonly suspiciousPaths = [ /wp-admin/, /wp-content/, /wp-includes/, /\.php$/, /backup\//, ]; private readonly jail = new Map<string, IPStatus>(); private readonly BAN_DURATION_MS = 1000 * 60 * 60 * 24; private readonly MAX_STRIKES = 3; use(req: Request, res: Response, next: NextFunction) { const clientIp = this.getIp(req); const url = req.originalUrl; // 1. Check if IP is currently in jail if (this.isJailed(clientIp)) { this.logger.warn(`[HTTP] BLOCKED IP: ${clientIp} | Attempted: ${url}`); return res.status(403).json({ message: 'Access Denied' });
I got tired of seeing scrapers hit my backend looking for exposed configuration files so I created a NestJS middleware that catches commonly-requested malicious requests and puts the IP address in a jail that prevents them from making any more requests for 24 hours
Tweet Claude Code wiped our production database with a Terraform command. It took down the DataTalksClub course platform and 2.5 years of submissions: homework, projects, and leaderboards. Automated snapshots were gone too. In the newsletter, I wrote the full timeline + what I changed so this doesn't happen again. If you use Terraform (or let agents touch infra), this is a good story for you to read.
Back in my day you needed a senior engineer for this sort of thing
hi abby!!
One of the great things about Dark Souls is that if it's in the game, Hidetaka Miyazaki probably has a fetish for it. A giantess with huge boobs? A body-hugging iron cage that doubles as an elevator? The man has said he wants to be beaten to death by a giant mushroom. Huge horndog, I love it
Coming up on seven years since I came out at work. Fuck.
If Iβm not careful my inner dialogue goes over to βna nananana, weβre completely fucked, weβre completely fuckedβ to the tune of βGive it Upβ by KC And The Sunshine Band
I canβt wait for shortall season here, thatβs a good look
Her husband thought cell towers were carcinogenic and didnβt allow WiFi but he still had a cell phone.
Once upon a time I had a landlord tell me she didnβt like male students from University of Maine because they had βtoo much testosteroneβ.
Oh, Diane
Bad Omens are the Backstreet Boys of metal (and that's OK! I liked the Backstreet Boys)
A screengrab of a website data listing showing a photo of a very doofy cat and some stats from a weather buoy
Test observation
Can I just say I absolutely love WITCHZ. It's phonk-metal-rap-goth with a tinge of cowboy and all of these elements come together so well
www.youtube.com/watch?v=iQLM...
The script above just handles getting NOAA buoy data, but you get the gist
A screenshot of a data pipeline editor with a code editor. In it the code reads: name: NOAA Buoy Telemetry Integration steps: - id: buoy_data uses: noaa.buoytelemetry with: lat: "{{observation.location.lat}}" lng: "{{observation.location.lng}}" radius: 40 observed: "{{observation.observed}}" products: - air_pressure - air_temperature - water_level - water_temperature - one_minute_water_level - id: update_observation_fields uses: observation.patch with: parent_fields: - slug: noaa-station-name-2 value: "{{steps.buoy_data.station_name}}" - slug: noaa-station-id-2 value: "{{steps.buoy_data.station_id}}" - slug: noaa-station-coordinates-2 value: "{{steps.buoy_data.station_id}}" - slug: buoy-sample-time-gmt value: "{{steps.buoy_data.sample_time}}" - slug: buoy-air-pressure-2 value: "{{steps.buoy_data.air_pressure}}" - slug: buoy-air-temperature-2 value: "{{steps.buoy_data.air_temperature}}" - slug: buoy-water-level-2 value: "{{steps.buoy_data.water_level}}" - slug: buoy-1-minute-water-level-2 value: "{{steps.buoy_data.one_minute_water_level}}" - slug: buoy-water-temperature-2 value: "{{steps.buoy_data.water_temperature}}" observation_id: "{{observation.id}}" condition: "{{steps.buoy_data.station_id}}" trigger: - observation.created - observation.updated
I made an automation pipeline system using a Domain-Specific Language that I designed based on YAML that can do cool things when volunteers submit observations, like automatically getting the coordinates from a typed-in address and then fetching the data from the nearest NOAA weather buoy
Urgent: Rent is due TODAY and I'm $150 short. Anything helps.
Cashapp: $cactusgr
PayPal: ask
#mutualaid
Thank you<3
π
Cait and a small cat sitting on a futon. The cat is leaning against her
Proof of life (featuring Tuna)
They've been letting this languish in the TCP/IP spec committee for YEARS now >>:(
This just popped into my head
I feel like it's a real theme on anything career related. It's not the first time