Permalink stands for ‘permanent link’. When you create a blog post, it gets added to the top of your blog, pushing older entries down. Eventually, posts get pushed off the front page, so it’s important that you have a way to refer to old blog posts. A permalink is the link that will always point to a specific post.
OpenACS (lars-blogger) permalinks look like this:
http://kurup.org/blog/one-entry?entry_id=58950
This works and it’s really easy to code, but it doesn’t give much information about the content or date of the post.
A lot of other blog packages use permalinks which look like this:
http://kurup.org/blog/2006/03/01/tag-cloud
It’s easy to tell how old the post is, and what it might be about. More importantly, it seems that search engines give URLs like this more weight. So, I’ve gone ahead and made the changes on my blog. Enjoy!
For the OpenACS geeks, here’s the changes that I made. It won’t necessarily apply cleanly against OpenACS, but it will give you an idea of what to change. It includes an automated test to assure you that both the old and new permalinks work.
Google just launched it’s new financial website, finance.google.com. It combines a lot of information in 1 page and the adjustable graph at the top of a stock’s page is just WAY cool. You can focus in on any period of time and see news & reports from that period. They’ve also added blog posts as a news source.
It’s the ideal place to get a quick snapshot of a stock. Lots of information in a very quick-loading page. The major missing item is dividend information. Hopefully it will be there soon.
It was cold out there today. I was wearing a long sleeve shirt, long pants, a headband and gloves, and I was still cold. I doubted whether I’d be able to break 2 hours, like I’d hoped. A mile into the race I was sure I wouldn’t be able to do it. It felt like I was just running in place. As usual though, I eventually warmed up and felt pretty good.
I planned to take the first 5 miles real easy and I came through in 47:28. Not bad. I wanted to do the next 5 miles in 45 minutes. I came through in 45:41. Not bad. Finally, I wanted to really pick it up the last 5K (3.1 miles). I came through in 26:43, about 8:30 pace. Again, not bad. The last 3 miles seemed like it was all hills. Even the finish was on a hill! I finally saw the finish line, checked my watch and saw 1:59:13, and promptly took off like a crazy person.
Final tally: 1:59:52!
This is the first time I ran Brooklyn and I really liked it. We started on the boardwalk at Coney Island and ran along the beach for about 3 miles. Then, there was a long straight road stretch for about 5-6 miles and we finally finished with a few loops inside Prospect Park. They just need to flatten out some of those hills…
Half marathons this year:
- Jan 28: 2:21:30 (10:48 pace) Manhattan
- Mar 18: 1:59:52 (9:09 pace) Brooklyn
Scheduled:
- Jul 9: Bronx
- Aug 27: New York City
- Oct 1: Grete’s Gallop
- Oct 15: Staten Island
Read more race reports at Derek Rose’s blog.
The scripting language used in most of OpenACS is Tcl. It doesn’t receive a lot of press. When people talk about scripting languages, they mean Perl or Python (and now Ruby). Tcl is not considered in the same category, but it should be. I’m not smart enough to explain why, but Salvatore Sanfilippo is and has written a gentle introduction to both the basic and powerful features of Tcl.
And now I have a pretty tag cloud on the side of my blog (that I pretty much stole from del.icio.us)
I’m finally getting around to moving my blog into the Web 1.5 world. (2.0 minus javascript). I scrapped the categories system and created a super-simple tags package. So, now I can tag posts and technorati can find them. OpenACS barely lights up on technorati. Compare RubyOnRails (20 mentions per day) with OpenACS (1 mention in the past month!). I know Rails is popular, but is OpenACS completely dead? I don’t think so.
Cobra Electronics (COBR) annouced quarterly results on Thursday. Revenue was up a little. Net income was up a lot, but mostly due to one time events. The market wasn’t impressed and the stock fell 8%. Day to day price changes don’t worry me, so that’s not what I’m writing about. I mentioned back in July that I was concerned about the cash hoard that Cobra was amassing. Specifically I said:
Cash is up. You’d think this would be a good thing, but whenever a company starts piling up cash, they start talking about … acquisitions. Management wants to take advantage of their current distribution channels with a new product. They don’t think there is much room for internal growth. Acquisitions are troublesome, because they’re difficult to do properly and because there’s so much management incentive to do them. In addition, it’s difficult for the outside investor to see how an acquisition is really doing. I’d rather see them doing a dividend or a buyback and focusing on internal growth.
I’m happy to report that Cobra has not done any acquisitions and much to my surprise has actually instituted a dividend of 16 cents per share. Woo Hoo! Is someone on the Board reading my blog? This dividend will still leave them with a lot of cash, and they are still talking about searching for acquisitions, but the fact that they’ve sat on 6+ million in cash without doing anything yet tells me that they are being careful about finding the right acquisition.
Sorry for two posts about Gladwell in one day, but I just found out that Gladwell has started a blog. Looks like he started the day after his Columbia speech which is interesting because he put some blame on the internet for our society’s bias towards Picasso. Maybe he’s trying to test his theories :-)
Gladwell is one of most interesting writers I have read and is as adept a speaker as he is a writer. It’s funny though. If you were to grade his speaking based on some well accepted criteria, you’d say he was a poor speaker. He says “Ummm” and other interjections a lot. He goes off on tangents. There were times where he lost a word and he seemed stuck for a few seconds. He didn’t know the nitty gritty details of everything he talked about. At one point he was giving an example (during a tangent) and he couldn’t remember the name of the guy who Cheney shot, so he made up a name.
But he’s a great speaker because he tells stories very very well. He has a point that he wants passionately to get across. Finally, it’s obvious that he’s deeply thought about what he’s talking about. As a listener, you ignore the conventional shortcomings because you’re immersed in his story and you want to understand what he does. I thoroughly enjoyed his presentation and I’m subscribed to his blog.
We saw Malcolm Gladwell talk at Columbia on Tuesday. He’s the author of Blink and The Tipping Point and he’s a staff writer at the New Yorker. He spoke about different types of genius. I’ve tried to recreate his main points from memory, so I apologize in advance if I’ve remembered things incorrectly.
His talk was about the artists Picasso and Cézanne. An economist named David Galenson did an analysis of the market value of paintings of these great artists and concluded that they represented two distinct types of genius. Picasso did his greatest work in his youth and then not much of worth after that, while Cézanne did little or nothing in his youth and then produced amazing things in his fifties and sixties. He looked at other painters and they also seemed to fit into these two distinct groups - the young prodigy and old late-bloomer. Not only can they be differentiated by their ages, but also by their styles. The Picasso’s have a clear direct vision that they can explain to you before they start painting. They are conceptual. They know exactly what they want their art to convey and they can execute that vision. Cézanne’s can’t tell you how they work or what they’re trying to convey. If you follow their work over time, you don’t see a clear thread, but rather a hodgepodge of experiments, one of which eventually works and propels them to fame. These quotes seem to delineate the difference.
I seek in painting.
– Paul Cézanne
I don’t seek; I find.
– Pablo Picasso
Gladwell discussed Galenson’s research into this phenomenon and expands it into other creative areas, bringing out some other entertaining comparisons.
Picasso | Cézanne |
The Eagles | Fleetwood Mac |
Apple | Dell |
GM/Ford | Toyota/Honda |
Orson Welles | Alfred Hitchcock |
(I can't remember his example here) | Mark Twain |
Some of the examples were a bit contrived and the idea that all genius fits into two categories is simplistic, but Gladwell went on to make some interesting observations. The Cézanne examples blow away the myth that all genius happens in youth. That point alone satisfied me since it allows me to explain why I haven’t become famous yet. There is a separate type of creative process that seems to benefit from, or even require, long hard experimentation. Gladwell’s thesis is that our society is biased to favor the Picasso type genius and that the Cézanne type will no longer be able to flourish. Both, he asserts, are valuable to society.
Take pharmaceutical development, he says. In the old days (or even in the present day), drug development was trial and error. You’d run a bunch of compounds against a disease and see what worked. Explaining why it worked is left as a postscript, sometimes never to be answered. He mentions that to this day we don’t truly understand why Tylenol works, yet it clearly has helped millions of people. In the future, and in some cases today, we’ll be able to identify specific genes which are responsible for a disease. Targeting those genes will treat the disease. If two entreprenuers ask you for money and one says he’s got a specific gene that he can target while the other says he’s got some smart scientists who are going to create a bunch of compounds and hope for the best, most people would be more willing to fund the first startup. But, if all of our society is aimed that way, then we’ll miss out on some important breakthroughs, that only a Cézanne-type effort would find.
It’s a very interesting thesis, but I’d be concerned about solutions that purported to give support to pre-Cézanne’s in the hope that a Cézanne would develop. What if a major ingredient in the development of a Cézanne is the struggle. The persistence despite failure. The ability to maintain passion over long periods of time. The ability to delay gratification, to be forced to experiment. What if we had made Cézanne comfortably wealthy in his youth. Would he have continued on his path to greatness? Would his later work have been as remarkable?
Without question, there is a bias towards Picasso in our society. It’s basically a bias towards short term results. I’m just not sure its much different than it was historically, nor that providing support to find/grow Cézanne’s would be beneficial. It might actually be harmful.
Here are some great links that I found along the way. Thanks to Gladwell for such a stimulating presentation (and to the Columbia Arts Initiative for presenting it free!)
No one but me noticed, I’m sure, but my website was down for part of yesterday. Don’t worry, refunds to paying customers are on their way :-)
What happened? I was doing my regular debian apt-get upgrade
and the reverse proxy that I use, pound, got updated. The upgrade was a pretty significant one. Pound 2.0 changed the way that it expects configuration files to be formatted. Unfortunately, the Debian update didn’t mention this, so the new version of pound tried to read my old config file, got confused and shut down. Without a reverse proxy, there’s no way to get to my site from the outside.
I thought it would be simple to rewrite the config file to match the new format, but it took longer than I expected. Most of the changes were easy. The new format requires string parameters to be enclosed in double-quotes. Some of the parameters which used to be global (like ExtendedHTTP and WebDAV) were renamed and moved into non-global sections. There were a few other minor changes which make the config file easier to understand.
Unfortunately, fixing all of that still didn’t get Pound working. There were still 2 problems. First was that the internal port number was being shown to the web browser. If you typed in “http://kurup.org”, the browser would show “http://kurup.org:8001/" in the Location bar. This only occured when the backend server returned 30x redirection status’s. Based on my config, Pound was supposed to be rewriting the Location header to avoid this problem. I found the solution to this one here. Scroll down to Robert Segall’s (the author of Pound) second reply. He says:
The conditions for changing the Location header are:
- Change30x is set (value 1) for the Service in question
- the response is one of 301, 302, 303 or 307
- a Host header was seen in the original request
- the Location header, after DNS resolution, points either to the same address as the one Pound is using to accept the request (aka the ListenHTTP/ListenHTTPS), or to the back-end that issued this response
Everything was being fulfilled except the last one, specifically the ‘After DNS resolution’ part. When I do a nslookup kurup.org
on my server, it returns 66.98.222.124. The address I was using in the config file was 127.0.0.1 (localhost). Since these didn’t match, Pound was not rewriting the header. I changed my pound config to listen on 66.98.222.124 and that problem was fixed.
The final problem was that pound stopped redirecting requests to the other virtual servers on my machine. Whenever a request would come in, pound would crash with the following message in syslog:
Feb 17 08:11:10 vkurup pound: MONITOR: worker exited on signal 11, restarting...
The only difference between the config for kurup.org and the other virtual servers was that I had a SESSION parameter in kurup.org. I introduced a SESSION parameter into the other servers and surprise, they started working too. I finally found the reason here. I assume that will be fixed in the next release.
Comments from old site
Just don't use the same title twice in one day
You'll end up with ambiguous urls. The util_text_to_url proc can disambiguate a list of urls for you, and then you'd need to store the new url in the db.
That would also avoid the whole list/loop shenanegins. It would also be easy to write a little script to go through your existing db and create the urls for existing blog entries.
But that might be considered hard work ;)
Mark Aufflick 2006-05-05 07:11:24Excellent point
I thought about that briefly while I wrote this, but figured, "What are the chances that I'd write 2 posts in the same day with the same title?" In other words, I took the easy way out.
But adding the permalink to the DB does sound like the right thing to do, so I'll work on it or head over to your blog and beg for your code :-)
Vinod Kurup 2006-05-05 16:35:41