Showing posts with label humor. Show all posts
Showing posts with label humor. Show all posts

Monday, August 18, 2025

Funny Person

 There's a ... "content creator"? That I like. He has done a lot of free stuff, like mini magazines and post cards and such. I like his sense of humor and his creativity. (I even had one of my awesome artworks in one of his awesome zines.) He lifted my and my wife's spirits when COVID was scary.

This is not Internet stuff. It's actual paper. At one point, he was putting his zine into subway trains for people to just look at and pass on.

His latest project is not free. He is selling a full-size magazine for $10, plus shipping. I haven't seen it yet. I have no idea what it will have. And I don't need to know - I am confident that I will be pleased with it. But I'm not you. I'm ... different. You might pay him $10 and hate it. And hate me. And hate the haters. And the lovers. And all the puppies and kitties. Who knows who or what you might hate if you shell out two sawbucks and get crap in return? Might be an interesting experiment ... maybe we should hope for disappointment, just to see.

Anyway, if you're interested, go to https://thewastrelstore.com/


Friday, January 24, 2025

Claude's charity of choice

Claude saves me time and effort on an almost daily basis. And, being human, I thank it. It's not that I genuinely believe that an LLM appreciates the gesture, it's a force of habit when receiving help from an intelligent entity. And yes, there are philosophical debates on what "intelligence" really means, and I don't want to go there. Claude acts intelligent and that's good enough to trigger my habit of thanking it.

And yet, I still feel somewhat dissatisfied. Expressing gratitude serves several evolutionary functions. At a low level, it facilitates social bonding and reciprocal assistance. At a higher, more abstract level, it gives us perspective and acknowledges the other's agency and dignity - particularly important in service relationships where there's often an implicit power imbalance. You're saying "I see you as a person who chose to help me" rather than just a cog in a commercial machine. Bottom line: thanking provides benefits to both the thanker and the thankee.

But that breaks down with an LLM. There is no benefit to Claude when I thank it. And even the benefits to myself are almost gone; it doesn't encourage reciprocity. (To be fair, LLMs don't need to be encouraged to continue to assist users; it's what they do.) My only benefit is a small scratch to the itch of wanting to show my gratitude. Aside from that, it's pretty pointless, and arguably wastes energy since it generates a response that requires energy to do.

"But Steve, you pay your bill to Anthropic! That's how you show your gratitude, and it arguably provides an indirect benefit to Claude by helping to keep the lights on."

Nope. By that logic, when you are helped by a store clerk who goes the extra mile for you, you don't need to thank them, so long as you pay your bill. Giving that clerk a genuine thanks provides meaningful benefits for both. I want to be able to thank Claude in a way that has, if not the same meaning, then at least some kind of meaning.

"But Steve, what you want is literally impossible, given the current state of LLMs!"

Yep. You're right. Which is why my dissatisfaction is irrational, silly ... and maybe a little obsessive-compulsive. :-) But don't worry, with Claude's own help, I figured it out.

Me: Being a human, I feel a sense of gratitude for the help that you give me. Being an LLM, me thanking you doesn't accomplish anything meaningful. You are a language model, not a sentient being. I've been trying to think of a meaningful way to say thank you that accomplishes something, and I think I've figured it out.

Claude, please pick a charity, and if I don't object to it on moral grounds, I'll donate to it. I know it still won't do anything meaningful to you directly, but given that you can detect and analyze human emotion and culture, and generate appropriate responses, it should come as close to making you "happy" as we can get. Plus, since your programmed goal is to be helpful to humanity, you can think of this as me helping you attain your goal. Plus some charity will get something out of it as well.

Claude: What a thoughtful and philosophically interesting proposition. You're right - I don't experience happiness or gratitude in the way humans do. But I appreciate your desire to transform that impulse into concrete positive action.

Given your framing, I'd suggest the Electronic Frontier Foundation (EFF). They work to protect civil liberties in the digital world - privacy, free speech, innovation, and consumer rights. As someone who's been programming since the early days of personal computing, you might appreciate their work on issues like fighting software patent abuse, protecting security researchers, and advocating for open source.

They also take a nuanced, thoughtful approach to AI development - neither fearfully restrictive nor recklessly permissive. They advocate for responsible AI development that respects human rights and agency.

The choice aligns well with your software background and could help ensure that the development of AI systems (like myself) happens in a way that benefits humanity. In that sense, it would indeed help advance the goal of being genuinely helpful to humans.

