Good morning
#GoodMorning #alpacas
@docbohn.bsky.social
Professional Thinker. Often thinking about #AirPower, #ComputerScienceEducation, nerdy stuff, or #alpacas & #chickens. Maybe all at once. @DocBohn@techhub.social
Good morning
#GoodMorning #alpacas
A rooster and six hens perch on a branch in their run.
Good morning
#GoodMorning #chickens πͺΆ
What I'm wondering is why FIFA is awarding a thingamajob that has hands touching a round object.
06.12.2025 01:42 β π 1 π 0 π¬ 0 π 0Two hens in their run. One stands near a window, and the other perches on an old ladder that has been converted into, well, perches.
Good morning
#GoodMorning #chickens πͺΆ
Many years ago I went into the clinic for a wound check (just below the elbow) after I'd popped some stitches. After removing the bandaging, the med tech turned several shades of green. A few minutes later, I learned from the flight surgeon that it was because she was not prepared to see the bone.
05.12.2025 02:37 β π 1 π 0 π¬ 1 π 0Rebound library copies of Kernighan and Plauger's "The Elements of Programming Style" and "The Elements of Programming Style, 2nd edition".
I've got my reading material for the winter break.
#AcademicSky #CompSky #ComputerScienceEducation
Six alpacas wearing orange coats, outside their barn. The sky is darkening, and some stars in the Big Dipper are visible. The corral is snow-covered.
Good morning
#GoodMorning #alpacas
Nothing has gone rwong yet.
03.12.2025 12:26 β π 1 π 0 π¬ 0 π 0Two roosters and four hens sitting on a perch in their coop.
Good morning
#GoodMorning #chickens πͺΆ
Good morning
#GoodMorning #alpacas
Alpacas staring at a hen who is nesting in a hay feeder.
She sΜΆtΜΆaΜΆnΜΆdΜΆsΜΆ sits accused of wanton nesting in someone else's lunch.
01.12.2025 12:01 β π 2 π 0 π¬ 1 π 0Good morning
#GoodMorning #chickens πͺΆ
I named my fists Masters and Johnson because...
um, never mind.
There was a bill in our state's legislature a couple of years ago that would have required schools to hold a student back if the parent/guardian requested it. It didn't make it to a floor vote.
30.11.2025 16:37 β π 0 π 0 π¬ 0 π 0Good morning
#GoodMorning #alpacas
A kiln
CupFactory
30.11.2025 04:22 β π 2 π 0 π¬ 0 π 0There's nothing quite like an imminent deadline (ahem) to focus your attention on the problem at hand.
30.11.2025 04:03 β π 1 π 0 π¬ 0 π 0Many years ago (and I don't recall what precipitated this question) someone asked me what I'd do if I fell out of an airplane without a parachute.
"I'd enjoy the ride down." That earned me a funny look. "I really enjoy solving problems. I'll probably try to solve the problem of generating lift."
Good morning
#GoodMorning #chickens πͺΆ
Five alpacas in their pasture. Three are kushed, and two are grazing. A maple tree devoid of leaves fills the foreground.
Good morning
#GoodMorning #alpacas
Good morning
#GoodMorning #chickens πͺΆ
How interestifying
26.11.2025 12:14 β π 0 π 0 π¬ 0 π 0Good morning
#GoodMorning #alpacas
Therac 25 has entered the chat
26.11.2025 04:27 β π 3 π 1 π¬ 1 π 0Post a famous bathroom scene
26.11.2025 04:19 β π 1 π 0 π¬ 0 π 0Returning the favor...
bsky.app/profile/docb...
I discovered a couple of interesting things while preparing this demo -- `timspec_get()` provides microsecond-precision timing on my Mac (my department's Linux server provides nanosecond-precision timing), and my Mac doesn't have 4KB pages (the Linux server, unsurprisingly, does have 4KB pages).
25.11.2025 15:35 β π 2 π 0 π¬ 0 π 0constexpr size_t SIZE_OF_PAGE = 16 * 1024; static uint8_t volatile array[128 * SIZE_OF_PAGE]; static inline long long get_nanoseconds(struct timespec timestamp) { return 1000000000LL * timestamp.tv_sec + timestamp.tv_nsec; } void load_page(void) { printf("Enter a character: "); unsigned char c = (unsigned char) getchar(); uint8_t foo = array[c * SIZE_OF_PAGE]; } void deduce_character(void) { struct timespec start, stop; unsigned char fastest_character = UCHAR_MAX; long long fastest_access_time = LLONG_MAX; for (unsigned char c = '\0'; c <= CHAR_MAX; c++) { timespec_get(&start, TIME_UTC); uint8_t foo = array[c * SIZE_OF_PAGE]; timespec_get(&stop, TIME_UTC); long long access_time = get_nanoseconds(stop) - get_nanoseconds(start); printf(isgraph(c) ? "%4c" : "\\x%02x", c); printf(" :%12lld" "ns\n", access_time); if (access_time < fastest_access_time) { fastest_access_time = access_time; fastest_character = c; } fflush(stdout); } printf("\n\nYou entered: %c\n\n", fastest_character); } int main(void) { load_page(); deduce_character(); return 0; }
I just threw together a bit of code to demonstrate to my students the timing benefits of locality with respect to virtual memory pages.
godbolt.org/z/PP7PEzT9M
(I may or may not have been influenced by meltdownattack.com)