Sign in

trav

@techsavvytravvy.com
4.9K followers 832 following 1.4K posts

sr software engineer @ crunchyroll 🦀🔪 @ crablang winning the fight against Big Outside™

PostsRepliesMedia
trav @techsavvytravvy.com · 05/07/2026
we're live playing d&d come hang out! twitch.tv/ptmhshow
thumbnail for episode 17 of glow in the dark
7171
trav @techsavvytravvy.com · 14/06/2026
we're streaming d&d come hang out twitch.tv/ptmhshow
Fantasy title art for Glow in the Dark: The Baraganoon. A large boat with a skull on the front moves across icy water or snow under purple skies, with several illustrated characters standing on deck holding weapons. Snow blows across the scene, and the gold title text fills the top.
031
trav @techsavvytravvy.com · 22/02/2026
bloodbath starts in like 30 mins come watch us die twitch.tv/ptmhshow
Illustration of a posed fighter with glowing yellow eyes holding an oversized spiked sword over their shoulder. The sword has a pink glow along the blade. The character wears green armor pieces on the shoulders, forearms, knees, and shins, a white cape flowing behind, a headband, and a reddish sash over a white skirt-like garment, set against a black background.
030
trav @techsavvytravvy.com · 23/01/2026
this weekend i'll be joining some friends to stream episode 1 of a brand new d&d campaign called Glow in the Dark - it's an original story created by my best friend and dm with fantasy, scifi, and anime/manga influences. come hang out sunday @ 4pm ET! twitch.tv/ptmhshow
Digital painting of a massive ship named 'SS Friendship' engulfed in flames, stranded in a glowing cave. The ship dominates the center of the image, its burning masts illuminating the cave with orange light. The foreground shows a lineup of seven adventurers and a giant boar standing knee-deep in water, facing the burning ship. Each figure has a distinct silhouette: a small figure with a scythe, a red-haired sword wielder, a cloaked mage with long white hair, and others in fantasy attire. The title 'Glow in the Dark: Survivors of Friendship' appears at the top in a stylized font.
080
trav @techsavvytravvy.com · 10/03/2025
lol it's always this
Screenshot of a post from Elon Musk (@elonmusk) on X (formerly Twitter) stating: 'There was (still is) a massive cyberattack against X. We get attacked every day, but this was done with a lot of resources. Either a large, coordinated group and/or a country is involved. Tracing ...' The profile picture is a cosmic-style black hole, and the verified checkmark is present next to the X logo.
3271
trav @techsavvytravvy.com · 22/02/2025
started reading this to my 4yo tonight and she's about it
Cover of 'The Manga Guide to Databases' by Mana Takahashi and Shoko Azuma. The cover features an anime-style illustration of a fairy character in a green outfit holding a wand, with a magical glow effect. Behind her, three girls in princess attire are standing near a large open book containing database tables and SQL queries. A white castle is visible in the background.
3290
trav @techsavvytravvy.com · 21/02/2025
💜
High quality meme featuring multiple images of Scorpion from Mortal Kombat in his signature yellow ninja outfit with black mask. The character is shown in different art styles and poses against fiery backgrounds. The images are placed around the letters, similar to how Homer decorated his workplace sign that originally read 'DON'T FORGET: YOU'RE HERE FOREVER' with Maggie's photos in The Simpsons. Text reads 'GET: HERE OVER' with the letter 'O' positioned separately, likely referencing Scorpion's famous 'Get Over Here' catchphrase. The image is framed with black corner dots on a very light pink background.
3170
trav @techsavvytravvy.com · 01/02/2025
no the function would return true, causing it to incorrectly be of type 'number' after narrowing with if statement
TypeScript code showing a function isNumber that incorrectly determines if a value is a number by checking if typeof x is 'string'. The function main demonstrates the problem by assigning an unknown type to x and using isNumber in a conditional check. This leads to a faulty type narrowing where x is mistakenly assumed to be a number, causing an error when passed to the square function.
120
trav @techsavvytravvy.com · 01/02/2025
no because it is narrowing it down to the type and only the specified type or the FAIL unique symbol can be returned, otherwise you'll get an error you could of course return some literal value matching the type but that would have to be pretty deliberate
ts code showing that only the right type can be returned
120
trav @techsavvytravvy.com · 31/01/2025
don't even need the deepEquals since the type will be narrowed by returning the FAIL symbol. so if it's not that, it should be our type
TypeScript code defining a generic function createPredicate<T> that enforces an explicit type parameter using a TS error. It uses NoInfer<T> and an alternative failure type S, which extends symbol and is assigned typeof FAIL. The function returns a predicate that checks whether applying f(x) does not return FAIL. Below, a specific predicate isString is created using createPredicate<string>, verifying if a value is a string.
1160
trav @techsavvytravvy.com · 31/01/2025
i will say, there are some downsides. deepEqual can obviously get expensive if you're comparing a lot of big objects, and there are some dumb things about narrowing that mean you can't return the input directly
TypeScript code defining a type predicate function isUser using createPredicate<User>. The function checks if an input x is an object, not null, has 'name' and 'age' properties, and that 'name' is a string while 'age' is a number. A comment notes that returning x directly is not allowed because its inferred type is object & Record<'name', unknown> & Record<'age', unknown>. However, explicitly returning an object with name and age properties works.
360
trav @techsavvytravvy.com · 31/01/2025
the initial attempt is fine, but throwing then doing try/catch for each check isn't ideal and the predicate will be inferred for whatever type you return. instead i want the type param to be used explicitly and we'll return a symbol to indicate failure instead of throwing i think it's pretty nice!
TypeScript code defining a generic function createPredicate<T> that enforces explicit type parameters and includes a fallback failure symbol (S extends symbol = typeof FAIL). The function takes a predicate function f and returns a type predicate function. If the predicate returns FAIL, it returns false; otherwise, it checks deep equality. Below, an example use case defines isString, which ensures a value is a string, returning FAIL if not.
290
trav @techsavvytravvy.com · 31/01/2025
so today @shreyascodes.tech had the idea to create an abstraction for predicate functions, and this is what i came up with initially. it works
TypeScript code defining a generic function createPredicate<T> that takes a function f and returns a type predicate function. The function uses deepEquals to verify type correctness inside a try-catch block. Below, an example use case defines isString, a type predicate created using createPredicate<string>, which throws an error if the input is not a string.
180
trav @techsavvytravvy.com · 31/01/2025
so one of things you can do in typescript is create type predicates that allow you to check if an input value is a specific type with return type `x is Foo`. unfortunately there is nothing that helps you make sure the predicate is accurate - as long as it returns a boolean it will pass
TypeScript code defining two type guard functions: isString and isNumber. The isString function correctly checks if x is a string using typeof x === 'string'. However, the isNumber function mistakenly also checks typeof x === 'string', despite its type guard claiming x is a number. A comment next to the mistake reads '// whoops'.
5220
trav @techsavvytravvy.com · 31/01/2025
can see it better here
230
trav @techsavvytravvy.com · 31/01/2025
lissajous.ts
2190
trav @techsavvytravvy.com · 30/01/2025
truly github.com/Gankra/cargo...
Terminal output showing an error message from attempting to run 'cargo mommy check' on 'bappy-script v0.1.3'. The Rust compiler reports a syntax error at 'src/main.rs:20:6', indicating 'expected one of '!' or '::''. The line in question reads 'mods passes;', with an error underline under 'passes'. The output ends with 'error: could not compile 'bappy-script'' followed by a whimsical message: 'mommy knows her little girl can do b'.
020
trav @techsavvytravvy.com · 29/01/2025
really? i find that usually when it comes to i/o and async ops that my python requires more ceremony and is harder to follow than the equivalent js
Side-by-side comparison of JavaScript and Python asynchronous file processing. The JavaScript example uses 'Promise.all' to concurrently process an array of filenames with 'processFile', handling errors with a catch block. The Python example uses 'asyncio.create_task' to create concurrent tasks for processing files and collects results as tasks complete using 'asyncio.as_completed', handling exceptions with a try-except block.
130
trav @techsavvytravvy.com · 29/01/2025
oh it's nothing special just a wrapper around the defaults. can be overridden
C code defining a custom memory allocator using function pointers. The code includes an 'Allocator' struct with function pointers for allocation, deallocation, and reallocation. A function 'create_allocator' returns an instance of 'Allocator'. A wrapper function 'realloc_wrapper' is defined, and a global allocator 'GLOBAL_ALLOCATOR' is initialized with 'malloc', 'free', and 'realloc_wrapper' as its function pointers. Header guards ensure the code is included only once.
010
trav @techsavvytravvy.com · 29/01/2025
ehhh not really, just that a function is dynamically passed to the parent as an argument
code snippet demonstrating higher order functions in typescript
010
trav @techsavvytravvy.com · 29/01/2025
c code recreating rust's stdlib Vec
110
trav @techsavvytravvy.com · 29/01/2025
really like this pattern where the type name is also the namespace name bc i don't have to do something like Result.Result that i see some others do with the `import * as Result` thing tree-shaking could be a concern tho idk
TypeScript code defining a 'Result' type that can be either 'Ok<T>' or 'Err<E>', where 'E' extends 'Error'. A namespace 'Result' contains two functions: 'isOk' checks if a given 'Result' is not an 'Error', and 'isErr' checks if a given 'Result' is an 'Error'. The code demonstrates that a type and a namespace can share the same name.
5170
trav @techsavvytravvy.com · 07/12/2024
crazy i was just looking for this right when you posted
Screenshot of Google Suggestions with a dark theme. The search term is 'gleam,' followed by related suggestions: 'gleam higher kinded types' searched 24 seconds ago, 'gleam roadmap' searched 7 hours ago, 'gleam polymorphism' searched 8 hours ago, and 'gleam custom types' searched 8 hours ago.
020
trav @techsavvytravvy.com · 30/11/2024
I KNEW IT more Big Outside™ propaganda
A screenshot of a Bluesky post by 'Allison @adjectiveallison.com' with the text: 'I heard trav is a WILD partier. BIG parties.' The post timestamp reads 'November 30, 2024, at 11:18 AM.' Overlaid annotations circle 'WILD' and 'BIG' in red with added text. Next to 'WILD,' the annotation reads 'wild = OUTSIDE???' in bold red text. Next to 'BIG,' the annotation reads 'BIG!!' also in bold red text.
0130
trav @techsavvytravvy.com · 29/11/2024
oh i guess we're doing winter now
A weather update screenshot. At the top, a 'Winter Weather Advisory' box from the National Weather Service states: 'Winter Weather Advisory. These conditions are expected to last until 7:00 AM, Saturday, November 30.' Below, a section titled 'Flurries Forecasted' says: 'Flurries for the next hour.' A bar graph illustrates flurry intensity increasing over the next hour. The 'Hourly Forecast' below shows: Now - 28°F with snow; 3 PM - 28°F with 100% chance of snow; 4 PM - 27°F with 25% chance of snow; 5 PM - 26°F with cloudy skies; 5:11 PM - Sunset; 6 PM - 25°F, partly cloudy.
5220
trav @techsavvytravvy.com · 27/11/2024
A frog sitting on a plate of baked beans in outer space. Fire is seen at the bottom with embers floating upward The image appears to have been purposefully degraded and distorted. Text overlaid in a whimsical font reads "it is wednesday my dudes".
2426
trav @techsavvytravvy.com · 27/11/2024
oh no
2140
trav @techsavvytravvy.com · 26/11/2024
i always forget you can scope types in typescript just like you can scope variables
Screenshot of TypeScript code demonstrating scoped types and interfaces. 
The global scope declares 'type X = "q";' and 'interface Y { a: 9 }'.
Within a block, a local 'type X = 5;' and 'interface Y { b: 10 }' are declared.
In this block:
  - 'const x: X = 5;' correctly uses the locally scoped type 'X'.
  - 'const y: Y = { b: 10 };' correctly uses the locally scoped interface 'Y'.
