Override Custom Context Menu in Firefox
So, I'm on this web site and I right-click on the page. I was surprised to find a nicely designed custom context menu. But I thought to myself, "How annoying... I want to use the actual context menu." I tried holding down the CTRL key (don't ask me why) and was pleasantly surprised to find the Firefox context menu. I haven't tried this on a clean install so it could be one of the many plugins tha...
Building an Address Book...
Leslie over at 0xDECAFBAD is starting up a "Building a Web Application" series of his own. He'll be building an Address Book which will be developed, as he describes it, using a loosely coupled architecture. ...
Template Overview
The Web Application Component Toolkit over at Sourceforge has a great overview of various HTML template techniques. ...
Happy Holidays!
I've tried to keep this blog to "just-the-facts" but today I'll bend the rules a little. I wanted to wish you a very happy holidays and hope the new year brings you much joy and happiness! ...
Update to GainCMS Web Site
Further to what I touched on in Marketing a Web Application, I've replaced the placeholder site on GainCMS.com with something more substantial. I put together a design I was happy with and begun adding in some content. The design is set up in such a way that I'll be able to grow the site without having to change the design too much. The site will be a continuous work in progress as I add more fu...
The Document Version Switcher
People handle web page updates in different ways. Some add extra text and bold it so people know it's been updated. Others use ins and del tags to highlight changes. Others couldn't be bothered, make their updates and move on. Allow me to present a new approach: The Document Version Switcher. The premise is simple. A control on the page allows users to "go back in time" and view previous versions...
Marketing a Web Application
I'll be straight. This isn't a how-to on marketing your application. I don't have any answers. What I do hope to do is tell you what I am doing and what I plan to do. Over time, we can revisit this topic and see what worked and what didn't. Web site First off, is the domain registration and setting up the web site that describes what the project is all about. Back in September, I registered gainc...
New functionality on snook.ca
I added some new functionality that will hopefully make your life easier. I've added RSS feeds for each category. That way, if only one or two categories interest you then you can subscribe to only those categories. Links to the category RSS feeds are available on the category pages which, while on the site, you can access from the Archives page or via the category link on an post. The other th...
Designing with CSS in Dreamweaver
Some may argue that WYSIWYG tools like Frontpage or Dreamweaver should never be used for web development. Dreamweaver, in particular though, is actually a formidable tool for developing sites that conform to web standards. On the Macromedia site, there is a tutorial which steps the user through using Dreamweaver to create CSS-based layouts. ...
Understanding Identity Columns (SQL Server)
SQLTeam.com has an article that discusses in some depth Identity columns. I particularly like the little tidbit on resetting the identity column: DBCC CHECKIDENT('TableName', RESEED, 7). ...
Investors, anyone?
I've been so busy with my day job and other matters of living that I just haven't found the time to focus on building my own application. My web and database servers are setup and ready to go. I even got some test scripts together to make sure everything was working as it should -- and it is. All I need is for someone to give me a salary for the next six months. Then I could spend all day develo...
I redesigned.
I debated whether to even post this. Of course I redesigned. I constantly tweak my site left, right and center. The web is permanently under construction. But it still impresses me to see that I didn't have to change any HTML to achieve close to the look I wanted. I say close because I rearranged one element so that the date appeared below the article title instead of above. I also got rid of the...
Quotations and Citations
There's one thing that Roger Johansson is and that is thorough. His most recent article on Quotations and Citations is a further testament to that. He offers some great advice on how to use and style quotes and block quotes. ...
Clear Links to Current Page with Unobtrusive JavaScript Version Two
To recap, I wanted some unobtrusive JavaScript that would automatically strip any link that was pointing to the current page. The problem with the first version was that initially, I didn't take anchors into account. A link to a page with an anchor was considered a different URL than one with an anchor. Then next step was to strip the links of all URLs that pointed to the current page regardless o...
Clear Links to Current Page with Unobtrusive JavaScript
After reading through how to turn off current page links using CSS on The Man in Blue, I decided to put together a way to accomplish the same using JavaScript. The technique would be straightforward: loop through all the links on the page and remove the tag if it's the same as the current page. The problem is that the W3C DOM doesn't seem to have a way of removing the current node while retaining...
Bookmark: ASP.NET Performance Techniques
Scott recaps Rob Howard's 10 tips for writing high performance web applications and adds some interesting info on pagination. Returning multiple recordsets is high on my list of optimizations. It's also one of the reasons I don't like MySQL. As much as possible, open the connection, get only the required data you need for the page, and then close the connection. ...
ASP.NET CAPTCHA
An ASP.NET approach to creating CAPTCHAs. CAPTCHAs are quick tests that humans can easily figure out but are difficult for computers. Luckily, I haven't seen too many of these pop up on blog sites. It seems like an unnecessary hassle. Someone needs to come up with a better way! ...
Bookmark: Search Engine Decoder
See which search engines feed their content to other search engines. Do we really need this many sites? ...
Working as Part of a Team
My initial thoughts in putting together this application was to build it by myself from beginning to end. Mostly because I didn't think anybody else would really be interested. A little because deep down I'm dealing with control issues. ...
Entering the World of Ruby
My curiousity has been piqued. After numerous comments and everybody saying how neat it was, I figured I'd take a gander. I'll try and touch on what I feel some of the strengths and weaknesses are. It wasn't clearly evident to me what Ruby was designed for. My initial thoughts were that it was a scripting language designed mostly for web development. I envisioned it being very similar to PHP. To...
Author Banning in MovableType
I use MovableType 3.1 and it has a decent feature of IP banning. Problem is, comment spammers change IP addresses very quickly. I needed another tool in the battle against the rising tide of spam. I basically copied the Ban IP functionality, renamed any reference of IP to author and voila: MT_authorban is born! The functionality works for me but because I had to make changes to a number of the ...
use of the :target attribute and conditional text
Ooh, this is a good one. Andreas over at Webgraphics talks of using the :target selector to add additional content or style after clicking on an anchor. Sorry IE users, you're left out in the cold again. ...
Branding is dead?
I've been mulling over this for a bit as it really seems absurd that people are arguing this. D. Kieth Robinson offers up some opinion on the matter as well. Anyways, I find arguments of branding is dead are often really about semantics. That be some specific definition the mere traditional methods of 'branding' no longer apply. Ho hum. I don't care what you call it. What it all boils down to ...
New Products
Two fabulous products that are MUST haves: Konfabulator has been released for Windows. It allows you to add various widgets like to-do lists and weather information to your desktop. But the design and polish on these widgets are absolutely fabulous. And be sure to download the full official release of Firefox 1.0. It's been my default browser for awhile now and it should be yours too! Also, for ...
Technology Choices: One Decision Made
I've hit that pivotal point. The database design is done, the prototype is far enough along, and I've set my list of requirements. I now actually have to decide what to program this thing in. And VOILA! It's PHP! Actually, it'll be PHP5, to be exact. It was a tough call but I'll explain why it edged out everything else. Cheap That's right. You can't beat free. Even though I'm on the fence on...
Database Design: Handling Unstructured Data
In a followup to my previous article on Database Design in the Building a Web Application series, I touch on how to handle unstructured data. When developing a database, it's often quite clear how to build the data model. Relationships are easy to spot and build upon. Every now and then, however, a troublesome scenario arises: unstructured data. Each module in GainCMS, for example, (ie: a web pag...
Ruby Links
I grabbed this list off of a slashdot article. Ruby Home Ruby Forum (new! primarily for beginners) Ruby Online Docs Ruby Project Archives, also here Ruby Package Manager (easy to install ruby apps) Ruby IDE (free!) Ruby One-Click Installer for Windows Ruby IRC channel: #ruby-lang at irc.openprojects.net Ruby Newsgroup Ruby Central DMOZ Add any links to Ruby resources you might have to the co...
Prevent Image Resize in MSHTML/DEC
A recent comment asked how to prevent people from resizing images within the DEC. The process to do so is relatively simple. We iterate through every image within the editor and attach the onresizestart event and then cancel the event. You'll also need to attach the event to every image that gets inserted into the editor after load. There's three components to putting this together. The first is ...
Building a Web Application: Technology Choices
In building a web application from scratch, you’ve got the flexibility to choose any language and platform to develop in. How do you choose? There are numerous factors that go into making that decision. Cost Cost is obviously a huge issue but cost can be measured in many ways. There’s the cost of the hardware and software; the cost of development; and the cost of maintenance. Softwa...
Database Design Choices
To follow up on the last article, I wanted to share some insight on a few of the decisions I made during this process. Handling Multiple Sites One of the decisions I had to make was whether to create a new database for every site that was created within the system or to store all information on all sites within a single database. In the end I decided that a new database will be created for ...
Building a Web Application: Database Design
Once we have our Requirements completed, we can begin modeling our data. Developing a data model can be a very straightforward task. Somewhat like programming, database design is “object oriented”. You determine what your objects are – otherwise known as entities – and then define the relationship between those entities. The diagram that you will end up with is called an ...
Revised Program Flow
Baby steps. I've revised the program flow to clarify the process of receiving a request from a web site user and how the response will be put together. This probably isn't too exciting but feel free to check out the new version. It's not much to look at but it should be a close representation of the final process. Allow me to touch on some of the items that I am trying to accomplish with this pr...
Validation and Content Management Systems
The hullaballoo over validation has surfaced again. I, personally, feel that validation is the goal to be achieved in every site. Mainly because it helps reduce errors. Errors are a vicious problem that can rear its quirky head when you least suspect. Whether you validate to HTML 3.2, HTML 4.01, or XHTML1.0, it doesn't really matter. For us technical types, maintaining a valid site is usually...
Bloglines, where are you?
How frustrating. Bloglines has suddenly stopped indexing one of my feeds. Even worse, it's my main article feed. Anybody using Bloglines probably thinks I haven't updated my site in a week (which obviously isn't the case). I sent them an e-mail on Oct 10th and received a fairly prompt reply that they were looking into it. Four days later and I haven't heard a word. Let's hope this issue gets re...
Iterative Design
If you've been following along in the Building a Web Application series so far, you'll have already seen how the design of the application has changed from it's initial visual design to the current prototype. However, I wasn't entirely happy with it. Allow me to introduce design #3. Only a few things have changed from the last version but I believe I gave it enough oomph that I won't feel the nee...
Building a Web Application: Prototyping
In creating your prototype, you gain insight on what the final product will actually look like. You can eliminate problems before you’ve gotten too deep into the programming to turn back or need to implement some kludgy fix. In developing my application, there are three components to the prototype development that I’ll be using: Visual Design HTML Prototype Usability T...
Upgrading from MovableType 2.64 to 3.1
I've gotten to a certain point in my life where I don't need to be on the bleeding edge of any application. The software running my site just happens to be one of them. After hearing of the latest version of MovableType a few months back, which happens to be the aforementioned software, I decided to hold off. Then yesterday, I got lambasted with about 150 spam comments. I couldn't come up with a ...
Squarespace
I was going to post the next installment to Building a Web Application on Friday but decided to wait until next Tuesday (it's a long weekend here in Canada). So, in the meantime, check out Squarespace. It's a hosted service with a niche market. Just like I'm looking to do. His niche is blogging. It's attractively designed and has some pretty interesting features. Definitely worth a look-see. The ...
Open Source vs. Closed Source
Consider this a sidebar to my ongoing series on Building a Web Application. A user commented that he thought "it should be an open source effort so [he’s] not going to help." Which was a really intriguing comment because I hadn't said either way whether it would be open source or not. I certainly understand how the person could have felt the implication of it being closed-source ...
The Usable Page Title
We almost forget about it. It's an afterthought, really. The <title> sitting up there in the <head>. It doesn't really add anything to the design of the page. But there are times when a user interacts with the page title. It appears at the top of the window, it appears when printing, it appears in search results and it's used when people bookmark your site. How can we help the user? El...
Building a Web Application: Requirements Gathering
Now that we have the idea for our web application, it's time to begin mapping out our application. It is important to create a visual model of various aspects before we ever write one line of code. In doing so, it will help eliminate any problems and ensure that functionality that needs to be in the application doesn’t get missed. You’ll be referring back to this map as you move forwa...
Five Design Trends
I may not be much of a designer (this site being case in point) but I still notice good design and certainly design trends. Back in June, Cameron Moll over at Authentic Boredom made some predictions. No predictions here, though. Just the facts, ma'am. Let's get this party started. The first item on this short list is the vertical drop shadow. Despite Cameron's prediction that the horizontal drop ...
Building a Web Application: The Idea
Some would say that the first step in building a web application is the requirements. But there's a very important step that needs to happen first. You need to determine the need. What problem are we trying to solve? Once you know what the need is, it's simple to develop the requirements. The Need What problem am I trying to solve? If you read part 1 then you'll have a sense of the need that I'm ...
Building a Web Application: Intro
So you want to build a web application? Well, so do I. I've built them before and I'll build them again but I have a specific project in mind this time and I thought I'd share my experiences with you. First, a little background... I started learning the process of web application development when I got my first job at a web design agency. Mostly custom developed for whatever the client needed sp...
Storing Values in Bits
When programming in scripting languages such as JavaScript or ActionScript, we store values directly in a variable or often in an array. While bitwise operations are often relegated for use in higher-level programming languages such as C++, there are advantages to using them in scripting languages as well. The premise behind storing values at the bit level is quite straightfoward. We simply store...
Software Design Patterns
Here's a list of various design pattern resources: dofactory.com: with C# examples Illustrated GOF Design Patterns in C# Part I: Creational Object Orientation Tips Microsoft patterns and practices ...
Opposites Attract in Internet Explorer
Let's start off with the code example: this is sample text <div style="padding:15px;"> <div><span style="margin-left: -16px; padding-left:15px; background-color: #CCC; border:none;">this </span>is sample text</div> </div> What happens in IE and Mozilla is that the background appears to start 16 pixels to the left. Perfect, ...
The Knowledge Bubble
Everything you know is contained in a bubble. As you learn about new topics your knowledge bubble gets bigger. It's a simple premise, really. Sometimes you think you have a really big bubble and then the realization of how little you know when somebody tells you about a new concept you've never heard of. You suddenly and furiously find yourself trying to increase the size of your bubble with this ...
The border-collapse dilemma
The border-collapse property is great but watch out for how your borders behave. You may find yourself in for a surprise. Why the surprise? Because IE and Opera behave differently than Mozilla in how it handles the table border when in collapse mode. IE and Opera handle it in a way that feels very intuitive. Any margin and table border simply pushes everything in from the top left of its 'box'. I...
Track Bloglines Readers
One of the downfalls of aggregators like Bloglines is that you never really know how many people are reading your site. With Bloglines in particular, you can see how many have subscribed to your feed but that doesn't necessarily tell you how often they actually read your stuff. In going through the log files for my site, I discovered that there is actually a way to track this. In my RSS feed, I h...
Default Mac or PC Fonts
A list of default fonts on OSX and System 7 over at Microsoft. There's also Code Style which covers most popular fonts over different platforms. ...
ADO error 800a01fb
I ran into this error when working on an ASP/SQL Server application. It was intermittent and would occur at random parts of the code. The part that was consistent was that it always occurred when trying to connect to the database. A reboot of the server seems to have solved the problem. Trying to google for a solution proved that everybody else hadn't a clue what was going on either. In testing a...
Web Design Tips for Print Designers
I have 3 quick tips that will make designing for the web easier for everybody involved! 1. Make your canvas bigger than the area you are designing for. How does making the canvas larger help with web design? It forces you to think of the design outside of the fixed widths of your canvas. Probably one of the most common problems I run into with a designer who has never had to code their own crea...
Perma your RSS!
This is really just to air a pet peeve of mine as it's happened a couple times recently (Molly.com for example). We web developers talk of permanent links for our HTML pages and talk of setting up redirects for pages that actually move but what about RSS feeds? What do you do when you decide to move where your feeds are located? Keep the old RSS feed in the same place but only give it one entry. ...
A FAQ of rejected ideas
If your company actually has an intranet, it's probably filled with lots of policy about this and that. It might even have a tool to search for departments or employees. But have you ever had an idea and presented it to your boss only to have them say, "oh, we already looked into that and decided it wasn't a good idea." What if the intranet included stuff like this? I call it "The FAQ of rejected ...
Scripting DNS Entries using VBScript
Refer to this article on IISFAQ.com. Requires a COM object to be installed. ...
Importing CSS and images into a secure page
There's two types of items that you'll normally import into a secure HTML page: 1. CSS and 2. Images. The behaviour you'll run into, however, is inconsistent across browsers. 1. CSS When trying to import a stylesheet from an insecure server (http) using either the link tag or @import into a secure page (https) you'll get some odd behaviour. In IE, the lock to indicate that the page is secure dis...
IA and CSS
Presentation on integrating CSS and Information Architecture (IA) design over at natek. Interesting ideas indeed. ...
Creating Accessible Alternatives of Corporate Site
After hearing of the Odeon fiasco in the UK, it's nice to know that it couldn't (shouldn't?) happen in Canada. The Canadian Intellectual Property Office states: Another category of user to benefit from exceptions is persons with a "perceptual disability." This term refers to someone who has difficulty reading or hearing. Persons with a perceptual disability, or at the request of a person with a ...
Custom Borders and Corners
Just needed to bookmark this from 456 Bera Street: Flexible box with custom corners and borders ...
Doing SQL searches on accented characters
Here's how to force a collation type, in this particular case, it'll ignore case and accents when doing a search in MS SQL Server: SELECT column1 FROM Table1 WHERE column1 = 'user' COLLATE SQL_Latin1_General_Cp850_CI_AI ORDER BY column1 COLLATE SQL_Latin1_General_Cp850_CI_AI An article on DBAzine.com goes into detail on this and has all the info you need. Also, be sure to check out the TSQL refe...
Getting your DIVs to behave like TABLEs
"Oh, the complexity of those multi-column layouts! It was so much easier with tables!" I hear you say. You'd be surprised at just how easy it can be to put together a multi-column layout with CSS2.1. UPDATE: I've added a couple cross-browser options along with descriptions. First, check out the example. If you don't see a nice three column layout then you're using IE. Stop it. Go download Firefox...
Improved Bulletproof Slants
Dan Cederholm has a great article on implementing a scalable slanted divider between navigation. My issue with it is that the text, especially as you increase or decrease the font size, isn't exactly centered between the slants. To achieve centering, we simply switch from pixels to em's. Original: #nav a { padding: 6px 30px 6px 5px; ... } With em's: #nav a { padding: 0.5em 2.5em 0.5em 1em; ... }...
Hit Bug in Firefox and Flash
Here's an interesting problem that I ran into. I had a Flash movie sitting in an absolutely positioned div. In testing, there were times where a portion of the Flash movie was sitting too high and was actually positioned partly off the page. In this situation, the "live" area to click on a button within the Flash movie had shifted by the amount that the movie was offset. In other words, if the Fla...
label bug in Netscape 6
Applying style to the label tag makes it disappear. Add a span tag inside and apply the style to the span instead. ...
Drop down menu
While I'm not a big fan of using drop down menus, I wanted to have this bookmarked just in case. http://www.digital-halide.com/cssmenu/multi/ ...
Designing Data Part 2: Adding Style
The goal of this two-part article is to demonstrate how to create XHTML-compliant tables and how to style them effectively using CSS. In Part 2, we apply style to the structure of our document that we created in Part 1. Part 2: Adding Style The TABLE element To make our table look good, I'll touch on a few of the more important properties: border, border-collapse, border-spacing and empty-cell...
Definition List or Table?
A recent article on And all that Marlarkey talks of using a definition list to add more semantics to an e-commerce site. But does it? After reading and re-reading the specs on using a definition list at the W3C, I'll admit that it could be a valid implementation. However, could using a table bring more relevance to the data and still be styled to its fullest? Yes and no. While a table certainly a...
window.location on a Mac
Sometimes in JavaScript, you may want to redirect a user to another URL. This is often done setting the window.location properly like so: window.location = "http://snook.ca/'; However, Safari and IE 5.2 for Mac (at least on OSX) behave a little differently than browsers on the PC. I put together this basic test page in order to see which scenarios work and which don't. <script type="text/jav...
Designing Data Part 1: Table structure
The goal of this two-part article is to demonstrate how to create XHTML-compliant tables and how to style them effectively using CSS. In Part 1, we tackle the basic structure of the table. Part 1: Table Structure The first step in any web page development is taking the data and marking it up using semantic and standards compliant XHTML. Let's start with a basic example that you've likely used bef...
Logo design
I imagine logo design can be pretty difficult, but sometimes a design is just too close. Check out Firewhite and Watchfire to see what I mean. ...
Custom 404
Setting up a custom 404 page is super easy in both Apache and IIS and is highly recommended. It helps keep your branding consistent even when an error occurs -- some ISPs will display their info when an error occurs. Plus, it allows you to display information that could be more helpful in letting your users find what they were looking for such as links to common sections or a search field. ...
Keep it simple
As it turns out, the conversion from the old design to the new has gone surprisingly well. I hope that came from keeping the new design simple. There's only three images in use... there's the repeating background, the logo, and the horizontal rule. That's it. CSS wise, there's only one font: Arial. My new motto: keep it simple. My HTML structure has changed enough from the past that there really ...
The slow redesign process
Having not been a huge fan of the old green design, I'm currently working towards a redesign. The design itself is essentially done and I have the inside template in place. For the next few days, it'll be a mish-mash of design changes as I revamp everything. I feel pretty good about the new design and should make it easier for me to manage everything once it's done. ...
Run a jar file in JSP
Runtime.getRuntime().exec("java -jar /path_to_jar/myfile.jar"); This should work on a windows or unix box (the above was tested on a unix box running Tomcat). ...
Create MD5 hash in JSP
String plainText = "123456"; MessageDigest mdAlgorithm = MessageDigest.getInstance("MD5"); mdAlgorithm.update(plainText.getBytes()); byte[] digest = mdAlgorithm.digest(); StringBuffer hexString = new StringBuffer(); for (int i = 0; i < digest.length; i++) { plainText = Integer.toHexString(0xFF & digest[i]); if (plainText.length() < 2) { plainText = "0" + plainText; } ...
min-height
As has been documented elsewhere, you can use expressions to mimic some nice CSS features that Mozilla already supports. My quick min-height workaround: height: expression('32px'); min-height: 32px; Since IE's height property behaves like min-height, I just set it using expression so that IE is the only browser to recognize the property. All other browsers should see min-height and use according...
best way to set up resizable fonts
it's been mentioned elsewhere numerous times and here it is again: set the body using em's (.75em is good if you like a smaller font than normal) and then use percentages for the rest of the page. Works well for IE, N4 and N6. N4 seems to retain the body size for headings if a specific size hasn't been set on the headers. An example of this: body {font-family: Arial, Helvetica, sans-serif; fo...
CDOSYS (CDO for Windows 2000)
Here's a code block for sending out an e-mail using CDOSYS. ' create the e-mail set o_msg = createobject("cdo.message") set o_conf = createobject("cdo.configuration") With o_conf.Fields .Item("http://schemas.microsoft.com /cdo/configuration/sendusing") = 2 .Item("http://schemas.microsoft.com /cdo/configuration/smtpserver") = mailserver .Update End Wit...
Super Quick Launch toolbar for free
If you're like me, you probably have numerous key applications that you use on a regular basis. In fact, you may even have them on your Quick Launch taskbar. But what if you could categorize them? Or make sub-folders that opened when you clicked on them? Here's how to do it... The first step is to hijaak the Links toolbar. It behaves differently than the Quick Launch or any custom toolbar. I'll ex...
a couple of bookmarks
Macroworx Filing Cabinet II - a neat shareware application for storing links to application shortcuts. Style Master 3.5 - application for building CSS. Haven't tried it out yet but I will. ...
A new kind of spam
A number of blogger sites have a list of other sites who refer to them. They're often in place for the webmasters to see how popular they are but these referral lists can be tricked into displaying links to web sites that do not truly link to them. I've noticed the occasional hit to my referrer list, mostly from porn sites and most recently, one from John Kerry's presedential campaign. This is an...
Flash Frustration
As I'm sure is documented elsewhere, browser implementation of the Flash plugin is inconsistent. In particular, access to FSCommand or Javascript access to and from the Flash plugin is non-existant in Firebird and Firefox. Nor does it work on a Mac (except in N6.2+ apparently but how many users use it, in the grand scheme of things). As well, there's actually no way to detect the browser from with...
Using CSS expressions in IE
Interesting article on using expressions for CSS values in IE. The article focuses on mimicking the max-width property available in other browsers. Also, the comments on Andy Budd's site are good for reference. ...
GeoNames
Just because I found it interesting, find any site geographically located near mine using GeoNames. Now, technically, this finds people near the latitude and longitude that I entered which happens to be the city I live in here in Canada. The web site itself is probably physically sitting in the United States somewhere. ...
Firefox not ready for the mass market
I love Firefox but customizing to any degree and it becomes obvious that it needs a lot of work before it hits a full version of 1.0. While web page rendering is pretty spot on, there are a number of quirks that would certainly prevent me from recommending it to friends and family. It's the spit and polish of any application that really makes it shine. My quick list of things that I think would ...
Using NEWID to Randomly Sort Records
There's an easy way to Randomly Sort Records in SQL7 (on Windows 2000) and SQL2000. Using the NEWID() function will automatically generate a random UID. To use it to randomly sort records: SELECT * FROM mytable ORDER BY NEWID(); To randomly select a record from a table: SELECT TOP 1 * FROM mytable ORDER BY NEWID(); A very handy trick indeed. ...
Disable Flash plugin
Need a quick and easy way to disable the flash plugin for testing purposes? After discovering that almost all tools on the market didn't work or just required too much fiddling to get them working, I have found a quick way that works. This is on Windows 2000. Rename flash.ocx that resides in the c:\winnt\system32\Macromed\Flash\ folder. Voila...plugin disabled. Rename it back and it's re-enabled!...
Colour Contrast Check
Based on a tool that I use fairly often from HP, I wanted to make something that was easier for myself to use. Plus, it improves on some bugs that exist in the HP version. My Colour Contrast Check Tool. ...
List of CSS-only hacks
Just needed to bookmark this list of CSS hacks. Very thorough and very useful. ...
Take a message!
For fun, I put together a mock design for those pink message slips that you tend to find in most offices. The (hopefully) dotted lines are INPUT tags. Now, there are certainly ways that this could be improved... For the areas that look like they should be checkboxes, could be. The reason they're not is purely for style reasons. Anyways, if you find a use for it, let me know... ...
Moving MovableType a success
After hearing of a promotion for free web hosting from 1and1.com, I decided to sign up and see how good it is. My last host wasn't bad but the server did seem to go down for 5-10 minutes on a regular basis. But in moving stuff over, I had to move over my MovableType installation. After hearing of numerous horror stories, I was concerned. I'm using the BerkleyDb configuration so I downloaded my MT ...
TIPS, TRICKS & BOOKMARKS
I'm Jonathan Snook and this is my site where I like to write about web design and development. Want to 







