Bad Music Justification
2007-01-12 5:13AM
Trope:
I occasionally read a... newspaper article where a man... owns up to the “guilty pleasures” on his iPod... The structure of [his] argument:
- I, the author, am an extraordinarily intelligent and cool person;
- But I do listen to music that is considered to be shit;
- However, this music (pick one):
- is actually good, and you, dear reader, are too much of a snob too enjoy it; or
- is not actually good, but despite my impeccable taste I deign to listen to it for amusement.
- In either case I am awesome.
Over and over I read myself into a froth, sketching a mental picture of the essayist as a scruffy fucksimper who suffers from chronic index-finger-swelling brought on by speed-dialing through all the music he shat onto his 500G jizz-hued iPod. After he gmails his guilty-pleasure opus to his editbot, who will rewrite it into a charticle...
Let that be known as the first good writing to have appeared on a weblog in 2007.
And, as I elected myself judge and jury on that ruling, I will now go and listen to I'm Bringin' Sexy Back 17 times in a row and resist finding it catchy.
Instead of Google
2006-11-13 12:23PM
As I was reading this recent O'Reilly Radar article Thoughts on the State of Search, it suddenly dawned on me that my use of Google has declined in the past 3-6 months by about 20-33%.
What has replaced it? del.icio.us.
For example, I was recently searching for some SNES ROMs (obviously, only for games I already legally own). Using Google to search for ROMs leads to a lot of spammy deadends. But, combinations of http://del.icio.us/tag/ and http://del.icio.us/popular/ got me where I wanted to go. For example:
I did a similar thing when I was looking for different XSL engines for Apache (simple engines that would take some XML, apply an XSLT to it, and spit out the results). I wanted to poke at a couple. Googling for Apache XSL engines turned up a lot of "noisy" results that I didn't want to have to wade through. http://del.icio.us/tag/apache+xsl had just the stuff I was looking for.
Ovid's Recommendation
2006-11-09 10:53PM
Ovid is looking for a contact at Yahoo! so he can recommend someone. I know, at some points, jr and Zawodny visited this site. So if I can help gather either of their eyeballs, I'm happy to help.
Ubuntu Blogs
2006-09-12 2:57AM
Are there any good Ubuntu blogs I should be following in the same vein as macosxhints.com?
Lazy Web, SPEAK!
Creating Embeddable Flash Movie Screencasts on OS X
2006-09-06 10:23PM
This is, honestly, the only way I could get this to work. If anyone has a better way, do tell.
First, I use iShowU to capture the audio and screen. This will save it as a Quicktime .mov ("h.264" ← whatever that means).
Then, I use iMovie to convert the .mov to an .avi. Why? Because ffmpegx chokes on the .mov file. Doing this in iMovie is non-trivial. You open iMovie. Drag the .mov file produced by iShowU onto its window. It will then spend anywhere from 30 minutes to 4 days "importing" the movie before crashing. After it crashes, repeat the process and pray.
Once you have the video in iMovie's clutches, you can export it as an .avi. Go to "File → Export", select "Quicktime" from the top menu, in the selection box for "Compression" choose "Expert Settings" and then hit the "Share" button. Another window will popup. Choose "Export" to "Movie to AVI" (hit the additional "Options" button if you've been trained for 4 years in A/V codec voodoo).
iMovie will do a great job in taking the ~35MB .mov file and producing a >500MB .avi file.
Once you have an .avi file, use ffmpegx to convert the movie to a .flv file. (Make sure to follow the installation instructions when installing ffmpegx.) Then, to convert it from .avi to .flv, follow the instructions at http://ffmpegx.com/flv.html.
Once you have a .flv, you will need an SWF wrapper. This one is good -- http://www.jeroenwijering.com/upload/flash_flv_player.zip.
To piece everything together, create a new folder "foo". Take the newly minted .flv file and put it in the folder. Take the flvplayer.swf file from the flash_flv_player.zip and put it in the "foo" folder. Create an "index.html" page in the "foo" folder. It's contents should look something like:
<html>
<head>
<title>Test FLV</title>
</head>
<body>
<object type="application/x-shockwave-flash" width="xxx" height="xxx"
wmode="transparent" data="flvplayer.swf?file=test.flv">
<param name="movie" value="flvplayer.swf?file=test.flv" />
<param name="wmode" value="transparent" />
<object/>
</body>
</html>
Again, if anyone knows of an easier way to do this, I am all ears.
Open Sourcing OSX Apps (Already Got 'em)
2006-06-22 3:13AM
I don't have anything intelligent to add to the discourse of Why Apple Won't Open Source Its Apps. I did just switch to Apple from a Windows laptop (where I primarily used open sources applications... well... besides the operating system). After getting the Macbook Pro, I immersed myself with Safari/Mail/iCal/iChat. I used Firefox. It was slow. I used Camino. It was much better. I used Thunderbird/GCalendar/Adium.
I've settled on using Camino/Thunderbird/Adium/GCalendar.
It would make no difference to me, as a Mac user, if Apple released Safari/Mail/iCal/iChat as open source.
Well, it would make a difference if after open sourcing these items they suddenly became way better; and tons of people wrote blog entries and articles about it and enticed me to switch back. But, right now, I prefer the open source alternatives (I doubt I am the only one). I just need a nice GUI and "just works" hardware/software that wraps around an xterm and the open source "productivity" apps I use.
OSX/Apple-hardware-and-quality is just my shell to a terminal window and open source software. I have no idea how that plays out in the ideas of Apple open sourcing some of their software; I'm just saying that this is how I am using it. It makes no difference to me what Apple does with the source code to their "productivity" software.
Bloglines Updates Atom Support
2006-06-21 12:59PM
Bloglines speaks!:
As we continue to develop new features, small and large, we also make necessary improvements to existing systems. Expanding our support for the Atom 1.0 syndication standard is the latest of these. You may notice duplicate posts coming from atom feeds as we make the switch from the old to the new atom parser. But have no fear, these duplicates will fade away and soon be a distant memory.
I can confirm that their handling of relative links and xml:base is fixed (my Tim Bray feed finally works). They're still getting tripped up on atom/entry/title and atom/entry/source/title (it seems that whichever one comes last in an atom/entry wins). Sam Ruby is tracking a couple more nits in Forward Motion!.
It's nice to see Bloglines back responding to people. Hopefully, they continue to do so. For an app that started from grassroots bloggers, it sure did clam up once Ask.com bought 'em. I thought it was going to get worse when I heard that Mark Fletcher left, but on the contrary, it seems to have gotten better. I was even able to find a blog of one of their workers – Paul's Journal – though he doesn't seem to talk about his $job too much.
Cheers, Bloglines, you may win me over again, yet.
Brand New Hotness
2006-06-16 1:41PM
Apparently, I didn't get the memo not to use macs anymore.


Everyone should have two laptops.

Ten Dollars for Tag Clouds
2006-06-08 11:31PM
$10 to get a downloadable O'Reilly "booklet" on Building Tag Clouds in Perl and PHP? Seriously? Is there an army of developers desperately seeking to make "tag clouds" out of weighted lists but can't figure out how to do it? If I didn't know better, I would think that they are trying to punk 37signals.
I haven't read it. Looking at the large cover image, it seems they managed to get 46+ pages of content on the topic of "tag clouds" (maybe they used those old high school paper tricks such as bigger fonts and bigger line spacing). So, it could be that it is filled with useful insight into all things tag cloud-ish; but I'll never know...
Update
It seems that O'Reilly has a section with about a dozen or so of these downloadable PDFs ranging in price from $5 to $10. I had never seen that before. (I still stand by my initial reaction when seeing the price tag for this one, though.)
Acura is the New "Old" BMW
2006-04-24 10:59PM
If you don't care about pretentiousness and how-will-this-brand-impress-my-golfing-buddies, this is true – Acura has been producing the best "BMWs" on the road.
Oh how I wish for the E31-chassis and the like... thank god for Acura.
The Dragon Tail
2006-04-20 8:51PM
Here is what The Dragon Tail looks like from a satellite.
One of these days I am going to make it down there so I can drive on that road.
1999 Miata 5-speed Gear Ratios
2006-04-15 5:05PM
I find myself always looking these numbers up. I'll put them here so I don't lose them.
| Gear | Ratio | x |
| 1st | 3.136 | 13.485 |
| 2nd | 1.888 | 8.118 |
| 3rd | 1.330 | 5.719 |
| 4th | 1.000 | 4.300 |
| 5th | 0.814 | 3.500 |
| Final Drive | 4.300 |
My Correspondance with One Lincoln D. Stein
2006-03-30 10:59PM
I think anyone who has worked in the software development field has probably gone through the "it must be a bug in the compiler/library" phase. The phase where your code isn't doing what it is supposed to be doing and you look at it and look at it and tweak it and tweak it, and finally you deduce, "the problem is that there's a bug in PHP" or "this is obviously DBI.pm acting up." You send an email to a list or post to a forum including your code that reproduces the bug only to learn that it is, actually, your own shoddy code. After doing this a dozen or so times, you finally reach the stage of humility where you know that there's something in your code doing something wrong. It's a growing pain. A nice lesson to learn — keep your hubris in check, take a break from the code, come back with a fresh mind, and take a clean stab at the problem before going off and declaring that there's a regex parsing bug in the perl binary.
Having learned that lesson, many moons ago, about two and a half years ago I was working on a small web app. I can't really remember what it was, but that isn't the important part of the story. I was working on a web app, and I kept getting bitten by some bug. I started believing that it was a bug in CGI.pm. But I knew better than that. Something as widely deployed and as widely used as CGI.pm isn't going to have a bug. Chances are, the bug was mine. So I took a break, smoked a cigarette, came back, and toyed with the code some more. No luck. I took another break. I came back, deleted the entire section of code, and started coding again. Same weirdness.
I started getting suspicious. I cracked open the source to CGI.pm and started digging. I know what you're thinking. This story is a harkening back to a glory day where I found a bug in CGI.pm. Well, it isn't. Well, it kinda is. Sorta. You see, the original bug I was looking for turned out to be my own shoddy coding. But I did find another bug.
Now, I had been coding Perl for the better part of 4 years at that point. I had risen from newbie to Pretty Darned Good, but I still wasn't completely sure. The offending section of code is as follows:
my(@pairs) = split("; ?",$raw_cookie);
foreach (@pairs) {
s/\s*(.*?)\s*/$1/;
.
.
.
It was in CGI::Cookie. To gain reassurance, I made the following post to PerlMonks — Weird Regex in CGI::Cookie.
Everyone agreed; even the venerable Abigail agreed with me that it was a bug. Reassured by the community, I sent an email to Lincoln Stein. Yes, that Lincoln Stein, the author of many a perl module including CGI.pm. I was very humble in the email. I offered a patch. I posted the link back to the PerlMonks forum. I deferred to his guidance. But I knew that this was definitely a bug.
I was very uplifted after I sent out the email. It was my first major contribution back to Perl and to the open source community.
The email I got back, though, was not "uplifting." I couldn't find it in my email archive. I wish I could because the harshness would be better represented by direct quoting, but it went something like:
I don't know who you are. And I don't trust or accept random patches from people to code that runs in the wild with no reported problems in years and thousands of installations.
It was extraordinarily condescending. And it was quite a blow to my ego. For nearly two years, I never sent in another patch to any open source projects. I would find them from time to time. I would generate test cases that could reproduce them. I would code patches that would solve the test cases. I would get all ready to send an email with all of the appropriate material. But I wouldn't send them. I would remember Lincoln Stein.
The piece of code is still there in CGI::Cookie down there on line 56 of the source. So I guess it was never that big of a deal, but it made me never want to contribute. I eventually got over it and all. But I still remember it. I was reminded of it reading Sam Ruby's entry Cultivating a Community.
In hindsight, I understand Lincoln Stein's reservations; and they were well placed. He should have asked me for running code that ran into a problem. He should of asked me for test cases. But that's not what he did. He scared me away from contributing back to open source projects for a couple of years. Communities are important in open source endeavors. And most of the time, they are run by well-meaning, well-spoken, and nice, charasmatic individuals. If you happen to be a prominent figure in one, please strive to continue to be that way.
Blog Ambivalence and Why Spammers are Neo
2006-03-21 3:53PM
Taking a page from Dare:
Blogs Make Me Happy
Because the customers you dick over make you accountable for it.
Blogs Make Me Sad
Spammers.
And the spammers got me thinking. It seems that all successful tech ecosystems have to be susceptible to being gamed. Maybe there's a mathematical proof for it because it holds true time and time again. The original system must organically evolve to try and reduce the spam and preserve its original purpose. But as the spam keeps growing, eventually the system must change in a revolutionary manner and be reborn. It's usually reborn carrying some mistakes of the old system with it but changing enough that makes "gaming it" an entirely new endeavor. But the spamming eventually reoccurs.
What I'm saying is that it's the freakin' Matrix, man. And the spammers... the spammers are fuckin' Neo.
And, no, that revelation wasn't drug induced. It just sounds a helluva lot like it was.
I Don't Want Your Mega-Appliance
2006-03-20 2:53AM
Less Phone
The thing is, I’d be sick of the latest smartphone in a couple of weeks (and I’m not the only one). The day I’d get it I’d load a whole bunch of software on it. Show friends how I could IM on it or pull up a mini terminal window and make some changes on our server over the phone. But after a few weeks I just found myself using it as a phone. And smartphones are usually too bulky and clumsy for that.
I convinced myself I needed a smartphone when I really didn’t. What I really needed was Less Phone. A phone that made calls, picked up a strong signal, supported simple text messaging, and offered a dead simple calendar.
Yes. Small pieces loosely joined. It's not just for the Internet; it's for me, too. I want a phone that is a phone. I want a camera that is a camera. I want an MP3 player that is an MP3 player. I want a PDA that is... well... actually, I don't want one of those. Had it. Useless. No productivity gains. Moving on. I want a car that is a car. Would I would like them to all work together? Seamlessly? Sure. But I don't want something that sits in my pocket constantly invoking jokes of "so, are you happy to see me or is that a.... in your pocket?"
Oh, Bloglines...
2006-02-21 3:31PM
Google Reader: fixed. NewsGator Online: fixed. Bloglines: strongly not recommended to my friends and family anymore.
I've exchange a half-dozen emails with Bloglines technical support concerning their parsing issues. Each time they have given me courteous responses about how the issue has been sent off and assigned to an engineer who will investigate the problem and fix it.
I thought everything was to be all good.
However, the meat of the correspondances happened back in November 2005 and January. The issues are still there. I went and tried out Rojo and Google Reader because it was time to abandon the Bloglines ship. But both of those suffered interface problems. (Not problems with their service; rather, I much prefer the Bloglines UI to their own.)
Maybe I'll try them out again though. Oh, Bloglines, we had a really great run together (Found A Web Base RSS Aggregator -- Bloglines, Bloglines (Again) -- Now That's What I Am Talking About, This I Know: Bloglines Rocks). At most points, I would have been willing to pay for your service. But your lack of updates to your parsing issues has me concerned. And I know (from other people's blog posts on exactly this subject) that I am not the only one bringing it to your attention.
Update:
They've turned it around.
Thou Shalt Not Parse XHTML with an HTML Parser
2005-11-19 2:11PM
XHTML advocates considered erroneous
Here is a story for you. You are one of those people who does not care about this shit. You use XHTML 1.1 and think it is all nice and dandy. The website you created displays beautifully cross browser and you got some Google points through fan boys.
Ooh... okay, I admit it, I'm a moron. I shall mend my ways.
MySQL's Blackhole
2005-11-11 2:13AM
Read about this new feature in MySQL 5.0 – The BLACKHOLE Storage Engine – and tell me what was the point at which you were reading it when you finally went "ohhhhh, that's what it's for."
I sat there reading the paragraph:
The BLACKHOLE storage engine acts as a “black hole” that accepts data but throws it away and does not store it. Retrievals always return the empty set:
And I was thinking to myself, "WTF?" It finally dawned on me in the 4th paragraph as to why it would be useful.
(Feature found via Zawodny.)
Yahoo Maps: Lakewood, OH Hotspots
2005-11-04 12:19PM
Yahoo Maps Results for "Hotspots" in Lakewood, OH. Nice results! Turned up some I didn't even know about. The only pain in the ass, though, was finding a way to generate a link to the map. Had to end up using the "email this map to a friend" feature and sent it as an email to myself.
Human Readable Date in Atom
2005-08-11 9:59PM
Is there a way to include a human readable date in an Atom <entry>? I was hoping I could use the Dublin Core <dc:date> element, but the Feed Validator chokes. Apparently, <dc:date> must adhere to the W3C Date and Time Format i.e. 2002-10-02T10:00:00-05:00.
So, if someone wants to include a human readable date, what is one to do? Are there other metadata specifications I can leverage? Is there something I missed in the Atom Specification that allows one to do something like this?
ToRead List: Ontology
2005-08-10 4:59PM
Kicking and Screaming
2005-07-14 4:43PM
There is no use for RSS/Atom outside of weblogs.
Machine parseable versions of information on web sites have no useful deliverables.
Sometimes, I talk to people who get it. I can tell right away. Then, there are the people (in the tech industry) who mouth off quotes like that above. I feel bad for them (because, you know, I am such an empathetic person and all). They go off, usually happily reinventing wheels, firmly believing that they do get it; they just get it so well that they have foreseen that it is not useful.
One day, they will be dragged kicking and screaming towards the better practices. And, it's never really satisfying when that happens; because you've already moved on.
Interview with the Author of Deploying OpenLDAP
2005-06-20 6:37PM
There are a lot of gems in this interview with the author of "Deploying OpenLDAP". I'll pick one out:
When I walk into companies that want to deploy LDAP, they usually want it for two reasons. A small company is often short sighted and wants to use LDAP as a phone book. That's it. They just want a web server with an LDAP back end that can be used to pop up extensions. I try to push them in the right direction and say that they should take some time to design a system that can be integrated with other applications. They usually bite.
Others want LDAP for single sign on. That's just a big buzzword with multiple meanings. They look at LDAP and SSO as the same thing and think it will be a magical solution to everything.
I try to convince people to deploy it for some small application, make it known that LDAP now exists in their company, and watch all their departments jump over each other to try to get access to it. There's so much out there that integrates with LDAP at all levels.
I find it easy to justify the deployment/use of a directory server by appealing to principles the target audience can already relate to. It goes something like:
"Having duplicate account and identity management systems rather than just a singular directory instance is like:"
- For database people
-
Having redundant data in your database.
- For programmers
-
Having redundant code.
- For managers/administrators
-
Having your employees constantly reinventing the same frameworks and not being, at all, cost or time effective.
Playing with Interesting Interpretations of the Wiki Philosophy
2005-05-25 2:47PM
More things I need to play with:
What can I say, I am a sucker for animated little post-it thingies. Plus, I'll finally have a use for that damn USB drive.
Is There a PHP Library for Parsing HTML?
2005-05-07 8:05PM
Is there a PHP library that can parse HTML? For some reason, I cannot find a definitive one. Something like HTML::Parser for Perl or htmllib.py for Python.
I am having a hard time believing that one does not exist. I am assuming that my google-fu just isn't up to par to find it.
Misuses of GET
2005-05-06 4:59PM
This is why you use the HTTP verbs correctly.
People who (mis|ab)use GET get what they deserve.
People who don't know when to use GET and when to use another one of the HTTP verbs should read this.
[Update: Also, read I'm sorry, I can't kiss it and make it better. I tell that same thing to people who don't use a Directory Server for managing user accounts, authentication, and authorization. Time and time again, the response back is, "I can just use a simple MySQL table [or some such other thing] and be just fine." Time and time again, at some point in the near future, I see them bitten by all the problems a Directory Server would have solved for them.
Use standards.
Do the work up front that will save you work in the future.
YAGNI doesn't mean "Don't Do It Right the First Time Around."
]
Uninteresting Programming
2005-04-05 5:41PM
Someone (not naming names or linking or picking on people here) recently told me that programming wasn't interesting. It's not where the buzz is at in technology. It has floundered never to be resuscitated from the bit decay it has undergone. Programming's not sexy. (Well, I don't think anyone would actually argue that programming is sexy.)
To pontificate, he cited Ruby as the only remotely interesting thing that has happened in the field of programming. But, even then, he had no plans on using it or installing it on any server under his control.
I think he and I think about the concept of "programming" differently. I suppose he considers programming to be syntactically centered. Programming consists of some variable declarations, some conditionals, a couple of looping constructs, and the addition of some OO aspects to taste.
I don't think of programming as syntax. I think of APIs, and application frameworks. I look at CPAN, and I think it is great, but I think it could also get far better. I think of parrot and the possibility of all of CPAN running on it in such a way that I can call WWW::Mechanize from Python (or PHP or Ruby).
I think of REST when I think of programming. I think of interesting Javascript trickeries and new frameworks.
What got me thinking about this just now was reading Allison Randal's journal entry, Gooze and beyond, where she states:
I've wondered for a while if the future of programming languages is away from monolingualism and toward polylingualism. That is, instead of one language to do everything, we'll have a whole bunch of domain-specific languages. Each can have a clean and simple syntax to solve a specific set of problems because it's only trying to solve that set of problems. Of course, people will need some way to get these languages to work together. When you have a video processing language, a number crunching language, a physics simulation language, and a VR interface language, you'll ultimately want to tie them together to build your game.
Perhaps one future purpose of Perl (on Parrot) is in fact the same as its original purpose: the glue language. But now the glue language for languages.
This reminds me of something Paul Graham talked about in The Hundred-Year Language. That, in the future, we will use application-specific languages everywhere. We will design a new language that is specific to the problem(s) at hand. That we will use a meta-language to create the actual language we use to solve the problem(s). And, to some extent, that's nearly what I do now.
I think there's a lot of interesting stuff going on in "Programming." But, I think of "Programming" the same way I would think about building my own house. I would love to build my own house — from conception to planning to architecture to electrical routing to a finished product. I consider all the aspects to be inclusive. Sure, a hammer isn't interesting; but building a house is. I don't think of "Programming" as the hammer; I think of it as the entire process.
Update: brian d foy responds with some thoughts:
I say that programming is not meant to be interesting: it's what you do with it that counts… So, let's make it personal. It's not the passive "programming is boring", it's "I'm bored with programming". For a lot of people, programming is not the point, and it doesn't have to be the source of passion.
Anything Interesting Yet?
2005-03-01 2:03PM
One day, someone will do something interesting with all of these web services. Thus far, Amazon Light is the only one worth a darn. Or, have none of the interesting one's popped up on my radar yet?
Note: I am not including so-called new wave social services' web services like flickr/mappr or del.icio.us/extisp.icio.us.
First Apache
2005-02-27 6:11PM
From the history of hyperreal, the first Apache-served website:
in july of 1994, brian bought his own pc so he could move all the content off of the stanford site and have more control over the servers. it was also simultaneously a home for a new project he was involved in: a set of patches for the ncsa http server ('a patchy web server' ...get it?) the pc, a pentium 90, went under his desk at wired, was hooked up to their lan and was given a public ip address. he chose a domain name for it in honor one of his favorite techno tracks at the time: 'hyperreal' by the shamen. (specifically, the jack dangers remix of that song). the machine name, taz, was a reference to hakim bey's entry on every cyberpunk's essential reading list: 'T.A.Z. - the Temporary Autonomous Zone, Ontological Anarchy, Poetic Terrorism'.
Happy birthday, Apache!
Personal Use NAS
2005-02-22 6:23PM
I need a file server: something simple, running Samba, that I can throw files into. 200GB would be enough... for now, but I being expandable to a terabyte would be nice. Does anyone make a NAS device targetted for at home use?
Is my best bet to throw up a headless Linux box stuffed with some 200GB drives?
Yea, I could have googled this... or, I can just post it on my blog.
Filangy Invite
2005-02-20 12:41PM
A couple days ago, I asked for an invite to Filangy, a search tool that — as far as I can tell, thus far — allows one to perform searches over web pages they have viewed. Sounded interesting, and I wanted to play with it. But, alas, I had no invite.
Well, I received an invite from a Mr. Chirag Chaman, CEO of Filangy. This is a hearty thanks for the invite. I've gone as far as installing the toolbar (works with Firefox, by the way). Now, I am off to play with it some more.
What Does Perl Mean to You
2005-02-17 10:29PM
I'll bite. What does Perl mean to you?
How does Perl help you in your daily work?
We run several large systems at work that are written primarily in perl including Sympa, SpamAssassin, Movable Type. The metadirectory/provisioning-system that keeps our identity management infrastructure glued together and humming along was custom written in Perl. We have plenty of CGIs and glue scripts that are in Perl. Perl gets stuff done.
How could it help you better?
Get cpan.org and perldoc.com on stable (and faster) servers. CPAN is nice, but it has come time for something revolutionary to promote the good modules from the cruft. No voting systems. No 5 star ratings. No RT. Something revolutionary; as revolutionary as CPAN was in the first place.
Oh, yea, and could you make CPAN.pm use an external configuration file? I have problems with NFS-mounted home drives + NFS mounted drive of the perl binaries and CPAN modules; and it would be really nice if I could use a different configuration for when I am on Solaris boxes versus Linux.
If Perl is helping you, are there ways you could help Perl and other users of Perl?
Yes. ...</snarky>
After You Write "Hello, World"
2005-02-11 11:53AM
This article rings true, Beyond Hello World, but it is the following quote that I found humorous and painfully accurate:
In Perl, much to the chagrin of the community, application #2 is a template language, which is why a CPAN search for 'template' turns up 2217 results... In PHP rather then building something so mundane as a template library, many people's #2 app is a CMS. Which is why "PHP" is synonymous with "bad CMS" in many people's minds, as novices tackle again and again the complex CMS problem.
I can't even begin to tell you how many homegrown mini-CMSs I have encountered. And, each time you try to take the users away from them and into a, albeit better, different environment; their interia always causes them to have to be pulled from it kicking and screaming.
The world is saturated with CMSs.
The 3 Stages of the Internet
2005-02-10 2:43PM
Throughout this post, I will be using the term "Internet" to refer to the World Wide Web. "Internet" has a better ring to it.
First, there was no Internet. This is Stage 0 (as it is Stage 0, it will not be counted). It was a horrid time. I can't seem to remember how people found phone numbers or directions or encyclopedic information or news or congregated with like-minded individuals on common sets of interest or, even, coordinated a night out. Frankly, I don't like to think about it.
Then... then, there was the Internet. And, it was glorious. You could sit down at a computer and access the wealth of information (and a bunch of geocities.com web sites).
Stage 2. Wireless Internet. The Internet was good, but you still had to sit down at a computer to access it. That was before wireless. Now, the Internet is all around us. The world is my connection. I no longer have to tether myself to anything to access the Internet. Right now, for example, I am sitting on my couch writing this blog entry with the Internet flowing around me and into my laptop. Nowadays, I won't even go to coffee shops and the like if they don't offer freely available and ubiquitous wireless Internet. I scoff at airports that don't offer wireless. University campuses that don't have wireless... luddites.
But, the Internet could do one better; it had one more trick up its sleeves. News aggregator software and RSS. Even with the power of wireless where I could access the Internet from anywhere, I still had to go to those web sites. Slashdot. Perl Monks. O'Reilly Network. OSNews. OSDir. Etc. There was probably over 50 web sites I regularly tracked. It was a hassle to collect all those bookmarks and remember to visit them and check to see if there was new content. Well, that happens no more. The Internet now comes to me! I track 150-170 web sites via my news aggregator, Bloglines (you can see the sites I track at http://www.bloglines.com/public/jms18); and it could not be better. This stage, Stage 3 of the Internet, has changed the way I use the Internet — even moreso than wireless changed it. I cannot be more of a proponent of news aggregator software. You will wonder how you ever used the Internet beforehand.
Bloglines isn't the only news aggregator software out there. There's a lot of them, and I have heard good things about NetNewsWire (Mac Only), NewsMonster, FeedDemon, AmphetaDesk, and NewsGator (requires Outlook).
In summary, in conclusion, and as a final note, give news aggregator software a try.
Cell Phones will be Primary Music Players?
2005-02-09 4:53PM
It's an interesting article, The iPod End Game. But, the following quote:
the cellphone is the going to be the primary music player of most people within a few years
I am not sure if I buy that. It's very rare that an all-in-one tool is successful. I can't imagine wanting to play music on my cell phone. What would happen when someone calls me? If I have my iPod-phone hooked up to my friends stereo, does that mean, to answer it, I have to turn off the music?
I guess I wouldn't mind if my cell phone was capable of storing music or even playing music. I just don't see it becoming everyone's primary portable music player.
No, Mazda, Don't Do It
2005-01-31 7:53PM
Mazda says it will increase efforts to fine tune vehicles to U.S. preferences
NOOOOOOOOOO!!!!!!!!!!!!
Mazda, here, sit down. I need to talk to you about something. No, really, we have to talk. I need to tell you about us over here in the States. It's not that we are "dumb," per se. It's just that most of us have different requirements in the cars we buy compared to other sectors of the world.
We have long places to drive; and our environmental conditions vary from the cold-struck North to sunny Florida and rainy Oregon. And, you know, things like heated seats and auto-dimming mirrors, and whats-thats and gizzets and whirly-thingamajiggers and etc. — they all have demand. We do require versatile cars that we can pack in our 2 kids, some groceries, an overnight bag for the wife, and still be able to pleasantly drink our Big Gulp's while barreling down the highway talking on our cell phones. We need these things. They are part of our lives.
That does not mean that you should do it. It's not your identity, Mazda. That's not what you are about. There is room in the market for you. Please keep all of you cars sports inspired. You do not need to make 3400lbs. cars that include a dry cleaning service in the back seat and room for 3 golf bags.
Mazda... Mazda... Mazda. Please, just don't do it.
Have you ridden in a BMW lately? Remember when BMW was driver-centric? No cup holders (or, at least, impossible to use cup holders). Rigid race-inspired chassis and suspension (remember the famous E31 and E36 chassis of the 90s). Pure drivers' cars. But, have you been in one recently? I have. The suspension feels mushier than my dad's Cadillac STS.
And, there's nothing wrong with that, Mazda. Pleasant rides that aren't jarring are nice. That's the route BMW took with their base cars.
But, that's not for you.
No no no, that's not for you.
Please, Mazda. You are the last car company for a person like me. A person who eschews most of these amenities because I just want to be a driver on the road. I don't mind tire noise. I don't mind the hum of an engine. I sit rigid in my seat. And, while I enjoy all of those creature comforts in other people's cars (furthmore, I would feel more comfortable knowing that every other car in the world had TCS and ASM installed... all except my car, of course); I need to know that there is, at least, one car company out there for me.
I am not the only one. (Via Autoblog)
Precendence for feed Pseudo-Protocol
2005-01-28 8:31PM
The feed:// scheme
I do not like this ugly hack as I have mentioned this before. But, it just struck me; we already have something in place for anchor tags that is meant for a person's client to interpret outside of a browser. jeremy.smith@gmail.com
<a href="mailto:jeremy.smith@gmail.com">jeremy.smith@gmail.com</a>
I realize it may be splitting hairs here to try and decide between:
<a href="feed://alpha-geek.com/rss20.xml"...
And:
<a href="feed:alpha-geek.com/rss20.xml"...
But, c'mon, at least one has set some kind of precendence.
Movable Type Plugin: MostActiveEntries v0.1
2005-01-20 5:39PM
Overview
MostActiveEntries is a Movable Type plugin that will create a container tag of entries that have been the most active (in terms of Trackbacks and comments) in a given period of time. Both the period of time and the number of entries referenced are configurable. By default, it will look for the 7 most active entries from the last week. Common usage would be:
<h1>Most Active Recent Entries</h1>
<ul>
<MTMostActiveEntries>
<li><a href="<$MTEntryPermalink$>" title="<$MTEntryTitle$>"><$MTEntryTitle$></a>
on <a href="<$MTBlogURL$>" title="<$MTBlogName$>"><$MTBlogName$></a><br />
<$MTEntryCommentCount$> comment(s) and <$MTEntryTrackbackCount$> trackback(s)</li>
</MTMostActiveEntries>
</ul>
The source code for v0.1 is available at http://alpha-geek.com/mostactiveentries/mostActiveEntries-0.1.txt. The latest source code will always be available at http://alpha-geek.com/mostactiveentries/mostActiveEntries.txt.
Installation
Download the source code and place the mostActiveEntries.pl file in your installation of Movable Type's plugins directory.
Use
By default, MostActiveEntries will contain the 7 most active entries of the last week. This can be configured using the days or lastn attributes. Setting the days attribute can shorten or extend how far back the plugin will go to gather the entries. So, for example, if you set days to "3", it will display the 7 most active entries (assuming that there are, indeed, 7 entries posted in the last 3 days) in the last 3 days. Similarly, you can set days to "28" to get the 7 most active entries in the last 4 weeks.
Additionally, you can set the lastn attribute to configure the number of entries to gather. By default, MostActiveEntries gathers 7 entries; but that can be extended or shortened.
You can use both tags together to get, for example, the 19 most active entries in the past 37 days:
<MTMostActiveEntries lastn="19" days="37">
.
.
.
</MTMostActiveEntries>
Copyright and License
This source code is copyright Jeremy Smith (jeremy.smith@gmail.com), 2005. And, is released under the MIT License, which basically says, "do whatever you want with this code just don't come crying to me if it is broken or breaks something."
I've Seen This Before, I Think
2005-01-05 4:31AM
There's something here, and I can't help but feel there's a connection to something and, possibly, something else. But, then again, it could all be déjà vu.
Pillow Humping
2004-12-23 7:59PM
Install Crypt::IDEA on Solaris 8 isn't the most exciting blog entry in the world, and I would imagine, most people don't get past the first sentence or even the title before moving on in their aggregators or hitting another bookmarked URL. But, I get a warm fuzzy feeling down in my gulliwuts when I think of that poor chap wrestling with this same problem, googling to no avail as the only results returned are in Russian or Turkish with the only English phrases intermixed with the hieroglyphics are those that he kept seeing over and over again in his X window.
parse error before "idea_cblock"
parse error before "idea_cblock"
parse error before "idea_cblock"
parse error before "idea_cblock"
parse error before "idea_cblock"
parse error before "idea_cblock"
Well, I am here for you, fella:
http://www.google.com/search?q=%22parse+error+before+idea_cblock%22&btnI=I'm+Feeling+Lucky
And, speaking of those googlers that would find themselves at alpha-geek.com, I miss those wayward souls desperately looking for information on "pillow humping." You see, many moons ago, the front page of alpha-geek.com was a mini-aggregator/funny-ha-ha-ha page of myself and some of my friends who began experimenting with this weblog-doodad-stuff. On that page was the phrase "pillow humping." And, for several straight months, according to my logs, it was the top search phrase that brought people to the site. I was concerned for these people. What were they looking for? Were they confused 14 year old boys looking for tips? Worried dog owners whose pets had an unnatural affinity for the objects on the sofa? Bored middle-aged couples whose expirementations have taken a turn for the featherful?
But, the pages of alpha-geek.com have gone through many iterations; and the term no longer appears. I miss those people, though. I want them to come back. I want to help them out, but I just don't happen to be a well of information on the subject.
Regardless, welcome back Pillow Humpers! I don't have anything useful for you here but please know I wish you luck on your endeavors.
Sometimes It's About Integration, Not Innovation
2004-12-23 1:31AM
Apparently, Rojo is an aggregator, social networking tool, photo sharing application, and bookmark manager.
Why do some services have this tendency to always try to be everything? Why can't they just do one thing and do it really well? And, to supplement their offerings, provide easy to use integration spots for the other services that specialize in doing one thing well?
Sometimes it's more about integration than innovation.
Install Crypt::IDEA on Solaris 8
2004-12-14 5:59PM
Banged my head for a while on this. Here are the changes that need to be made to install Crypt::IDEA onto a Solaris 8 box. You will know that you need to make these changes if you begin running into any combination of the following two errors:
In file included from IDEA.xs:10:
idea.h:5: error: parse error before "idea_cblock"
idea.h:5: warning: data definition has no type or storage class
idea.h:6: error: parse error before "idea_user_key"
idea.h:6: warning: data definition has no type or storage class
idea.h:7: error: parse error before "idea_ks"
idea.h:7: warning: data definition has no type or storage class
idea.h:9: error: parse error before "in"
idea.h:10: error: parse error before "key"
idea.h:11: error: parse error before "userKey"
IDEA.xs: In function `XS_Crypt__IDEA_expand_key':
.
.
.
And/or:
Please specify prototyping behavior for IDEA.xs (see perlxs manual)
gcc -c -fno-strict-aliasing -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O \
-DVERSION=\"1.02\" -DXS_VERSION=\"1.02\" -fPIC \
"-I/apps/pkg/production/perl/lib/5.8.0/sun4-solaris/CORE" IDEA.c
gcc -c -fno-strict-aliasing -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O \
-DVERSION=\"1.02\" -DXS_VERSION=\"1.02\" -fPIC \
"-I/apps/pkg/production/perl/lib/5.8.0/sun4-solaris/CORE" _idea.c
_idea.c:8:20: endian.h: No such file or directory
make: *** [_idea.o] Error 1
In Crypt-IDEA-1.02/idea.h you want to add the line typedef unsigned short u_int16_t; right after the #define line. It should look like:
#include <sys/types.h>
#define IDEA_KS_SIZE 104
typedef unsigned short u_int16_t;
typedef u_int16_t idea_cblock[4];
typedef u_int16_t idea_user_key[8];
typedef u_int16_t idea_ks[52];
void idea_crypt(idea_cblock in, idea_cblock out, idea_ks key);
void idea_invert_key(idea_ks key, idea_ks inv_key);
void idea_expand_key(idea_user_key userKey, idea_ks key);
In Crypt-IDEA-1.02/_idea.c, change the line #include <endian.h> to #include <sys/types.h>.
After those changes, you can do the normal:
root@server:/some/dir/Crypt-IDEA-1.02# perl Makefile.pl
root@server:/some/dir/Crypt-IDEA-1.02# make
root@server:/some/dir/Crypt-IDEA-1.02# make test
root@server:/some/dir/Crypt-IDEA-1.02# make install
Trust me, if you need to do this, you will thank me for this write-up. And, I will thank myself one day, many years from now, when I have to recall this information and can just search my weblog (or, maybe, I will be able to search my entire digital space).
I Don't Want Desktop Search; I Want Digital Lifestyle Search
2004-12-14 1:19PM
The Toolbar of the New Millennium
What i want is a secure, centralized server (it has to be accessible from anywhere) that receives updates from the various devices, web sites and other locations of interest. It stores thumbnails and EXIF information along with some image analysis to determine what it is the picture might be of, and really does try to get the lyrics of the various MP3s it's storing. It scans (or even better, has hooks to) the various databases i've added to it so that it can do live queries. My databases change more often than the static content, and are also more likely to be compressed and externally unindexable, and yeah, i want it to be cross platform.
Debugging Large Perl CGI Applications
2004-12-09 11:43PM
I have to admit; I am a bit antiquated when it comes to my debugging. I rely on the venerable print methodology. Of course, when it comes to CGIs; you can't just go off willy-nilly print'ing to STDOUT unless you are sure the appropriate HTTP response headers have been sent lest you end up filling your error logs with "premature end of script headers". On a small, one script CGI, this is easy to ensure. On a much larger application (like MovableType), this is not as easily accomplished. Chances are, the place in the code you want to execute the print is far, far away from the actual construction of the HTML output and HTTP headers response. You could always print to STDERR in that situation, but I find the signal to noise ratio in there to be a little too high for my liking.
So, I usually print to a debug file. Of course, it's tiresome to be constantly typing:
open DEBUGLOG, '>>debug.output';
print DEBUGLOG Dumper($varNeedingToBeAnalyzed);
close DEBUGLOG;
Luckily, this is Perl. Via the magic of IO::All, this kind of thing is all too simple:
Dumper($varNeedingToBeAnalyzed) >> io("$0.debug");
That, obviously, can be sweetened to suit your taste. I recommend using this in conjunction with Data::Dumper::Simple (recently featured on the 2004 Perl Advent Calendar).
Does anyone else have any tips n' tricks on debugging large Perl web applications?
Weblog Hosting Services
2004-12-08 5:17PM
Are there any other major weblog hosting service providers out there, or does that cover all the players?