code comments edit

Wow! After posting my update to the TimedLock class entitled TimedLock Yet Again Revisited…, Ian Griffiths posts this gem which outlines a solution to one of the problem’s with my approach to keeping a stack trace.

The problem is that my code acquires a stack trace every time it acquires a lock just in case another thread fails to acquire a lock. The purpose of this action is so that we can examine the stack trace of the blocking thread to find out why we couldn’t acquire a lock. This can be a big performance cost in some situations.

Ian received the solution via an email from Marek Malowidzki. Marek, if you’re out there. I’d love to see the proof of concept code you wrote. I won’t rehash the explanation of the solution, but will mention that it avoids creating and storing a StackTrace every time a lock is acquired, and rather, finds a way to obtain the blocking thread’s stack trace if and only if another thread fails to acquire a lock. How? You have to read the Ian’s post to find out.

comments edit

fightThis weekend I nearly got into a fight while playing soccer. To give you perspective, this is a friendly co-ed game with a group of people I’ve played with for six years. Player ages range from the early twenties up to fifty something.

After a tough play, the other player (I’ll call him Bob to protect the guilty) and I got into a verbal argument. I’ve been in these shouting matches before. You yell at each other a bit making sure to look real angry. Eventually, someone else will yell “C’mon. Just play soccer!” and we’ll both agree to quit yelling and continue with the game.

But Oh No! Not this time. Bob had to go and change the rules on me. As the shouting match was in a normal bell-curve progression, he stepped toward me and shoved me hard. This shocked me. My thought process in that moment went something like this.

That a-hole just pushed me!\ Oh no he didn’t!\ No. Wait. He did.\ Now why would that moron do that? Doesn’t he realize this is a shouting not a shoving match?\ Damn, he’s pissed. He needs an anger management class.\ Come to think of it. I’m pissed too!\ He’s a good 4 to 5 inches taller than me.\ I don’t care, I should kick his ass.\ Hmmm… Then again, if I retaliate, I may not be allowed to continue playing.\ Hmmm… I’d rather play soccer than whoop Bob’s ass.

I’m a slow thinker, and by the time I reached this conclusion, there were five people between the two of us, and I hadn’t made any reaction except the look of shock on my face. He is definitely in need of an anger management class or two, but it also gave me pause to consider if I’ve been an angrier person lately. Certainly if you get me started talking about the Bush administration (and calling it an “administration” is being too kind. It’s more of a nitwit circus) I get in a furor. I certainly could have let Bob wag his finger at me without responding in an angry manner. But lately, I’ve lost all patience for fools. I do not suffer fools lightly. I’m becoming Huey from the Boondocks.

code comments edit

lock In an earlier post, I updated the TimedLock class (first introduced in this post) to allow the user to examine the stack trace of the thread that is holding the lock to an object when the TimedLock fails to obtain a lock on that object. This assumes that the blocking lock was obtained using the TimedLock. Ian Griffiths pointed out a few flaws in my implementation and I promised I would incorporate his feedback and revise the code.

Since that time, Ian revisited the TimedLock based on comments he received and changed it to be a struct in both Debug and Release versions. He adds a new Sentinel class in the debug version. The finalizer in the Sentinal is used to detect whether or not the user of the TimedLock remembered to call Dispose. I’ve incorporated his new changes as well as his comments and have released my newest TimedLock struct.

I posted the code in my TimedLock repository on GitHub.

As Ian points out, there are non-trivial costs involved in keeping track of the stack trace of every lock just in case we wish to examine it later. When I have some non-trivial free time, I’d like to examine other possibilities.

comments edit

DubyaThis interesting piece on Slate presents the idea that perhaps Bush chose “stupidity” early on as an act of rebellion and has stuck with it even after beginning to get his act together. An excerpt:

Why would someone capable of being smart choose to be stupid? To understand, you have to look at W.’s relationship with father. This filial bond involves more tension than meets the eye. Dad was away for much of his oldest son’s childhood. Little George grew up closer to his acid-tongued mother and acted out against the absent parent—through adolescent misbehavior, academic failure, dissipation, and basically not accomplishing anything at all until well into his 40s.

comments edit

The other day while at the gym, I started regaling my friend with a story about my weekend trip to San Jose. Just as my storytelling juices started to flow, he interrupts and says,

“Yeah, I know. I read it in your blog.”

“Well did I tell you that…”

“Read it.”

“How about…” I sputtered/p>

