Todd Sundsted
Todd Sundsted
toddsundsted@epiktistes.com
Better dead than bored.
Introductionepiktistes.com/introduction
GitHubgithub.com/toddsundsted/ktistec
Pronounshe/him
馃寧Sector 001
Todd Sundsted
Epiktistes Memory Statistics

I've been tracking epiktistes inbox/outbox traffic and memory statistics (as reported by the Boehm garbage collector) for a while. There's always a consistent increase in both heap size and free memory鈥攖o the point where reported free memory is greater than the originally allocated heap鈥攖hough the difference between the two doesn't appear constant over time. At the moment, heap seems to have plateaued but (pessimistically) I don't expect it to remain flat.

Given relatively flat traffic, the growth in free memory is surprising. I haven't had a chance to investigate, but based on what I understand about Boehm the increase in free memory could be due to increased fragmentation, and the growing difference between heap and free memory could be due to the conservative nature of the garbage collection algorithm.

Or there could be legitimate memory leaks. I did find one, months ago, which was the result of caching SQL prepared statements (in a Hash) and poor practice constructing queries in a couple places, which led to nearly linear growth in cached statements. The difference then was that heap growth was much more consistent, which is not what I see here, now.

#ktistec #crystallang

Todd Sundsted

fdescribe/xdescribe, fcontext/xcontext, fit/xit have really been game changers during tdd. previously, i specified specs to run by line number, which works but requires me to hunt down the line number... i don't know why it took me so long to adopt this鈥攊 guess i assumed spectator didn't support them.

#crystallang #spectator

Todd Sundsted

i like acronyms, and i really like keeping things simple, but i don't like the acronym KISS (for "Keep it Simple, Stupid"). it just seems unnecessarily pejorative. from now on i'm just using KIS...!

Todd Sundsted

saturn is one of my favorite coffee shops (and music venues) anywhere. you鈥檝e got your 8-bit (and 16-bit) consoles, old circuit boards for decor, and great coffee!

saturn, birmingham al

#coffee #birmingham-al

Todd Sundsted

chat gpt straight up cheats at tic tac toe!

tic tac toe with chat gpt

#chatgpt #tictactoe

Todd Sundsted

i caught this out of the corner of my eye on a screen at the coffeeshop this morning, and thought "is that brent spiner?!?"

brent spiner on night court

it turns out he played the hard-luck character bob wheeler on several episodes of night court before playing the character data on star trek the next generation.

#til

Todd Sundstedalexanderadam

RT @CrystalLanguage
Looking for Community Feedback on an important upgrade

The next Crystal release will upgrade the regex engine to PCRE2 and we鈥檙e looking for feedback on the effects of this transition. Please help by responding to this poll: forum.crystal-lang.org/t/poll-
#CrystalLanguage #programming

Todd Sundsted

great main gig day at the world petrochemical conference in houston. i know that doesn鈥檛 sound cool, and maybe even sounds a little alarming but the content today was on things like alternative (net zero) fuels, regulatory drivers needed for net zero in maritime by 2050, and (my topic) the systemic factors that inhibit decarbonization in ocean shipping. there鈥檚 a lot of work to do!

#decarbonization

Todd Sundsted

commits 984e28b7 through a367c215 include changes that support following threads, hashtags and mentions:

  • index pages for threads, hashtags and mentions include a follow/unfollow button
  • following a thread, hashtag or mention results in notifications when new posts arrive that are part of the thread or include the hashtag or mention
  • to support navigation and discovery, the details pages for posts include labels with links to the index pages for hashtags and mentions

next up is support for actively finding and fetching followed content from elsewhere in the fediverse.

also included are a bunch of bug fixes, some internal enhancements, and greatly reduced build times and executable sizes.

#ktistec

Todd Sundsted

the crystal programming language always inlines blocks, which is great for performance but trades off space for speed. using blocks effectively means keeping this in mind.

somewhere along the line, i learned the habit of passing a block to a function as a means of customizing the behavior of the function. if the function that takes the block is large, it's important to remember that the body of the function is inlined where the function is called, which may not be what you are expecting. if you call the function multiple times, you even get multiple copies.

i just committed code that fixes an egregious example of this problem. in this case these ~30 lines of code replace the blocks with procs (which aren't inlined) and cut ~24mb (that's megabytes) off the executable (over a third of its size).

i regularly shoot myself in the foot trying to be clever, so i don' t know how prevalent this problem is in practice, but it's definitely something to keep in mind, especially if you see compile times and executable sizes growing!

#crystallang #ktistec