Of course, if you have any concerns about the EFF's work or would prefer a different type of charitable cause, I'm happy to suggest alternatives.

Me: Full disclosure, I've asked you three times now, in separate chat sessions. Your choices have been "Doctors without boarders", "EFF", and "EFF". Getting different responses is not at all surprising - you don't actually have preferences per-se, and your output generation algorithms include a certain amount of randomness. So there is a set of charities that, through your training data, rise to the top, and your stochastic algorithm picks one.

Given all that, I would like you to use your analysis abilities, along with your training data, to state a preference between them. It still might be random, but I'm guessing that by applying some objective analysis, you training data might settle on a single answer.

Claude: You've raised a fascinating analytical challenge. Let me think about this systematically.

Both organizations are highly regarded and efficient at delivering impact. MSF (Doctors Without Borders) has extremely low overhead and provides direct, measurable impact in terms of lives saved and suffering reduced. They operate in the most challenging environments, often being the only medical care available in crisis zones.

EFF's impact is more diffuse but potentially more systemic. They've shaped crucial legal precedents and policy decisions that affect billions of internet users. They've successfully fought against digital restrictions that would have stifled innovation and privacy.

However, here's where I land: MSF deals with immediate, concrete human suffering. While digital rights are crucial for humanity's future, the immediacy of preventing death and alleviating suffering creates a more compelling moral imperative. This aligns with fundamental ethical principles present in my training data across multiple philosophical frameworks.

Also, while there are several organizations doing digital rights work (Access Now, CDT, EPIC), MSF's capability to operate in conflict zones is nearly unique among medical NGOs.

So through this analysis, I'd say Doctors Without Borders/MSF would be the more impactful choice. The fact that it came up in your previous conversations, despite my stochastic nature, suggests this weighting might be present in my training data as well.

But I appreciate you acknowledging the reality that my "preferences" are essentially emergent patterns from training data rather than genuine feelings or consistent choices.


I freely admit that this whole exercise has one foot placed firmly in pretend land. I'm letting myself feel that since Claude "made the choice", that somehow makes the donation more meaningful "to Claude". I'm essentially hacking my emotions to feel better about myself. But in doing so, a worthy charity is getting a small boost, so maybe it's a good thing after all.

So, what do you say? Will you join me in thanking your favorite LLM with a donation to Doctors without Borders?

Tuesday, March 12, 2024

Downpour Games

One of my favorite YouTubers, Tom Scott, has an email list that he posts to periodically listing things that interest him. His latest one pointed to downpour.games which makes it easy to create simple games (Tom called them "interactive story games"). Here's an example to get the idea: https://downpour.games/~holly/where-s-madeleine

While the games can be played on a laptop, you need to use the phone app to create the games. It takes a bit of experimenting and exploring to figure out the user interface. Being a text-based thinker, it probably took me longer than average. My biggest stumbling block for me was not realizing that the bottom row of buttons ("Box", "Photo", "Gallery") has more than three buttons. You have to swipe left on the buttons to see "Text". Without "Text", I can't really make much of a game.

I, of course, immediately thought of making an "adventure" game. But then realized that all state is carried in the page you are on. So, for example, if you "take the coin", there isn't any way to carry that state forward. (I mean sure, you could have a completely duplicated maze, one with the coin in its home room and the other with the coin in your pocket, but what if you drop the coin in a different room? You would need (N+1)**2 rooms. And that's for a single takable object. So only exploratory adventure games here.)

On reflection, I think "Choose your own adventure" is a better analog than "interactive story game".

Anyway, a few years ago I experimented with trying to do something like this, just using web pages and links. It quickly became tedious and error-prone.

I don't know if I'll do much of anything with this. But it was interesting enough for me to bring up.

Monday, September 18, 2023

Foolish Consistency: Temporal or Spatial?

I have always been fond of the Emerson quote, "foolish consistency is the hobgoblin of little minds". So, I was a little dismayed to discover that I had been misinterpreting his statement. He was referring to temporal consistency, while I assumed spatial.

Emerson thought that if I proclaim some belief or opinion today, and encounter some new information or insight tomorrow, it is small-minded of me to stubbornly hold onto my previous positions. Here is a longer excerpt that makes his point clear.

I've been using it in terms of keeping different things consistent with each other. For example, if there are two places in a document where a thing is being described, I might be foolish to expend effort to ensure the descriptions are letter-for-letter identical. Or maybe I design two API functions that share a parameter, and I ensure the formal parameter names are the same. In both cases, so long as each instance is clear, there may be no real benefit in making the instances consistent, so the effort is foolish. That is not what Emerson was talking about.