“Yep. That too.”

“Ok then. How many reps?”

Conversation over, we exercised in complete silence. I call this the “Blogging Syndrome”. It’s the increasingly common situation I find myself in where I cannot carry a conversation because the conversation is already published on my blog for the world to see. I have nothing to say that my friends haven’t already read.

Perhaps it is time to purposely disseminate misinformation on my blog both as conversation starters, and to reserve a few interesting stories for me to tell via the old fashioned oral tradiion.

No matter what happens, I know I’ll end up telling my friend.

“Hey, I just realized that we have nothing to talk about because of my blog.”

Yep, I read that.

comments edit

One day at kindergarten a teacher said to the class of 5-year- olds, I’ll give $2 to the child who can tell me who was the most famous man who ever lived.”

An Irish boy put his hand up and said, “It was St. Patrick.” The teacher said, “Sorry Sean, that’s not correct.”

Then a Scottish boy put his hand up and said, “It was St. Andrew.” The teacher replied, “I’m sorry, Hamish, that’s not right either.”

Finally, a Jewish boy raised his hand and said, “It was Jesus Christ.” The teacher said, “That’s absolutely right, Marvin, come up here and I’ll give you the $2.”

As the teacher was giving Marvin his money, she said, “You know Marvin, since you’re Jewish; I was very surprised you said Jesus Christ.”

Marvin replied, “Yeah. In my heart I knew it was Moses, but business is business…”

comments edit

Found this on Slate. It’s a funny little anecdote written from the perspective of the wife who decides to take a 48 hr vow of silence.

Have you ever wished your wife would just shut up? Here’s what happens when she does.

[Via Slate Magazine]

comments edit

I finally received an ergonomic chair at work through Workman’s comp. It’s a nice Neutral Posture brand chair with a tempurpedic seat cushion. Hopefully my back will start to calm down.

comments edit

Saw a post on the RSS Bandit newsgroup about AmphetaRate, a recommendation engine for blogs.

Having worked on a recommendation and personalization engine on a large music community site (now owned by a company with a name you would exclaim if you were to find a huge stash of gold), I think the idea of a blogging recommendation server is compelling and if done right, very useful for finding new and interesting content.

The basic premise is this, you subscribe to a Recommendations feed from the recommendation server. Then, by rating blog items via your RSS Aggregator, the recommendations get personalized to your tastes. Currently, only one aggregator supports this service (RSSOwl).

I wonder if others will think this is worthwhile to implement in RSS Bandit.

comments edit

I love this quip from Joel Spolsky’s foreward to Mike Gunderloy’s Coder to Developer.

There’s something weird about software development, some mystical quality, that makes all kinds of people think they know how to do it. I’ve worked at dotcom-type companies full of liberal arts majors with no software experience or training who nevertheless were convinced that they knew how to manage software teams and design user interfaces. This is weird, because nobody thinks they know how to remove a burst appendix, or rebuild a car engine, unless they actually know how to do it, but for some reason there are all these people floating around who think they know everything there is to know about software development.

Spot on Joel! I need to print this out and hand it to everyone on the business side of my company.

comments edit

RSS Bandit LogoThe latest version of RSS Bandit (v1.2.0.112) now includes rich support for synchronizing the state of RSS Bandit across multiple computers (such as you computers at work and home). Find out how by reading the online docs here. Click on the item “Using RSS Bandit from Multiple Computers”.

comments edit

NPR Reports that Disney is blocking its Miramax division from distributing a Michael Moore film that is critical of the Bush administration. Disney is known for its tight control over the cheery image its theme parks present to world. Unfortunately the real world is not so sanguine.

comments edit

Sorry, but it’s been a slow news day for me and I’m really tired from this weekend. Unfortunately, I will not be posting anything on my blog today. Tune in again tomorrow.

comments edit

Rock The VoteThis weekend I drove up to San Jose to hang out with Mr. Oba and his woman Cara. You can’t toss a rock there without breaking a window of some high-tech company (whoops! Sorry E-Bay). Driving to his apartment, I passed Canon, Hitachi, E-Bay, Bea, Sun, etc….

This was my first time at their apartment which is in a really nice, clean, new building. We took the dog (named “Dubya” for a walk). He was much better behaved than his namesake.

Later that night, Kyle and I drove up to San Francisco and on the way passed a slew of companies with names starting with “Net” or “Inter”. Talk about some uncreative names that violate the principle of timelessness. Sun at least does a decent job with naming. “Sun”, it’ll be a few billion years before that name is out-dated.

