Now I Have a Blog TooNow I Have a Blog Too Christopher Finke is a software engineer at Mahalo. He is available for birthday parties and bar mitzvahs.

Posts tagged with 'Programming'

Netscape Navigator 9.0 Beta Released

Tuesday, June 5th, 2007

The long national nightmare is over: the beta of Netscape Navigator 9.0 has finally been released to the public.

Read the official announcement here.

Read a more informal introduction to the browser here.

Download it here.

Read the release notes here.

Discuss it here.

Building a better multi-link opener

Saturday, May 26th, 2007

After giving up on GoogleTabs, I was thinking about how there is no acceptable (by my standards, anyway) Firefox extension for opening multiple links. Linky is too general, just opening large swaths of links, and Snap Links requires you to physically indicate every link that you want opened. An ideal extension should know the links that you want to open based on just one link out of the set.

I believe that I've written this suitable extension, and it's called Links Like This. The extension works like so: any time you right-click on a link, an option entitled "Open Links Like This..." is added to the context menu:

Opening links with Links Like This

If you select that option, the extension will find all of the links in the page that are similar to the link you right-clicked on, highlight them, and then ask you to confirm that they are indeed the links that you want to open.

Links Like This marks the links it will open

Unlike GoogleTabs, this extension is generalized to all websites. Due to its dynamic matching algorithm, it actually appears to work better than GoogleTabs on Google search pages, and in my experience so far, it works equally well with the other search engines and link-heavy sites like Digg/Netscape/Reddit or CraigsList.

You can install Links Like This from the Links Like This homepage. Feel free to describe any positive or negative experiences with it in the comment section below.

One more day in paradise

Saturday, May 19th, 2007

So tomorrow is my last day in Orlando. I don't know if it was something I ate (Cheeburger Cheeburger, I'm looking at you) or just the stress of traveling, but I've felt sick to my stomach since yesterday afternoon, which is terrible timing. If I was going to get sick during this trip, I would have preferred it to happen anytime during the week, since I can still program just fine if I'm nauseous, but it's awfully hard to enjoy the extra downtime of the weekend without being further than 20 feet from a bathroom (just in case).

The work portion of this week's ScapeCon was productive. We planned out some new features that are going to rock your world once they're released. I'm not kidding - the next to you feel the ground shake, or even if you stumble a little bit, that's just us at Netscape, releasing new features and rocking your world.

I should probably get to sleep; I have to be up before 6 tomorrow to make it to the airport in time to catch my flight. (Hopefully the plane won't be as packed as my two flights were on the way here.) Once home, Christina and I are road-tripping it to Yellowstone, so I'll be offline for the majority of the next week.

Decommissioning GoogleTabs

Saturday, May 19th, 2007

I've decided to retire GoogleTabs, one of the very first extensions I ever wrote. GoogleTabs adds a context-menu option to open all of the Google search results on the current page in tabs.

I made this decision for several reasons:

  • I don't have time to keep up with Google. Every time they change the HTML for any of their search result pages, I have to update the extension and release a new version.
  • I don't use the extension. All of my other extensions came about to fill one of my browsing needs, and in a few cases, other people found the extension useful as well. Since I never really used GoogleTabs, I don't feel the same need to keep it current.
  • There are better solutions. There are other extensions like Snap Links and Linky that do the same thing, but on a wider scale. It doesn't make sense to have a Google-specific version when you can have one extension that mass-opens links on all webpages.

According to Mozilla Addons, GoogleTabs was downloaded a total of 95,322 times (plus the downloads directly from my site), so it had a pretty good run. Rest in peace, GoogleTabs.

Top 1,000 Diggers: 2007/05/19

Saturday, May 19th, 2007

This CSV files contains the username, number of frontpage stories, number of submitted stories, number of stories dugg, and number of profile views for the top 1,000 users on Digg.

Top 1000 Diggers as of 2007/05/19

In other Digg news, this bug I filed regarding Digg's broken search RSS feeds 4 weeks ago has still not been addressed. Methinks Digg's "Report a bug" form just sends everything to /dev/null.

If you'd like to be notified whenever I release a new dataset, you can subscribe to the Digg Statisical Data RSS feed, which will include only the dataset posts, or my main RSS feed, which is updated with all of my blog posts.

Own a piece of history

Friday, May 11th, 2007

For the low, low price of $189,900, you could own this piece of Web software history:

House for sale in New Prague, MN

This is the very building where I worked on such projects as Slashdotter, Netscape Navigator 9, OPML Support for Firefox, ScribeFire, the Digg Top Users list, and most recently, Twits Like Me. If you act now, I'll even throw in the very desk that I sit at while I work my programming magic. Deals like this don't come along every day, especially when you consider that I was named as Time Magazine's 2006 Man of the Year!

This introductory pricing won't last long, so you'd better hurry up and make an offer.

Twits Like Me

Thursday, May 10th, 2007

Everybody and their mother has written a Twitter-based app, but I haven't seen any so far that try and help you find other Twitterers that you'd find interesting, so I made one.

It's called "Twits Like Me" - just enter your Twitter screenname in the search box, and the Twits Like Me search engine will try and find other users that Twitter about the same things that you do. I've found that at least a few of the ten users it returns are interesting enough that I'll start following them, but it is still in its infancy, so your satisfaction may vary.

Twits Like Me

Twits Like Me is constantly updating its search index, so the results should become more relevant over time. (You can get information on updates to Twits Like Me by subscribing to the Twits Like Me RSS feed or the main RSS feed for my blog.)

Oh, and thanks to the guys at Twitterholic for unknowingly providing a design. ;-)