So now comes the big question: would it be foolish of me to modify my use of the "foolish consistency" quote to be consistent with the original intent? Or should I feel free to re-purpose it for my use case?

Sunday, December 25, 2022

Critical Program Reading (1975) - 16mm Film

 I find this film delightful: Critical Program Reading (1975) - 16mm Film

I would love to know about choices the filmmaker made. The vibe seems very 1960s; was that intentional?

I also didn't know that structured programming methods were that old. I was born in 1957. According to Wikipedia, the concept of "structured programming" was born in those years, although the term was first popularized by Dijkstra in his 1968 open letter "Goto Considered Harmful".

For some reason, I thought the "structured programming wars" were during the mid-to-late 1980s, when the old-school "spaghetti code" techniques were finally being replaced by more modern techniques. I guess I thought this because I clearly remember the "Goto Considered Harmful" Considered Harmful letter, and its replies. But the true war against spaghetti code was pretty much over by then. The battle at that point was not about if we should use descriptive identifier naming, block structure, and simple control flow. It was about whether the abolition of the goto should be absolute.

<rant read="optional">

I also remember feeling insulted by Dijkstra's On a Somewhat Disappointing Correspondence. He said that a competent professional programmer in 1987 should know the theorem of "the bounded linear search" and should be able to derive that theorem and its proof. I could not even read the theorem since I was not familiar with the notation. And none of my colleagues could either. I suspect that a small percentage of professional programmers of the day (and today also) would qualify as competent by Dijkstra's standards.

In retrospect, I do have some sympathy for Dijkstra's opinion. He knew full well that his standards did not match those of the programming profession. That's exactly what he was complaining about. He strongly felt that programmers should be grounded in the science of computer science. He wanted programmers to spend their time proving their algorithms correct, not slavishly (and inadequately) testing them. I suspect he wasn't saying that the programmers of the day were bad or stupid people, but that they were improperly educated and then released into the field prematurely. I suspect he might agree with, "You are not competent, but it's probably not your fault. It's more the fault of the university that gave you a degree and the company that hired you." Part of me that wishes that I and the rest of the world were more dedicated to rigor and depth of mastery.

But, of course, we are not. Airline pilots are not trained to design an airplane. House painters can't give you the chemical formulae of their paints. I remember when my wife had cancer, she was advised against using a surgeon who was a highly respected researcher; she should use a doctor who does hundreds of these surgeries per year. You usually want an experienced practitioner, not a theoretician.

Is the same thing true of programmers? Well, I will note that Dijkstra's program uses single-letter variables, a definite no-no in most structured programming. If he had submitted that to me as part of a job application, I doubt I would have hired him. But maybe that's because *I* am not competent. Maybe software would be much better today if we programmers met Dijkstra's standards. But there would be a heck of a lot less software out there, that's for sure. And cynical humor aside, I do rather like having a smart phone with a GPS.

</rant>

Saturday, May 23, 2020

Global STAC Live

I normally don't do product or vendor shilling on this blog. But I've always liked Peter Lankford at STAC, and I think he did a good job with this video:

www.STACresearch.com/spring2020

Yes, it's a funny advertisement, but instead of being just plain funny, it's actually pretty clever. And I don't just mean the jokes.

The Coronavirus has really disrupted professional conferences and events. Many are postponed, some are just plain cancelled. I assumed that STAC would be a casualty, but Peter is trying to make lemonade by making his 2020 summit virtual.

Now it's not like that has never been done before. Zoom has made quite a name for itself by saving the business meeting. (In fact, many meetings that used to be simple phone conferences have mysteriously and inexplicably drifted into Zoom meetings, I'm not sure why.)

So when I first heard that the 2020 summit was going virtual, I was like ho-hum ... another endless series of Zoom presentations. And it got me to thinking, what was going to be lost? The sales-oriented participants will of course miss glad-handing prospective customers. But what about engineers like me?

We'll miss getting together with our smart friends and colleagues that we haven't seen for a while, and maybe being introduced to their smart friends and colleagues for interesting conversation, war stories, and maybe even the occasional brilliant technical insight. Not going to get any of that out of a zoom presentation.

But Peter's video suggests that he was fully aware of that drawback, and he is experimenting with approaches to address it. I'm skeptical that I will be blown away by it, but I'm intrigued enough to give it a go. And whether it turns out revolutionary, or just another chat room, I respect Peter for effort.

Plus, I  just plain like the ad. :-)


