Reading blogs the other day, I came across the Dina Programming Font. I've been testing it out for the past couple of days in Eclipse and so far I really like it.
Over the years I've tried a number of different fonts for my IDE, but I always end up back with Courier New—mainly because it's familiar. However, I've been able to use the Dina font at 8pt and it retains it's readability very well at 1028x768. Lowering the point size while not adding strain for my eyes, allows me to see more code on the page w/less scrolling. Since I have carpal tunnel, anything that reduces mouse movement is a welcome change.
I came across an interesting JSAPI today over at BernieCode.com that handles animation by essentially providing a tweening algorithm that will animate a layer based upon a starting and ending CSS declaration.
The Animator.js library currently requires prototype.js library. It's definitely an interesting approach and allows you to create some really dynamic animations w/very little work. I mean all you need to do is create some CSS that specifies the starting styles and ending styles.
Definitely make sure to check out the examples.
I recently upgraded a few of my installation of TortoiseSVN to the latest revision. Every since doing this, I've been unable to use Subclipse v1.0.3 (in Eclipse v3.1) to change repositories that have been touched with TortoiseSVN. This is because the newest version of TortoiseSVN using the v1.4 of the client libraries and Subclipse v1.0.3 is based on the old v1.3 client files.
Since one of my development boxes only has Eclipse w/Subclipse, it's been a pain to deal w/this compatibility issue. So, this morning I set out to find a solution to this issue.
Fortunately, I was able to find a post by Mark Phippard that addresses solving this issue (while for Subclipse v1.1.6 anyway.) I did run into an issue that apparently doesn't affect the newer version of Subclipse, but since I'm still using Eclipse v3.1 at the moment, I'm stuck using Subclipse v1.0.3.
In response to Microsoft releasing Internet Explorer 7, Mozilla has released Firefox v2.0. You can download the English version of FF2 for Windows at http://www.mozilla.com/products/download.html?product=firefox-2.0&os=win&lang=en-US.
I haven't installed this yet. I may actually do a completely clean/fresh install of FF2 (just because I haven't done a clean install in a long time of Firefox) and then just migrate my settings over.
For those of you using Fiddler HTTP Debugger (which is a great tool I've blogged about many times in the past,) there appears to be an issue when using IP addresses. This is especially noticable when using private subnet IP addresses (such as 192.168.1.*.)
The problem I was seeing was that requests to my developer server came to a crawl when using Fiddler. Speed to external domains was working fine. If I turned off capturing, speed resumed. I finally was able to figure out that by setting up a DNS entry, speed would resume.
Since this was slowing me down, I sent Eric Law, the developer of Fiddler, an e-mail message reporting the problem. He was very quick in researching the problem.
GoogieSpell is a cool little Gmail-like spell checker for use in your own web-based applications. They include several server-side scripts that you can use to connect to Google's Spell Checking Web Service. Unfortunately, ColdFusion isn't one scripts they provide.
However, Robert (over at RedBalloon Labs) has written an article on how to use the GoogieSpell API within your ColdFusion applications.
I've run into this problem from time-to-time. I think the main time I run into the problem is when uploading files to a server, where the form submit is triggered by JavaScript—although I haven't dug around enough to confirm if this is the case or not. Anyway, here's a way to increase the default timeout.
The dom.max_script_run_time is an integer that is the number of seconds to wait before prompting that a script is taking too long to respond. I found this information over at Itchy Hands.
Ever since I upgraded to Firefox 1.5, Ive been getting some unresponsive script warnings on sites that employ heavy Javascript like Gmail or Bloglines. Curious about it, I dug around and managed to find out how to fix the problem.
To fix it, youll need to access the hidden configuration page in Firefox. Just type about:config in the address bar and youll get a page full of hidden configurations which you can tweak till your hearts delight.
In the 'Filter' box, type dom.max_script_run_time. This will narrow the options till only the dom.max_script_run_time option remains. Right-click it and choose Modify. A box pops up. Change the number to something bigger like 20. This is the maximum time a script can run before Firefox considers it 'unresponsive'.
If you cant find the string in the about:config page, create it by right-clicking anywhere and then choose New—> Integer and enter dom.max_script_run_time. When prompted for the value, use 20.
So far Ive not had anymore unresponsive script warnings, so I guessed that fixed that problem! However some extensions may also cause similar problems. Hope this helps.
At work, I had a client who was having problems with our website crashing Firefox. Suspecting a problem with an extension, the first step I had the person do was to disable all their plug-ins—thinking that would be enough to determine if an extension was causing the problem. While, I learned the hard way that just disabling an extension won't necessary make Firefox behave like the extension isn't installed.
After some basic troubleshooting, I discovered the browser would crash any time a window.close() method was called (self.close() caused the same behavior.) Once again, I really suspected this had to be an extension issue. This time I had the client start Firefox in "safe mode". Sure enough, everything began working as expected.
I knew the client was using an extension called "Tabbrowser Extensions 2.1.2006031301". My original gut instinct was it was this extension that was causing the crashing. However, like I stated, I assumed just disabling the extension would get rid of any side effects it might be introducing. This was wrong. I think the reason why disabling this extension didn't avoid the problem, was because the extension loads a preference file that overwrites normal Firefox configuration options and that simply disabling the extension doesn't prevent the preference file from being loaded. After uninstalling the extension, their browser started working correctly.
Today I was reading a post on a message list and someone mentioned they were using a function to generate their mailto: links using HTML entities instead of the ASCII characters in order to prevent spam harvesters from snagging the e-mail address. The problem with this method, is it would be pretty easy for a harvester to re-encode the HTML entities back into the correct ASCII characters.
This got me think that the best method would involve using JavaScript to write out the link. In order for a spam harvester bot to parse out the e-mail address, they'd have to understand the context of the page. This means they'd either have to actually parse the page into a DOM object and parse the DOM, or they'd have to specifically knowledge of the function and reverse engineer the links to the function. Either method is probably more than what most harvesting bots are going to use (although this could always change.)
So, I spent a few minutes and whipped up the following code. The spamProtector() JS function takes in an array of ASCII character codes, which will be used to generate the mailto: links. I obfuscated the document.write() statement by breaking the string into chunks in order to throw off any parsers looking for certain strings.
There's a new Web in town—Web v2.1! A new article over at Something Awful gives a humorous, yet insightful, look at the buzz phrase "Web 2.0".
Web 2.1 is the new standard for web sites and applications in the blogosphere collective information age. It is scaleable and easy to use, as well as being user friendly and designed with the end user in mind. In order to be Web 2.1 compliant, you must follow these guidelines:
- If it comes to a rest on the floor for less than five seconds, you can eat it
- No means no
- Don't expose it to bright lights, get it wet, or feed it after midnight
- Data is the next Intel Inside
- If the kick returner signals for a fair catch but drops the ball, the other team can attempt to recover it
Yahoo has released a pretty impressive collection of JavaScript libraries on their Developer Network. The new libraries are collection they're calling Yahoo! User Interface Library. The new UI library consists of about everything you need to build modern web applications—AJAX (Connection Manager), animation effects, drag-n-drop effects, event handlers and basic DOM umbrella for miscellaneous DHTML handling.
They've even released a few nifty UI controls (widgets) that seem pretty feature rich. These include a Calendar, Slider and a TreeView control. The slider control seems very solid and I like the "task" mode of the TreeView control (it allows you to place checkmarks next to the tree items—which would be useful in removing nodes from a tree.)
I'd also recommend checking out the new Yahoo! User Interface Blog, which is designed to talk about changes and additions to the UI Library. They've also published a Design Pattern Library which talks about common design problems and provides some solutions. They Design Pattern Library has an interesting entry on "Auto Complete", but they have not yet posted any actual code.
I've been having a lot of weird performance issues lately. For some reason today my CPU was just getting maxed out within minutes of booting. My first thought was a virus or spyware, but after some digging around with the excellent application Process Explorer, I was able to find a thread in the system process that was eating all my CPU cycles. It was a DLL named "ssrtln.sys".
Troubleshooting this was a real pain. This DLL was eating so many CPU cycles, that it was actually preventing many applications from even loading (including Internet Explorer, the Control Panel and Windows Explorer.) Turns out this DLL belongs to the Sonic Solutions, which was part of the IBM DLA drivers which were loaded on my IBM ThinkPad R50p.
Since the driver is not loaded in Safe Mode, I tried booting to Safe Mode to remove the driver. Turns out, you can't uninstall this particular piece of software in Safe Mode.
Tonight I finally got sick of Windows XP's native support for Zip files in Windows Explorer. It really slows down Explorer and I really have never even liked the fact that it treats Zip files as folders. I want compressed archives to be what they are—files. If I want to view the contents of compressed archives, I'll use an archive applications like WinRAR.
To prevent Windows XP from treating compressed Zip files as a folder,
go to "Start > Run" and type the following:
regsvr32 /u zipfldr
If you wish to restore native Zip support in Windows, just go
back to "Start > Run" and type the following:
regsvr32 zipfldr
If you ever do any heavy JavaScript development, you know how large cross browser libraries. The file sizes of these libraries get very large, very quickly. Usually JavaScript files contain a lot of whitespacing and (hopefully) commenting, which can drastically increase the file size—which means for longer download times.
There are many solutions to this problem, but most involve the basic idea of stripping out commenting and taking out the unneccesary whitespacing. While these simple steps can reduce you files nicely, there are better ways.
Alex Russell, the project lead for the Dojo JavaScript Toolkit, has written an open source compression tool called SourceSafe. SourceSafe is based on Rhino, the JavaScript engine used in the Mozilla projects.
Matt Inman has released a little AJAX application that uses the Google Map Javascript API to visually display the location of an IP address.
Creating a visual IP address map isn't a perfect location, so don't expect to see your home address show up. Instead, they usually do a pretty good job of tracking the IP address back to your local ISP. Interesting product none the less.