Friday, February 28, 2025

Firmware Liberation Party

 At the playground this evening, I saw a mom who looked marginally cooler than me, but she was wearing a t-shirt that said "Austin, Texas". Which is uncool, right? Wearing the band's t-shirt to their show.

As I was considering berating myself for not doing my part to keep Austin weird, I wondered what t-shirt I ought to be wearing. What would be cool? And my brain provided: "firmware". Lower-case, cryptic. As a band name, cool. Like "Floating Points". But somebody might think it's a startup. Uncool. So maybe make it punk? Firmware Liberation Now!

Friday, February 21, 2025

2025 in Preview

 I love that Blogspot is still here. Assuming that I find the time / motivation / focus, here's a list of things I'd like to write about in 2025.

  • LLMs broadly, but particularly:
    • tool use,
    • chain-of-thought / inference-time-compute,
    • organizational and business structures that include LLM agents,
    • Tyler Cowen's "writing for the LLM" idea.
  • AGI + society, as in:
    • unemployment,
    • decoupling of labor and capital,
    • meaning and purpose,
    • acceleration of robotics,
    • what percentage of Americans will be a streamer or influencer in 30 years.
  • Optimism
    • the era of flash mobs, what was that all about,
    • lucid dreams and Linklater,
    • children's books,
    • bespoke detritus,
    • ceramic tiles,
    • lifestyle prototyping,
    • spaghetti noodles for throples
    • water tower passport stamps,
    • etc.

Wednesday, March 9, 2022

Diana says it's time to go to sleep.

Diana says: "Are you blogging again?"

As soon as a press this button I am!

Saturday, January 31, 2015

Blogging Again?

Given that the last post on this blog was made in 2008, you might think I had forgotten about it entirely. I haven't forgotten. I want to write again.

Diana told me about 750words.com, and I gave it a try. I've typed out 750+ words every morning for that last 12 days. My joint pains and mental fog have decreased each day! I'm breaking through into a new realm of consciousness! Just kidding, but it has been nice.

I like the name of this blog, and I like the banner image that I made for it (seven years ago!). The name "shiftpop" sounds like a musical micro-genre, and also like an instruction in a stack-based programming language. In 2008 when I started this blog, I was at the apex of my cellular automata (the banner image) and non-mainstream programming languages (the blog name) phase.

I'm a bit nostalgic for that era, but I don't expect to write about either of those topics now. I do intend to write about technical issues, but I'm more likely to write about computer graphics and hardware verification.

Tuesday, December 30, 2008

PHP's strtotime

I generally think of PHP as the buck-toothed high-school drop-out sibling of Perl (itself the unbathed cousin of Python and Ruby). But today I discovered the library function strtotime, which is a very flexible parser for text expressing a date/time. One cool example is a snippet that calculates the current year's Thanksgiving day.

The closest Python equivalent to strtotime seems to be dateutil.parser.parse, though it's much less flexible from a cursory glance. Of course, if a person is only trying to compute "common moveable Christian feasts that can be deduced from the date of Easter Sunday" they need look no further than the mx.DateTime.Feasts library (which includes translations into German and French). Weird. And awesome.

Friday, December 5, 2008

Not Lazy Enough

It occurred to me that many performance problems when dealing with large datasets are due to programs not being "lazy enough". My example problem was "ALTER TABLE" statements in a database, which in most implementations will read, modify, and write every row in the table. Because with large tables this is a significant performance hit, we rarely see people doing "dynamic language things" i.e. altering their schemas in application logic.

One reason for being non-lazy (some say: strict) is to ensure consistency across your dataset. If exact consistency is not a requirement, object/document stores like CouchDB or AppEngine's datastore can provide inexpensive "ALTER TABLE" behavior. With these systems, outdated/unaltered rows only need to be upgraded/altered when they're fetched from the datastore. Here's a case where deferring the "ALTER TABLE" code allows us to write more flexible/dynamic programs because our data management is lazier.

Code can be too lazy though, resulting in bad caching behavior and sometimes huge memory space growth.

Any other examples of cases where laziness/demand-driven-evaluation would be a performance win?

Friday, October 10, 2008

Ten Years of Progress

"I'm afraid this is very bad. The stones tell me the boar god came from far to the west."


Hello from October 10th 2008. The Dow Jones Industrial Average closed yesterday at 8,579 which is a little bit under its close of 8,643 on March 10th 1998.

Does this mean that the global economy could have been put on hold ten years ago and life would be just the same today?
Probably not. People have to eat.

Does it mean that ten years worth of free market profit motive could have been thrown out the window, that executives could have been told to just keep 'er runnin' and life would be just the same as today?
Probably not. There have been winners and losers, and markets have adjusted for changing consumer preferences over the decade.

I don't know what it means.
But it does seem like an appropriate time to ask:
"Have we been making progress?"

I think that the answer is: Yes!

Though we may have to scale down our retirement plans, and start buying the less expensive brand of veggie burgers, our Wikipedia Content Index (WCI) just keeps growing:


And lest we ignore the importance of emerging global cute funds, think of how far we've come since 1998: a world without lolcats.