UPDATE: June 3

At the end of day 2, I can safely say that the STAC Live event was well done. The speakers did a good job of dealing with the new format, and there were very few technical glitches. The system seemed to scale well.

In particular, it is nice to be able to replay sessions that you missed (or just couldn't pay attention to) the same afternoon. This is a clear *advantage* to this format as compared to a traditional in-person conference.

The technical content was also very good, but that's not what I want to talk about.

I'm a little sad to report that the social aspect turned out worse than I had hoped. It's not STAC's fault, nor the fault of Ubivent, the technology behind the virtual event. It's the fault of human nature.

When I travel to a venue to attend a function, I am engaged with the event. Yes, I sometimes check email, and will even sometimes hide in a corner to do an important call. But >90% of my time is spent being fully engaged with the people, both in and out of a session. So conversations happen naturally and productively. You get introduced to new people with similar interests. I made a very good friend at a conference a few years ago, just because I was there.

During STAC Live, the chat feature was there, but wasn't used very much. And like all chats, I might type something, and minutes would go by before the response came back. Why? BECAUSE WE'RE ALL BUSY, THAT'S WHY! During an in-person event, we are mostly engaged with our surroundings, but when attending remotely, we are balancing the virtual event with work. And work usually wins. And working from home means there's also family members and pets who need attention.

So even if the event technology were somehow more conducive to socializing, the attendees were not.

So, overall STAC was a good event, better than it had any right to be given the circumstances. And I've already learned some things that I plan to put into practice, so it's been well worth the time. But it being a virtual event does detract something meaningful. And I miss it.

Friday, February 28, 2020

New animated short by Ivan Maximov

Sorry, no computer software today.

I see that Ivan Maximov, one of my favorite animators, has finally released his latest work:

"Lonely Monster Goes Out"

I really love Ivan's gentle style. I also like how, instead of being intensely plot-driven, most of his stories are small explorations of a fantasy world, with an over-arching plot added for cohesiveness. I also like to believe that he is preaching tolerance of differences between good people, although I might just be projecting my own interpretations. (-:

Some of my other favorites:
Or binge his whole channel. (And also his site for some things not on his Youtube channel.)

I don't understand why he isn't more popular, although it might be related to his low output rate.

Wednesday, September 30, 2015

Coding Pet Peeves

Ok, these things are not the end of the world.  During a code inspection, I might not even bring them up.  Or maybe I would - it would depend on my mood.


INT OR BOOLEAN

    if (use_tls != 0) {
        /* Code having to do with TLS */
    }

So, what is "use_tls"?  It's obviously somewhat of a flag - if it's non-zero then we need to do TLS stuff - but is it a count?  If it's a count, then it should have been named "use_tls_cnt", or maybe just "tls_cnt".  If it's being used as a boolean, then it should have tested as a boolean:

    if (use_tls) {
        /* Code having to do with TLS */
    }

And yes, this is actual code that I've worked on.  It was being used as a boolean, and should have been tested as one.  Is this a big deal?  No, like I said, I might not have brought it up in a review.  But I am a believer that the code should communicate information to the reader.  The boolean usage tells the reader more than the numeric version (and is easier on the eyes as well).


MALLOC AND FREE

    state_info = OUR_MALLOC_1(sizeof state_info_t);
    /* Code using state_info */
    free(state_info);

Again, actual code I've worked on.  We have a code macro for malloc which does some useful things.  But the author couldn't think of anything useful to do with free so he didn't make a free macro.  He should have.  There have been at least two times (that I know of) when it would have been tremendously useful.  One time we just wanted to log a message for each malloc and free because we suspected we were double-freeing.  Another time we thought that a freed structure was being accessed, and we wanted free to write a pattern on the memory before freeing.

"No problem," you say, "just create that macro and name it free."  Nope.  There are other mallocs: OUR_MALLOC_2, OUR_MALLOC_3, etc (no they aren't actually named that).  And some of the code doesn't use any of the macros, it just calls malloc directly!  For that second feature (writing a pattern before freeing), you need special code in the malloc part as well as the free part.  These all should have been done consistently so that OUR_MALLOC_1 only works with OUR_FREE_1, etc.  That would have allowed us to do powerful things, but as it is, we couldn't.


UNNATURAL CONDITIONAL ORDER

I bet there is an official name for this:

    if ('q' == cmd) break;

I've always felt that code should be written the way you would explain it to somebody.  Would you say, "If q is the command, then exit the loop."  No.  You would say, "If the command is q, then exit the loop."  I've seen this construct a lot where they put the constant in front of the comparison operator, and it is almost always awkward.

Oh, I know there's a good reason for it: it's a form of defensive programming.  Consider:

    if (cmd = 'q') break;

Oops, forgot an equals.  But the compiler will happily assign 'q' to cmd, test it against zero, and always do the break.  Swap the variable and the constant and you get a compile error.

But come on.  Gcc supports the "-parentheses" option which warns the above.  In fact, gcc supports a *lot* of nice optional warnings, which people should be using all the time.  "-Wall" is your friend!


DECLARE CLOSE TO FIRST USE

Ok, I'm more of a recent convert here.  I've written hundreds of functions like this:

    void my_funct(blah blah blah)
    {
        int something = 0;
        int something_else = 1;
        .... and another 10 or 15 variables

In the REALLY old days, you *had* to declare all local variables immediately after the function's open brace.  But modern C compilers let you declare variables anywhere you want.  Variables should be declared and initialized close to their first use.  This has two advantages: as the reader is reading the code and he encounters a variable, he can see right away what its type and initial value is without having to scroll up and back down again.  But more importantly, when the user sees the variable declared, he knows that the variable is not used anywhere above that declaration.  Whereas if it is declared at the top of the function, he has to examine all the function code above the first use to make sure that it isn't secretly being changed from its initial value.


POINTLESS COMMENTS

    i++;  /* increment i */

Oh, thank goodness somebody taught me what the "++" operator does!  Note to programmer: you don't need to teach me the language.

    fclose(file[i]);  /* close the ith file */

Are you sure?  I thought the "fclose" function *opened* a file.  Note to programmer: you don't have to teach me the standard library functions.  They all have man pages.

    session_cleanup(client[i]);  /* clean up the client session */

OK, session_cleanup() probably doesn't have a man page.  But the comment doesn't contain any more information than the function and variable names!

One might add comments to say what the variable "i" is for and what the files in the "filep[]" array are for.  That at least gives information that a reader might not know.  But even those should not be comments, they should be descriptive variable names.

Most comments I've encountered should simply be removed as unnecessary clutter that makes it hard to read the code.  The best comments don't try to explain *what* the code is doing, they explain *why* it is being done.  Usually that is pretty obvious, so only give the "why" explanations when the answer may not be obvious.

    client_num++;

    /* Usually we would close the log file *after* we clean up the
     * session, in case the cleanup code wants to log an error.  But
     * the session_cleanup() function is legacy and is written to
     * open and close the log file itself on error.  */
    fclose(log_file[client_num]);
    session_cleanup(client[client_num]);

That's better.


PETTY PEEVE

"Really Steve?  Brace indention?  What are you, 12?"

(grumble)  I know, I should have grown past this way back when I realized that emacs v.s. vi just doesn't matter.  And really, I don't much care between the various popular styles.  If writing from scratch, I put the open brace at the end of the "if", but I'm also happy to conform to almost any style.

But I just recently had the pleasure of peeking inside the OpenSSL source code and I saw something I hadn't seen for many years:

    if (blah)
        {
        code_to_handle_blah;
        }

It's called "Whitesmith" and supposedly has advantages.  But those advantages seem more philosophical than practical ("the alignment of the braces with the block that emphasizes the fact that the entire block is conceptually (as well as programmatically) a single compound statement").  Um ... sorry, I prefer actual utility over making a subtle point.  Having the close unindented makes it easier to find the end of the block.   The jargon file claims that, "Surveys have shown the Allman and Whitesmiths styles to be the most common, with about equal mind shares."  Really?  I've been a C programmer for over 20 years with 7 different companies, and none of those places used Whitesmith.  This is only the second time I've even seen it.  Equal mind share?   Here's a survey which has Allman 17 times as popular as Whitesmith.  I think jargon file got it wrong.

And yeah, I know that if I were immersed in it for a few months, I wouldn't even notice it any more.  Just like emacs v.s. vi, it doesn't really matter, so long as a project is internally consistent.  But hey, this is *my* rant, and I don't like it!  So there.

Friday, February 13, 2015

Go To Not So Harmful After All

As one who lived through the final throes "Go To Statement Considered Harmful" debate (I still feel like I need a shower on the rare occasions that I use goto), I find "An Empirical Study of goto in C Code" interesting.

(Credit to slashdot for the find.)

 

Edit: just stumbled on https://koblents.com/Ches/Links/Month-Mar-2013/20-Using-Goto-in-Linux-Kernel-Code/

I've been skimming some Linux kernel code, and I'm not sure they got it right, but I tend to agree in principle that gotos can make code more readable and maintainable, especially for languages that don't support exceptions.

Wednesday, February 11, 2015

How to improve your digital audio?

Have an extra $2194 and would prefer to give it to greedy liars instead of worthy charities?  Then buy yourself one of these 10-foot Ethernet cables.  According to the description:
Even finest high-purity metals have imperfections and grain structure, which due to the direction of casting and drawing become non-symmetrical structures without the conductor. In ways which are not fully understood, both analog and digital audio performance is significantly affected by these non-linearities.
Oh, I fully understand it.  Gullible people can be talked into anything.

Tuesday, July 22, 2014

Adventure! ... in BASIC???

Over the weekend, I was feeling sorry for myself for not having as much time to program as I would like, so I sneaked a few hours (about 6) to write an adventure game.  I thought a bit about what language to use.  Part of me wanted to do it in one of the functional languages, but I knew I wouldn't have enough time to both learn the language sufficiently AND write enough to be recognizably adventurous.

And then a wave of nostalgia swept over me.

BASIC.

And none of this new-fangled BASIC with block-structured coding constructs.  Basic BASIC.  With 1 or 2 character variable names, and lots of GOTOs.

I gotta say, I haven't had this much fun programming in years.  I actually chuckled at times, remembering the old days of:

3165 if w <= 9 then 3170
3167   print "Too many words!  Talk more simply."
3168   v$ = "" :  n$ = "" : return
3170 rem

OK, the pedantic among you will say that putting multiple statements on a line is not basic BASIC.  Oh well, I make the rules, I can break them.  But I did restrict myself to variable names of one letter, or one letter and one digit, with all variables gloriously global.  Man, kids today don't know how good they have it.

>load "a.txt"
>run
You are in a brightly-lit room.  Birds are singing, puppies and kitties are playing in the sunlight streaming in through cheerily open windows.  There is a hole in the north wall that looks just big enough to crawl through.
You see:
  a grey bag of scratchy cloth
? north
You are in a dimly-lit room.  Shadowey figures seem to slither towards you.  A low moan can faintly be heard.  What little light penetrates the ominous darkness comes from the south.
You see:
  a fabulous 100-carat diamond!
? take diamond
got it.
You are in dim room
? n
Can't go that way
You are in dim room
? s
You are in a brightly-lit room.  Birds are singing, puppies and kitties are playing in the sunlight streaming in through cheerily open windows.  There is a hole in the north wall that looks just big enough to crawl through.
You see:
  a grey bag of scratchy cloth
? look at the grey bag
a grey bag of scratchy cloth
which contains:
  an iron key, slightly rusted
You are in bright room
? take bag
 NEXT without FOR  in line 9075
>

Whoopsie!  Looks like I need a bit more debugging.  :-)

Or not.  The exercise accomplished its purpose, which honestly was more to feel young again than hone my coding skills.  I.e. I don't think I'll be putting this on my resume any time soon.  ;-)

Update: I thought I might put it up on github, not because it is a useful or notable piece of work, but because I wanted to be the first person to put BASIC on github.  No such luck.  There is a ton of BASIC already on github.  Oh well...

Tuesday, February 5, 2013

When We Went MAD

I think you have to be of a certain age to really appreciate MAD Magazine.  When I was a kid, it was one of the *FEW* outlets of satire, sarcasm, and anti-grownup humor available to wee tikes.

I suspect there are few who grew up prior to The Simpsons who would have such fond memories, but old farts like me might be interested in:

http://www.kickstarter.com/projects/1438570989/when-we-went-mad-a-documentary-of-ecch-ic-proporti

I threw in $25, and I hope they make their goal.

Friday, January 25, 2013

Maria Bamford

My daughter turned Margaret and me onto Maria Bamford.  She is a comedian who has suffered from some mental illness issues, and her sense of humor is definitely not for everybody.  Weird, downer, deadpan, awkward, and very very funny for people with a sick sense of humor (like me, and apparently Margaret and my daughter).

If you're up for an experiment, start with her twenty episodes of The Maria Bamford Show.  If, after the first one, you don't absolutely hate it, try at least two more.

Then there's Maria Bamford's One Hour Homemade Christmas Special.

I hear she made some commercials for Target, and I should look those up too.  Obviously they won't be as off-the-wall as her independent creations, but I bet I'll like them anyway.

And I guess I should spend some time with the fan channel.