ashley williams's Avatar

ashley williams

@agdubs.bsky.social

a mess like this is easily 5 to 10 years ahead of its time

2,690 Followers  |  92 Following  |  69 Posts  |  Joined: 13.04.2023  |  1.7145

Latest posts by agdubs.bsky.social on Bluesky

Thought experiment: Most programming languages were designed in an era where mostly one programmer coded in isolation. If you were designing a language for modern collaborative programming/commenting/etc., what would you change? How would you *modify* existing languages?

26.07.2025 12:46 β€” πŸ‘ 83    πŸ” 14    πŸ’¬ 27    πŸ“Œ 3

truly magnificent

29.07.2025 03:08 β€” πŸ‘ 3    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Post image Post image Post image Post image 29.07.2025 02:35 β€” πŸ‘ 17    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0
Post image 21.05.2025 17:09 β€” πŸ‘ 488    πŸ” 89    πŸ’¬ 9    πŸ“Œ 2
use iddqd::{IdOrdMap, IdOrdItem, id_upcast};

#[derive(Debug)]
struct User {
    name: String,
    age: u8,
}

// Implement IdOrdItem so the map knows how to get the key from the value.
impl IdOrdItem for User {
    // The key type can borrow from the value.
    type Key<'a> = &'a str;

    fn key(&self) -> Self::Key<'_> {
        &self.name
    }

    id_upcast!();
}

let mut users = IdOrdMap::<User>::new();

// You must pick an insertion behavior. insert_unique returns an error if
// the key already exists.
users.insert_unique(User { name: "Alice".to_string(), age: 30 }).unwrap();
users.insert_unique(User { name: "Bob".to_string(), age: 35 }).unwrap();

// Lookup by name:
assert_eq!(users.get("Alice").unwrap().age, 30);
assert_eq!(users.get("Bob").unwrap().age, 35);

// Iterate over users:
for user in &users {
    println!("User {}: {}", user.name, user.age);
}

use iddqd::{IdOrdMap, IdOrdItem, id_upcast}; #[derive(Debug)] struct User { name: String, age: u8, } // Implement IdOrdItem so the map knows how to get the key from the value. impl IdOrdItem for User { // The key type can borrow from the value. type Key<'a> = &'a str; fn key(&self) -> Self::Key<'_> { &self.name } id_upcast!(); } let mut users = IdOrdMap::<User>::new(); // You must pick an insertion behavior. insert_unique returns an error if // the key already exists. users.insert_unique(User { name: "Alice".to_string(), age: 30 }).unwrap(); users.insert_unique(User { name: "Bob".to_string(), age: 35 }).unwrap(); // Lookup by name: assert_eq!(users.get("Alice").unwrap().age, 30); assert_eq!(users.get("Bob").unwrap().age, 35); // Iterate over users: for user in &users { println!("User {}: {}", user.name, user.age); }

new #rustlang crate drop: iddqd! ID-based maps where keys are borrowed from values. Four maps are included: IdOrdMap, IdHashMap, a bijective (1:1) BiHashMap and a trijective (1:1:1) TriHashMap.

At Oxide we've found this pattern to be very useful. iddqd is no-std compatible, too!

docs.rs/iddqd

21.05.2025 21:19 β€” πŸ‘ 164    πŸ” 36    πŸ’¬ 15    πŸ“Œ 2
Post image

10 years ago, @jennschiffer.com took this pic of me. another life.

05.05.2025 22:12 β€” πŸ‘ 14    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

❀️❀️❀️ thaaannnkks and yes i go every year. this year they had a yoga class and the downpour hit literally as it ended πŸ˜…

heck yeah on a membership!! we should go some time

05.05.2025 17:41 β€” πŸ‘ 3    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0
Post image Post image Post image Post image

39th lap

05.05.2025 17:15 β€” πŸ‘ 49    πŸ” 0    πŸ’¬ 8    πŸ“Œ 0

the noise i made when i saw the supermarket had purple baby broccoli today

30.04.2025 22:18 β€” πŸ‘ 9    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

i am currently in a town where all the cafes except dunkin donuts are closed on wednesday