San Francisco At Night Our target in SF was 1015 Fulsom to see Paul Van Dyk spin. Promoters are a funny lot. They bill the event as a “Rock The Vote” benefit where a whole 1 DOLLAR! of the ticket price is donated. So how much do they charge for pre-sale tickets? $31.00 of course (where normally this would be a $30 event). They’re really giving back to the community. At least we bought pre-sales: the door cost was $50.

When PVD spins, he always has his trusty IBook (or is it a G5) macintosh handy. I got close enough to see the warm glow of the white apple on the translucent white background while he queued up an album on the decks.

Nonetheless, we had a great time despite the huge crowd and heat. After partying like rock stars till 5AM, we drove back to San Jose to crash.

comments edit

I managed to swing a deal where I pay for it now and get reimbursed later. It solves the budget and politics issue. Woohoo!!! Hope to see you all there. Be sure to say hello.

comments edit

Found this on Wired News…

Sure, news aggregators are handy tools, making Web surfing a breeze. But the programs are greedy little buggers that swamp websites with unwanted traffic. Something has to change, and soon. By Ryan Singel.

[Via Wired News]

There’s a corresponding essay in the latest Wired magazine about RSS too which I wrote about here. Dave Winer points out the same point I made which is propely written RSS Aggregators should not cause a large increase in network traffic.

comments edit


Google’s IPO is valued at $2,718,281,828. This is the value of the mathematical constant e (2.718281828…). Apparently they forgot to tack on 45 cents.

For the less mathematically inclined e is the base for the natural logarithm. It was chosen to honor Euler, one of the greatest mathematicians ever. It has the unique property such that the area of the region under the hyperbola y = 1/x from x = 1 to x = e is exactly 1.

Here’s a mnemonic to memorize the first 40 digits of e…

“We present a mnemonic to memorize a constant so exciting that Euler exclaimed: ‘!’ when first it was found, yes, loudly ‘!’. My students perhaps will compute e, use power or Taylor series, an easy summation formula, obvious, clear, elegant!”

comments edit

Wired Magazine May 2004 I just finished reading an essay in the latest edition of Wired by Gary Wolf entitled “The Return Of Push!” discussing whether or not RSS will realize his prediction made seven years ago. His prediction in Wired 5.03 was that web browsers were about to become obsolete due to push technologies such as PointCast.

Instead, browsers flourished while PointCast whithered. In the essay, he mentions a point that Meg Hourihan, cofounder of Pyra Labs (think Blogger), makes that RSS depends on a “polling” system which she feels is inadequate.

Can you imagine 1 million news readers all checking 300-plus sites every 15 minutes? Or even every hour? It’s no horribly inneficient.

She hopes to see some sort of peer-to-peer solution.

At the moment (and perhaps due to ignorance), I’m skeptical that this is a serious problem for several reasons: 1. It is unlikely that these millions of aggregators will all hit the same site at the same time. The traffic patterns are more predictable and steady than what one sees when a news story breaks on a news site. 2. Many RSS aggregators such as RSS Bandit and web sites implement conditional GET requests so that new content is only downloaded when there’s something new to get. 3. The actual RSS feed is something that is very static in the sense that it is updated rarely and there’s no need to dynamically personalize the content (in general). Thus, it is possible for blogging tools to generate a static RSS file after updates. Static files are served quite efficiently by a web server.

Having said that, the idea of merging P2P with something like RSS Bandit is intriguing. I’m about to throw out some crazy ideas here. The good ones are the result of my evil genius, and the bad ones are due to the muscle relaxants I’m on and the late hour.

If the polling system truly becomes inefficient, perhaps a technology like BitTorrent can be incorporated. In such a situation, I wouldn’t necessarily get feed updates from the source, but rather get it from a P2P network.

In terms of improving the social networking aspects, how about tighter integration with blogging tools. For example, in a very narcissistic fashion, I subscribe to my own feed. Suppose I could configure RSS Bandit with my user name and password to my .TEXT blog so that when someone posts a comment on my blog via RSS Bandit, our aggregators would make a P2P connection and the comment would appear as an IM within RSS Bandit (or MSN Messenger… who knows?). Then I could reply to the comment immediately and the ensuing conversation might appear in the comments section of the blog.

Perhaps when I first get online, RSS Bandit would give my own blog special treatment so that I can automatically see all new comments on my own blog.