Outside the block:
  - 'const x: X = 5;' causes a type error because it refers to the global type 'X', which expects a string value.
  - 'const y: Y = { b: 10 };' causes a type error because it refers to the global interface 'Y', which does not have the property 'b'.
9615
trav @techsavvytravvy.com · 26/11/2024
it's gonna be fine
An animated character with a bald head and dark gray skin stands against a background of roaring orange flames. The character is dressed in a white collared shirt with a loosened dark blue tie, their face tilted upward with closed eyes and a tired, yet serene expression.A dark gray background with the word 'burnout' in lowercase, white, sans-serif font centered in the image.
2140
trav @techsavvytravvy.com · 26/11/2024
hmmm.... a little too nice maybe.
010
trav @techsavvytravvy.com · 24/11/2024
venison fahsa featuring homemade flatbread by my wife #foodsky
A white bowl filled with venison fahsa, a popular Yemeni dish, featuring tender shredded venison topped with a vibrant red tomato-based salsa, bright yellow rice, and pieces of golden-brown naan or flatbread. The dish is presented on a dark, reddish wooden table.
1401
trav @techsavvytravvy.com · 23/11/2024
awwww yaaaaa shout out @camtheperson.com for sending me his homemade hot sauce. i will review tomorrow bc it doesn't really go with the pasta carbonara i made tonight
A small glass bottle of orange-colored hot sauce with a black cap, sitting on a light-colored wooden desk. The background is slightly blurred, showing a green wall and part of an electronic device. A mechanical keyboard with visible 'page up' and 'home' keys is partially visible in the bottom left corner.
8240
trav @techsavvytravvy.com · 22/11/2024
web ui has the aforementioned issues, but the app is just completely broken right now. api is still usable but not great to use on mobile.
A dark-themed error message overlay on a webpage. The text in the overlay reads 'Error receiving response' followed by 'An unknown error has occurred.' Below the error message is a brown button labeled 'Dismiss' with a small 'X' icon to the left. The background text, partially visible, describes a programming context mentioning 'Bun implements a minimal version of the...' and other technical terms.
000
trav @techsavvytravvy.com · 21/11/2024
doodles today
A black-and-white hand-drawn illustration of a child viewed from behind. The child has messy, spiky hair, is wearing a ragged short-sleeved shirt and shorts, and is barefoot. They are holding a large key in their right hand, raised above their shoulder, and their left hand rests on their lower back. The image is drawn on a notebook page with a spiral binding visible on the left side.
2350
trav @techsavvytravvy.com · 20/11/2024
that's why when i abstract it i either don't include a reviver param or i type the reviver with unknown
A TypeScript code snippet defining a function named 'parseJson' that takes a string parameter 'text' and an optional 'reviver' function. The function's return type is a 'Result' type wrapping 'unknown' and 'ParseError'. Within a try-catch block, it attempts to parse the input text using 'JSON.parse', utilizing the reviver if provided, and returns an 'Ok' result upon success. If parsing fails, it catches the error and returns an 'Err' result using 'ParseError.from' to transform the error.
010
trav @techsavvytravvy.com · 20/11/2024
is this what you're looking for? www.typescriptlang.org/play/?target...
A TypeScript code example demonstrating advanced generic types. It includes a 'MakeOptional' utility type that makes certain keys optional using 'Omit' and 'Partial' utility types. There is a 'BaseOptions' type that takes a generic 'T' and contains a required 'data' field and an optional 'onBar' callback function. An 'Options' type conditionally applies 'MakeOptional' based on whether the generic 'T' extends 'void'.
000
trav @techsavvytravvy.com · 19/11/2024
pshhhhhh still typescript lol
A TypeScript code snippet demonstrating type safety. It defines an interface named 'User' with two string properties: 'name' and 'email'. Below the interface, there is a function declaration 'doesUserThing' that takes a parameter 'user' of type 'User'. The function body is represented with an ellipsis, indicating omitted content.
120
trav @techsavvytravvy.com · 19/11/2024
A TypeScript code snippet demonstrating JSON parsing and validation using Valibot. The first line imports everything from 'valibot' as 'v'. The next lines define a constant 'user', parsed from an empty string and explicitly cast to an object with properties 'name' and 'email' as strings. There is a prominent red underline highlighting the type cast. Below, 'validUser' is defined using Valibot's parsing mechanism with 'v.object', ensuring both 'name' and 'email' properties are strings.
100
trav @techsavvytravvy.com · 19/11/2024
ahhhhhhhhhhhh
3110
trav @techsavvytravvy.com · 18/11/2024
you're really good at being cool as hell
A black and white simplistic drawing of a figure wearing sunglasses with a neutral, slightly smirking expression. The character is pointing with both hands, index fingers extended and thumbs up, while tilting their head slightly. The background is solid black.
120
trav @techsavvytravvy.com · 18/11/2024
attacked
An illustration of the NPC (Non-Player Character) meme character, which is a simplistic gray humanoid figure with minimal facial features, including a blank expression with small circular eyes, a straight line for a mouth, and furrowed brows indicating anger or intensity. The background is solid light blue, creating contrast with the character's gray color.
150
trav @techsavvytravvy.com · 15/11/2024
i like the toilet mimic better tbh
A black and white hand-drawn illustration of a monstrous mimic chest. The creature's body is shaped like a treasure chest with its lid open, revealing a mouth full of sharp, jagged teeth and a long, drooling tongue extending outward. The mimic's chest appears to have two rounded eyes on the top lid, and it is supported by multiple spider-like legs. The drawing is shown on a piece of spiral-bound notebook paper.
2171
trav @techsavvytravvy.com · 15/11/2024
doodles today @earend.bsky.social
A black and white hand-drawn illustration of a D&D mimic as a monstrous anthropomorphic toilet. The creature has a mouth full of sharp teeth where the toilet bowl's opening would be, with a long tongue hanging out, dripping liquid. Its tank resembles a back portion with two bulging eyes on top, and it is supported by four bent, spider-like legs. The drawing is shown on a page of a spiral-bound notebook.
7813
trav @techsavvytravvy.com · 14/11/2024
nah started last night and finished today, probably took about 9 hours. and thanks!
A poorly cropped meme image of a scene from Spider-Man featuring Willem Dafoe as Norman Osborn seen with a smirking expression, captioned with "I'm something of a designer myself," where the word "designer" has been edited into the original quote, replacing the word "scientist".
010
trav @techsavvytravvy.com · 14/11/2024
flyer is done. i think it came out pretty nice idk
Promotional poster for a music event called "Bass Havoc" featuring Fendz as the main act, illustrated with a pixel art wizard in a dark hooded robe casting a fiery spell of purple and orange with white streaks resembling lightning. The Fendz logo is styled with a distinctive font and a retro yellow to pink gradient. Special guests are listed below and include TSTRO, Polly Hocket, Geometry, and BWES. Event details are also listed: Friday, November 29th, 2024 at Thunderbird River Ranch, 701 E Michigan Ave, Kalamazoo, MI 49007. 21+ event with a $15 cover charge. Doors open at 8:30 PM.
6271
trav @techsavvytravvy.com · 14/11/2024
gn
Pixel art of a hooded figure in dark robes casting a powerful spell. The figure's hand extends outward, conjuring a blazing stream of bright purples, pinks, and fiery whites resembling lightning or magic energy. The scene has a mystical, night-sky backdrop with scattered stars and a cloudy, ethereal atmosphere.
11687
trav @techsavvytravvy.com · 13/11/2024
A comic-style meme illustrating a cycle of self-pressure and burnout. The first panel shows a head with a red, scribbled mess inside, saying 'I just need to push myself harder.' The second panel shows a person lying in bed thinking, 'I just need to push myself harder,' with arrows leading to and from the phrase 'push harder' repeatedly, forming a cycle. The final panel shows a small stick figure opening a door, asking, 'Are u okay?' The main figure is surrounded by dark scribbles, responding, 'Yes, I just need to push myself harder.'
270
trav @techsavvytravvy.com · 13/11/2024
working on some art for a flyer idea. still a wip and i don't have much experience making pixel art but i think it will be neat
Pixel art of a cloaked figure releasing a burst of magical energy. The energy is depicted with vibrant colors like bright purples, pinks, oranges, and white, emanating in jagged, lightning-like streaks. The figure, wearing a dark cloak, is silhouetted against the glowing burst, creating a strong contrast. The background is dark, accentuating the radiant energy burst. The pixelated style gives the scene a retro, video game-inspired look.
16852
trav @techsavvytravvy.com · 13/11/2024
A scene from the TV show “It’s Always Sunny in Philadelphia.” featuring the character Charlie Kelly, played by Charlie Day, sitting on a worn-out couch in a cluttered room with green walls. He is wearing a grey hoodie and navy blue sweatpants, leaning forward with one arm gesturing in emphasis as he speaks. In front of him is a table with a cardboard box on top of it. Behind him, various items are scattered, including what appears to be a guitar standing upright against the wall. The subtitle reads: “I just don’t think there’s any science to support that, buddy.”
010
trav @techsavvytravvy.com · 13/11/2024
aurora
010