26.03.2025 12:23 β€” πŸ‘ 3    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Post image

this ain’t texas

24.03.2025 19:53 β€” πŸ‘ 21    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0
Post image

apropos of nothing, here’s my fave coffee in ottawa

20.03.2025 12:35 β€” πŸ‘ 23    πŸ” 0    πŸ’¬ 2    πŸ“Œ 0
VIX market uncertainty index

VIX market uncertainty index

this stock market shit is easy, line goes up 😎

04.03.2025 14:58 β€” πŸ‘ 69    πŸ” 4    πŸ’¬ 2    πŸ“Œ 2
First Follower: Leadership Lessons from Dancing Guy
YouTube video by Derek Sivers First Follower: Leadership Lessons from Dancing Guy

I often think back at this video from Derek Sivers: "The first follower transforms a lone nut into a leader."

This has been true so many times in my experience. If you haven't watched this video yet, it's well worth your time, it's only 3 minutes.

youtu.be/fW8amMCVAJQ

22.02.2025 16:28 β€” πŸ‘ 35    πŸ” 10    πŸ’¬ 5    πŸ“Œ 1

this is so real

22.02.2025 17:58 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

i accidentally brought a dog towel of questionable status to the gym this morning and it was literally like a laundry detergent commercial

22.02.2025 16:07 β€” πŸ‘ 15    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

i also still have my 13! i cant tell if it really still works great or im getting old and dont have the accelerating taste/needs i once did

22.02.2025 13:23 β€” πŸ‘ 2    πŸ” 0    πŸ’¬ 2    πŸ“Œ 0

β€žhow i learned to stop worrying and love the build scriptβ€œ

19.02.2025 00:25 β€” πŸ‘ 3    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

!!!! i hadnt heard of this!! thank you for sharing

18.02.2025 00:27 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

i have just discovered a really great use for ai: no spoilers screening of movies for violence against animals.

17.02.2025 22:44 β€” πŸ‘ 8    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0
Preview
Thomson Reuters Wins First Major AI Copyright Case in the US The Thomson Reuters decision has big implications for the battle between generative AI companies and rightsholders.

Thomson Reuters has won the first major AI copyright case in the US. The decision has big implications for the battle between generative AI companies and rightsholders.

11.02.2025 20:54 β€” πŸ‘ 3347    πŸ” 1078    πŸ’¬ 41    πŸ“Œ 275

πŸ‘€πŸ‘€πŸ‘€

11.02.2025 23:20 β€” πŸ‘ 3    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

i dont know and im so mad about it lol

11.02.2025 23:14 β€” πŸ‘ 4    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

the capitalization strategy of Ipv6Addr should be illegal

11.02.2025 22:38 β€” πŸ‘ 16    πŸ” 1    πŸ’¬ 1    πŸ“Œ 0

PSA: if you're shipping a CLI tool in Rust, please give an option to use the system certificate store. Most Rust libraries for network stuff will just use the Mozilla webpki list by default.

08.02.2025 00:00 β€” πŸ‘ 28    πŸ” 4    πŸ’¬ 4    πŸ“Œ 0
Post image 08.02.2025 20:06 β€” πŸ‘ 20    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0
Post image 02.02.2025 15:25 β€” πŸ‘ 35    πŸ” 2    πŸ’¬ 2    πŸ“Œ 0

πŸ˜‚πŸ’―

27.01.2025 14:10 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0
Preview
Environment variables - cargo-nextest Environment variables nextest reads and sets, and whether it's safe to alter them within tests.

Rust 2024 is (finally) going to mark std::env::set_var and remove_var unsafe. But many tests want to alter the current process's environment. Here's some documentation about its safety.

I think this is a case where nextest's process-per-test model shines, with clear, composable semantics.

24.01.2025 23:06 β€” πŸ‘ 36    πŸ” 6    πŸ’¬ 0    πŸ“Œ 0

youβ€˜re not wrong πŸ˜…πŸ˜…πŸ˜…

21.01.2025 21:18 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

@agdubs is following 20 prominent accounts