Little-known fact

Tuesday, May 8th, 2007

Little-known fact: I do all of my programming to a repeating loop of the introduction to 2 Unlimited's "Get Ready for This."

It really gets me pumped up, and let's face it: when I'm writing code, ya'll better be ready for this.

Extending JavaScript

Saturday, May 5th, 2007

There are a lot of common programming algorithms that are built into various languages as functions: checking if an array contains a certain item, trimming a string, mapping a function to an array, etc. JavaScript doesn't have a lot of these built-ins, but with prototypical inheritance, it's easy enough to add them.

I'm thinking it might be beneficial to include with the browser a "JavaScript extension" file - that is, one JS file packaged with the browser that contains function definitions for these common tasks. It wouldn't necessarily be visible to scripts in webpages (and it would probably be a bad idea to do so, as it might break current scripts), but it could be utilized by extension developers if they choose to do so, just by adding this to their main XUL overlay file:

<script type="application/x-javascript" src="chrome://browser/content/extend.js"></script>

I know that I've had to write an Array.contains function for just about every extension I've written, so I know this kind of library would come in handy. These are the functions that got me thinking about this:

String.reverse
String.trim (and maybe ltrim and rtrim, but these tend to be used less)
String.md5
String.stripTags (not as keen on this one)
Array.contains
Array.map
Array.random
Array.shuffle
Date.format (a pseudo-port of PHP's date() function)

Any recommendations for other functions that might as well be standard?

Note: As this is being posted on my personal site, this is no guarantee or indication that Netscape Navigator 9 will be supplying this kind of library. If the feedback is positive though, I would definitely bring it up for consideration.

Video Tutorial: The JavaScript Programming Language

Friday, May 4th, 2007

Yahoo!'s video of Douglas Crockford's The JavaScript Programming Language lecture is definitely the best overview of JavaScript that I've ever seen. (The first part is embedded below, and the remaining 3 parts are linked after that.) I saw it a while back, but it's been getting a fair amount of press in the social media space this week.

Part 2 Part 3 Part 4

I'm self-taught when it comes to JavaScript, as I've never taken a formal class that dealt with it, and it was refreshing to find that I've managed to pick up most of the good habits that Crockford recommends while avoiding most of the bad habits he cautions against. I must have made good choices as to which sites' and browser extensions' source code I studied.

I think next I'll get started on watching their "Advanced JavaScript" series.