Technology

Technology

Marketing 101

To view a web version of this message, visit here.
Be sure to add info@jaxbeachtech.comto your address book to ensure future email deliveries.
Australian scenes
 July 2008

Hello,
I want to share with you an incredible asset that has simplified my life and the operation of my law office - my husband, Don !  He is an Information Technology consultant and he can help and your office tremendously.

Your staff and office managers will enjoy working with him and will learn from him. (please forward this email to your office manager to give Don a call)

The benefits to my law office from Don’s handling of our computer needs have been so valuable that I wanted to share it with other attorneys.

Don has offered to provide a free analysis of how your office rates with its  technology use – how does your website rank?  Are there cost saving measures you are not using? Are you stuck in a revolving door of equipment upgrades and replacement?  and more.  He’ll come there and meet with your office or network manager and he’ll do an inspection and analysis – give you your “grade” and tell you how you can improve it!

To take him up on this offer schedule the appointment with his assistant, Nan, at 321-221-0519  or email her at nolson@jaxbeachtech.com. You can also contact Don directly at (904) 591-7992 or by email: don@jaxbeachtech.com


Expect Miracles,Carla Miller

Sincerely Yours,






Carla Miller Esq.
www.msjlaw.us

Dell PowerEdge Server
THOUGHTS

I love deadlines. I like the whooshing sound they make as they fly by.

Douglas Adams

THE FUTURE

The best way to predict the future is to invent it.

Alan Kay

We are committed to protecting your privacy and will never share, rent or sell your personal information to third parties.

4417 Beach Blvd Suite 300  Jacksonville, FL 32207
Law office phone: (904) 398-2900

Subscribe / Unsubscribe / Contact
17 Jul 2008

New JBT promotional postcard

Promo
Here's the new promo piece we are mailing out this month. (Click for a more detailed view)

Highlighting the following services:
  • Data Security
  • Problem Solving
  • System Upgrades
  • Disaster Planning
  • Technology Audits
  • Wireless Networks
  • Project Management
  • EMR* Implementations
  • HIPAA** Compliance
  • Law Practice Management
* Electronic Medical Record Systems
** Health Insurance Portability and Accountability Act
17 Jul 2008

Terminating contracts with IT vendors

What is going on these days ? In the last week I have entered into projects with two separate customers who have been terrorized (the customer's wording, in one case) by their existing IT vendor, and want to find a new provider who won't attack them... I find it hard to think with. I have been told stories that demonstrate extremely poor character being played out in cases where the IT vendor has had a long-term (more than 1 year) relationship in place. One customer put it this way: "familiarity breeds contempt". In one example recently, I found what can only have been a deliberate act of sabotage in the customer's computer equipment, leaving one of his machines inoperable. Perhaps it was a mistake, but then that implies simple incompetence as the only other possibility. Either way, there is clearly a need to maintain a civilized and amenable relationship, customer to IT contractor, or just find another vendor. The really scary part of this is how much damage an out-of-control IT guy armed with ALL the passwords for your IT infrastructure [really the "keys to the kingdom"] can do in a very short space of time. Can you imagine ? All your data GONE.
10 Jul 2008

PDF OCR Capabilities...

From: Planet PDF

A couple of key points here. First, this discussion applies only to Acrobat, not to Reader. Second, prior to Acrobat 6, Adobe allowed you to perform "paper capture" with Acrobat only up to 50 pages. If you have Acrobat 4 or 5, you've got a 50-page limit (although, of course, there are ways to work around it.) I think that Adobe still offers the Capture Server product for large scale scanning and OCR work. It's meant for use in a high-volume production environment, such as a litigation support vendor. In my experience, in government at least, people were leery of using it because you paid by the page. That is, you could buy a 100,000-page license and then you have to fill 'er up again for the next 100,000. Acrobat 6 Professional allows you to "capture" or OCR large documents without buying the separate server, but is still not truly a substitute for industrial strength tools in a production environment. It is, however, capable of a surprising level of automation, and as far as I can tell, it's not dumbed down in its character recognition capabilities.

So here you are with a big old TIFF file. Or, if you are like me and occasionally have opposing counsel that just wants to jerk your chain, a PDF file that was produced in "image only" format from MS Word and contains no text.

In Acrobat 6, go to File > Create PDF > From File and select the TIFF file that you want to convert. That brings your image into the PDF format, but still doesn't make it word-searchable.

Note: You can also choose "From Multiple Files" if you want to do a batch.

Now, go to Document > Paper Capture > Start Capture. The dialog that comes up gives you some choices. You can do a page, all pages, or a range (which might be a good choice if you have, say, a few pages of text followed by lots of charts). Be sure to click the "Edit" button to see the other things you can do, like select English as the recognized language. The PDF Output Style choice you probably want is "Searchable Image (Exact)." As a rule, I wouldn't do any downsampling of the image, although this might reduce the size of the resulting file.

Click OK, and the OCR engine will start up. If you are running a normal Windows box of moderate memory and processor speeds, pretty much every other process will choke while Acrobat reads the document and converts the pictures of letters into text letters. If it's a heavily formatted, 1,000-page document, go have lunch or save it for the end of the day because this is going to take a while. Adobe does provide a process window that keeps you apprised of events.

When it's done, don't forget to File > Save the document. And there you have it. (At this point, I always like to do a little test by running a quick search on a word that I see on the first page. It just makes me feel better to know that it worked. I also have a continuing dialogue about what to do with the original TIFF file...)

09 Jul 2008

Windows needs an enema...

In a recent article in the NY Times titled Windows Could Use a Rush of Fresh Air, RANDALL STROSS makes the argument that Microsoft Windows needs to be re-architected completely - ABSOLUTELY I say. I cannot tell you how many man-DAYs of work I have had to do that were completely avoidable given a decently designed operating system, rather than the cobbled-together junk that is MS Windows...
06 Jul 2008

IT Security (Network Data Security) (2170)

Associate in Science or Associate in Applied Science

Securing network data, communications and Internet transactions is now one of the highest priorities in business and industry worldwide. Designed for IT professionals and others who want to gain an understanding of data and Internet security issues, technologies and administrative practices, our Network Data Security degree program leads to a wealth of career opportunities in network and e-commerce security. In this lab-based, hands-on program, you will utilize the latest security software and hardware. The program is taught at the practical applications level for those who will design, install, manage and troubleshoot security measures in data networks.

The Program

This is a limited access degree program. Students enrolling in this course should have a basic knowledge of network systems as gathered from work experience, college work, or self-learning, and an interest in exploring an exploding and dynamic field. CET 2759, CCNA Certification or consent of instructor is required to enroll.

Prerequisites

CET 2759, CCNA Certification or consent of instructor.

Career Opportunities, Rapid Placement

FCCJ is the regional resource for employers in every type of technology. Our partnerships with Cisco Systems, Dell, IBM, Microsoft, Oracle and Sun Microsystems provide career connections. An FCCJ intranet site posts jobs targeting our students. Graduates are regularly employed by CSX, JEA, Blue Cross Blue Shield, the City of Jacksonville, Medtronic, Mayo Clinic and other regional employers including the government and military.

Annual Salaries

Around $62,000.

Cost

Estimated cost of tuition is $4,183 (tuition rated for Florida residents, as of 7/07). Contact the program manager about additional costs (textbooks, fees and materials).

Need More Information? Contact:

Lance Wallace, Advanced Technology Center, 904.598.5676

Curriculum

Course Number and Title
Credits
General Education
  *Mathematics
3
  *Social and Behavioral Sciences
3
ENC 1101 English Composition I
3
  *Communications Category B
3
  *Humanities
3
  Credit Hours
15

Required Professional Courses
CET 2626 Building Scalable Networks
3
CET 1520 Unix Fundamentals
3
CET 2752 Network Administration
3
CET 2687 Security+
3
CET 2481 Designing and Building Wireless
Networks
3
CET 2660 Managing Network Security
3
CET 2665 Advanced Firewall Administration
3
CET 2662 Techniques of Computer Hacking
and Incident Handling
3
CET 2521 Unix Administration I
3
CET 2681 Intrusion Detection Systems and
Auditing
3
CET 2627 Building Multilayer Switched Networks
3
CET 2796 Securing Windows
3
CET 1943 Internship
3
  Credit Hours
39

Professional Electives (minimum 9 credit hours)
OST 1581 Professional Development
3
CET 2628 Building Remote Access Networks
3
CET 2629 Internet Troubleshooting Support
3
LIS 1002 Information Literacy
1
CET 1630 Fiber, Voice and Data Cabling
3
CET 2636 Home Integration
3
CET 2880 Data Forensics
3
CET 2623 Deploying Quality of Service
3
CET 2522 Unix Administration II
3
CET 2682 Voice over IP (VoIP)
3
CET 2675 IP Telephony
3
CET 1175 Technical Support
3
  Credit Hours
9
 
Total Credit Hours
63

*Refer to A.S./A.A.S. degree General Education Requirements.

Note

You have two options in this program: the associate in science (A.S.) degree, which can prepare you for employment or transfer to a state university, and the associate in applied science (A.A.S.) degree, which is intended primarily for students who want immediate employment after graduation. If you choose the A.S. degree you must take MAC 1105, MGF 1106 or a higher level mathematics. The A.A.S. degree requires MAT 1033 or higher. Please see an advisor to determine the option that is best for you.

18 Jun 2008

Ubuntu Linux as a Windows Server replacement...

I have recently setup a Linux server to begin serving a small (12 users) legal firm that had Windows Small Business Server 2003 running. The issue was that they were not doing anything special, just FILE SERVING, and so a Linux/SAMBA solution would get them away from needing anything in the way of a proprietary server... So I took a good look at the config details, crossed my fingers and went for it - and was very pleasantly surprised ! It was a simple task, and I have since found the software to be very stable, very fast, and easy to maintain. Helpful links ? Well, it is mainly three different pieces of software:
  1. 1. www.ubuntulinux.com - this is the Linux distribution from http://www.canonical.com/ who do a great job of packaging the thousands of different projects together into an easily imnstalled and managed whole...
  2. www.samba.org - this is the package that originated at my school in Canberra, Australia (yes - that's the capital of Australia for those who didn't recognise the name !) Samba provides all of the windows specific protocol support to allow the Linux server to play nice with the windows workstations etc.
  3. www.webmin.org - this is the management tool that lets you install, maintain and monitor most major software projects in the Linux environment - web browser based, very easy and flexible. Great product.
So overall, it has been very cool to do this, and the preformance of the new server is more than I had hoped for. Go ahead and leave a comment below if you have anything to add !
15 Jun 2008

Auto-start VNC On Server

FROM: http://themorningflight.com/index.php/2008/03/24/auto-start-vnc-on-server/

Mar 24th, 2008 by graham

I wanted to know how to get VNC to auto-start on my server without me having to manually do it on the server with a monitor connected. I went to the Ubuntu forums but found no answer there. After experimenting I discovered it was not complicated after all. It seems I had assumed VNC did not auto-start on the server. It does! But some things needed to be set correctly first.Ubuntu Logo

All the following directions are for Ubuntu (Gnome).

A friend helped me get started. He advised me not to install the server version of Ubuntu as I was going to want to see a Gnome interface like the one I have been using on my main desktop. So I installed the normal Ubuntu desktop, in my case ‘Gutsy’ (7.10).

Step 1. Ensure vnc-common and vncserver are installed on the server by using System> Administration> Synaptic.

Step 2. Go to System> Preferences> Remote Desktop> tick ‘allow others to view your desktop’ and where it says ‘When a user tries to view or control your desktop’ DO NOT TICK THAT BIT as no one will not be there to approve your login. Instead tick ‘require the user to enter this password’ and enter a password you want to use when you login, then click close.

Step 3. Start the server with a monitor connected to allow Ubuntu to set the correct screen resolution. Then go to System> Preferences> Screen Resolution> Tick the box that says ‘make default for this computer’. Don’t forget to then click ‘apply’.

Step 4. Go to System>Administration>Login Window>Security Tab>tick Enable Automatic Login and then select the user (you, not root).

Now try it out. Reboot the machine with a monitor connected. From another computer access the server with VNC. You should now see your Gnome desktop. Well done! BEFORE YOU LOG OUT click the power icon and choose ‘lock screen’. That is it, leave it.

ALWAYS leave the server with the screen locked. An open desktop is a security risk, even though Ubuntu is very secure.

I don’t know if any of this will change much with the new release of Ubuntu but the VNC viewer is changing in Ubuntu 8.04 to Vinagre so viewing will be different.

Ubuntu 8.04 ‘Hardy Heron’ is out now. Windows upgrades every 5 years or so, Ubuntu upgrades every 6 months!

Have fun!

Ubuntu 8.04 coming soon
13 Jun 2008

Apache2: Hosting multiple websites

www.debian-administration.org/articles/412
Posted by Steve on Thu 6 Jul 2006 at 22:03

One of the most common Apache2 questions I've seen on Debian mailing lists is from users who wonder how to host multiple websites with a single server. This is very straightforward, especially with the additional tools the Debian package provides.

We've previously discussed some of the tools which are included in the Apache2 package, but what we didn't do was show they're used from start to finish.

There are many different ways you can configure Apache to host multiple sites, ranging from the simple to the complex. Here we're only going to cover the basics with the use of the NameVirtualHost directive. The advantage of this approach is that you don't need to hard-wire any IP addresses, and it will just worktm. The only thing you need is for your domain names to resolve to the IP address of your webserver.

For example if you have an Apache server running upon the IP address 192.168.1.1 and you wish to host the three sites example.com, example.net, and example.org you'll need to make sure that these names resolve to the IP address of your server.

(This might mean that you need example.com and www.example.com to resolve to the same address. However that is a choice you'll need to make for yourself).

Since we'll be hosting multiple websites on the same host it makes a lot of sense to be very clear on the location of each sites files upon the filesystem. The way I suggest you manage this is to create a completely seperate document root, cgi-bin directory, and logfile directory for each host. You can place these beneath the standard Debian prefix of /var/www or you may use a completely different root - I use /home/www.

If you've not already done create the directories to contain your content, etc, as follows:

root@irony:~# mkdir /home/www

root@irony:~# mkdir /home/www/www.example.com
root@irony:~# mkdir /home/www/www.example.com/htdocs
root@irony:~# mkdir /home/www/www.example.com/cgi-bin
root@irony:~# mkdir /home/www/www.example.com/logs

root@irony:~# mkdir /home/www/www.example.net 
root@irony:~# mkdir /home/www/www.example.net/htdocs
root@irony:~# mkdir /home/www/www.example.net/logs
root@irony:~# mkdir /home/www/www.example.net/cgi-bin

root@irony:~# mkdir /home/www/www.example.org 
root@irony:~# mkdir /home/www/www.example.org/htdocs
root@irony:~# mkdir /home/www/www.example.org/logs
root@irony:~# mkdir /home/www/www.example.org/cgi-bin

Here we've setup three different directory trees, one for each site. If you wanted to have identical content it might make sense to only create one, and then use symbolic links instead.

The next thing to do is to enable virtual hosts in your Apache configuration. The simplest way to do this is to create a file called /etc/apache2/conf.d/virtual.conf and include the following content in it:

#
#  We're running multiple virtual hosts.
#
NameVirtualHost *

(When Apache starts up it reads the contents of all files included in /etc/apache2/conf.d, and files you create here won't get trashed on package upgrades.)

Once we've done this we can create the individual host configuration files. The Apache2 setup you'll find on Debian GNU/Linux includes two directories for locating your site configuration files:

/etc/apache2/sites-available

This contains configuration files for sites which are available but not necessarily enabled.

/etc/apache2/sites-enabled

This directory contains site files which are enabled.

As with the conf.d directory each configuration file in the sites-enabled directory is loaded when the server starts - whilst the files in sites-available are completely ignored.

You are expected to create your host configuration files in /etc/apache2/sites-available, then create a symbolic link to those files in the sites-enabled directory - this will cause them to be actually loaded/read.

Rather than actually messing around with symbolic links the Debian package includes two utility commands a2ensite and a2dissite which will do the necessary work for you as we will demonstrate shortly.

Lets start with a real example. Create /etc/apache2/sites-available/www.example.com with the following contents:

#
#  Example.com (/etc/apache2/sites-available/www.example.com)
#
<VirtualHost *>
        ServerAdmin webmaster@example.com
        ServerName  www.example.com
        ServerAlias example.com

        # Indexes + Directory Root.
        DirectoryIndex index.html
        DocumentRoot /home/www/www.example.com/htdocs/

        # CGI Directory
        ScriptAlias /cgi-bin/ /home/www/www.example.com/cgi-bin/
        <Location /cgi-bin>
                Options +ExecCGI
        </Location>


        # Logfiles
        ErrorLog  /home/www/www.example.com/logs/error.log
        CustomLog /home/www/www.example.com/logs/access.log combined
</VirtualHost>

Next create the file www.example.net:

#
#  Example.net (/etc/apache2/sites-available/www.example.net)
#
<VirtualHost *>
        ServerAdmin webmaster@example.net
        ServerName  www.example.net
        ServerAlias example.net

        # Indexes + Directory Root.
        DirectoryIndex index.html
        DocumentRoot /home/www/www.example.net/htdocs/

        # CGI Directory
        ScriptAlias /cgi-bin/ /home/www/www.example.net/cgi-bin/
        <Location /cgi-bin>
                Options +ExecCGI
        </Location>

        # Logfiles
        ErrorLog  /home/www/www.example.net/logs/error.log
        CustomLog /home/www/www.example.net/logs/access.log combined
</VirtualHost>

Finally create the file www.example.org:

#
#  Example.org (/etc/apache2/sites-available/www.example.org)
#
<VirtualHost *>
        ServerAdmin webmaster@example.org
        ServerName  www.example.org
        ServerAlias example.org

        # Indexes + Directory Root.
        DirectoryIndex index.html
        DocumentRoot /home/www/www.example.org/htdocs/

        # CGI Directory
        ScriptAlias /cgi-bin/ /home/www/www.example.org/cgi-bin/
        <Location /cgi-bin>

                Options +ExecCGI
        </Location>


        # Logfiles
        ErrorLog  /home/www/www.example.org/logs/error.log
        CustomLog /home/www/www.example.org/logs/access.log combined
</VirtualHost>

Now we've got:

  • Three directories which can be used to contain our content.
  • Three directories which can be used to contain our logfiles.
  • Three directories which can be used to contain our dynamic CGI scripts.
  • Three configuration files which are being ignored by Apache.

To enable the sites simply run:

root@irony:~# a2ensite www.example.com
Site www.example.com installed; run /etc/init.d/apache2 reload to enable.

root@irony:~# a2ensite www.example.net
Site www.example.net installed; run /etc/init.d/apache2 reload to enable.

root@irony:~# a2ensite www.example.org
Site www.example.org installed; run /etc/init.d/apache2 reload to enable.

This will now create the symbolic links so that /etc/apache2/sites-enabled/www.example.org, etc, now exist and will be read.

Once we've finished our setup we can restart, or reload, the webserver as the output above instructed us to do with:

root@irony:~# /etc/init.d/apache2 reload
Reloading web server config...done.
root@irony:~# 

16 Apr 2008

CSS: How to size text using ems

posted 18th May 2004

  • Text for the screen is sized with CSS in terms of pixels, ems or keywords. As most of us know, sizing with pixels is easy: get your selector and give it a font-size – no more thought required. Sizing with keywords is more complicated and requires a few workarounds, but you’re in luck as the techniques are well documented. That leaves ems. At this point people often leg it. ‘Ems are too inconsistent,’ they say, ‘they’re too hard; they never work.’ Well that may be the received wisdom, but if ever the was a case of FUD then this is it. I will now attempt to show you how ems can be as quick and easy to use as pixels.

    Why ems?

    If the world were an ideal place, we’d all use pixels. But it’s not, we have the broken browser to contend with. IE/Win will not allow readers to resize text that has been sized in pixels. Like it or not, your readers will want to resize text at some point. Perhaps they are short-sighted, doing a presentation, using a ridiculously high resolution laptop or simply have tired eyes. So unless you know (not think) your audience won’t be using IE/Win or will never wish to resize their text then pixels are not yet a viable solution.

    Keyword-based text sizing will allow all browsers to resize text so this is a possibility, but I don’t find it gives me the precision that pixels would give me. Using ems however, allows all browsers to resize text and also provides pixel-level precision and so they tend to be my unit of choice.

    Get on with it

    OK let’s dive into ems. I’ll show you, from scratch, how to size text in a document using ems. I’ll assume throughout that we are dealing with a browser set to ‘medium’ text. The default size for ‘medium’ text in all modern browsers is 16px. Our first step is to reduce this size for the entire document by setting body size to 62.5%:

    BODY {font-size:62.5%}

    This takes 16px down to 10px which I’m using purely because it’s a nice round number for example purposes – 10px text is too small for the real world. From now on it’s easy to think in pixels but still set sizes in terms of ems: 1em is 10px, 0.8em is 8px, 1.6em is 16px, etc. If you are laying out your document using CSS (which you are, right?) then you have probably used a few divs to group together elements. Apply text-size to these divs and your job is almost done. Consider a two column layout with header and footer:

    <body>
    <div id="navigation"> ... </div>
    <div id="main_content"> ... </div>
    <div id="side_bar"> ... </div>
    
    <div id="footer"> ... </div>
    </body>
    
    #navigation {font-size:1em}
    #main_content {font-size:1.2em}
    #side_bar {font-size:1em}
    #footer {font-size:0.9em}

    So this would give us a document where text in the navigation and side bar is displayed at 10px, the main content is 12px and the footer is 9px. There now remains a few anomalies to sort out (you’d have to do this even if you were sizing in pixels). In Mozilla-based browsers, all heading elements in our aforementioned #main_content div will be displayed at 12px whether they are an H1 or an H6, whereas other browsers show the headings at different sizes as expected. Applying text-sizes to all headings will give consistency across browsers, for example:

    H1 {font-size:2em}  /* displayed at 24px */
    H2 {font-size:1.5em}  /* displayed at 18px */
    H3 {font-size:1.25em}  /* displayed at 15px */
    H4 {font-size:1em}  /* displayed at 12px */

    A similar job needs to be done on forms and tables to force form controls and table cells to inherit the correct size (mainly to cater for IE/Win):

    INPUT, SELECT, TH, TD {font-size:1em}

    And so to the final tweak and the bit folks seem to find most tricky: dealing with nested elements. We’ve already touched upon it with our headers, but for now let’s look more closely at what’s going on. First of all we changed our body text to 10px; 62.5% of its default size:

    16 x 0.625 = 10

    Then we said our main content should be displayed at 12px. If we did nothing, the #main_content div would be displayed at 10px because it would inherit its size from the body element – its parent. This implies that we always size text relative to the parent element when using ems:

    child pixels / parent pixels = child ems
    12 / 10 = 1.2

    Next we wanted our h1 heading to be 24px. The parent to our h1 is the main_content div which we know to be 12px in size. To get our headings to be 24px we need to double that so our ems are:

    24 / 12 = 2

    And so it goes on. Tricky stuff occurs where rules like this are applied:

    #main_content LI {font-size:0.8333em}

    This rule implies that all main content list items should be displayed at 10px. We use the same straight forward maths to achieve this:

    10 / 12 = 0.8333

    But what happens when one list contains another? It gets smaller. Why? Because our rule actually says that any list item in the #main_content div should 0.8333 times the size of its parent. So we need another rule to prevent this ‘inherited shrinkage’:

    LI LI {font-size:1em}

    This says that any list item inside another list item should be the same size as its parent (the other list item). I normally use a whole set of child selectors to prevent confusion during development:

    LI LI, LI P, TD P, BLOCKQUOTE P {font-size:1em}

    And that’s it. When sizing text in ems there’s really one rule to remember: size text relative to its parent and use this simple calculation to do so:

    child pixels / parent pixels = child ems

    Some helpful tools

    Pixy’s list computed styles is fabulous bookmarklet which shows the cascade of calculated font sizes (or any other CSS property). Mozilla’s DOM Inspector is even more powerful as it allows you to see which CSS rules are affecting any given element in order of cascade priority so you can see why your text is or isn’t changing size when you expected it to.

    If you’re finding the maths all a bit complex, try using Riddle’s handy em calculator.

    And finally… what is an em?

    Classically, an em (pronounced emm) is a typographer’s unit of horizontal spacing and is a sliding (relative) measure. One em is a distance equal to the text size. In 10 pixel type, an em is 10 pixels; in 18 pixel type it is 18 pixels. Thus 1em of padding is proportionately the same in any text size.

    Update:

    Make sure you read Patrick H Lauke’s comment on perfecting this method for IE5/Win.

Advertisements

82 comments

  • Pete F. wrote:

    Pete F.’s Gravatar

    I like to start the page with a default font size definition in points, then use “em’s” of that point size for specific items. Works well across all browsers, including IE/Win, IE/Mac, Firefox, Opera and Safari.

    Permalink for this comment 18 May 2004, 14:12 GMT

  • Marko Samastur wrote:

    Marko Samastur’s Gravatar

    Just a small comment from a math nut. 75% of 16 is 12, not 10.

    So, if you want to go from 16px to 10px, you need to set font-size to 62.5% (unless browsers have their own math and 75% actually works).

    Permalink for this comment 18 May 2004, 14:40 GMT

  • Rich wrote:

    Rich’s Gravatar

    Marko – thanks for that. Schoolboy error duly corrected.

    Permalink for this comment 18 May 2004, 15:00 GMT

  • James Craig wrote:

    James Craig’s Gravatar

    Fantastic article, and a perfect description of how to use ems. I disagree with one small part of the method though: the arbitrary body size. I’d recommend leaving the body size at 100% and scaling the rest down in ems accordingly. Of course, the downside is that the default is no longer the easily-divided 10 pixels. The upside is that it works well with user style sheets.

    Imagine I was a more-technical-than-average user (more people will figure out user CSS eventually) that had a preference for larger fonts. Perhaps I had vision impairment, perhaps I had some standard hyperopia gaining with age, or perhaps I just liked reading large text better. Not too large, mind you. Just about 120% of normal. Seems easy enough in my user CSS, right?

    body {font-size:120% !important;}

    That is, as long as everyone uses the standard default size for the body element. Trying this one your example yields massive text. I’ve also seen other arbitrary examples like 76 percent or 80-something percent. The more variations there are, the worse it becomes.

    So that’s my two cents. Do you agree? Again, lovely article… (We just differ on one small detail.)

    Permalink for this comment 18 May 2004, 15:54 GMT

  • Gordon wrote:

    Gordon’s Gravatar

    Wonderful article, and you are right FUD was stopping. No more!

    Thanks for taking the time to capture this info, it’s people like you that help people like me look good (well.. better at least..)

    Permalink for this comment 18 May 2004, 18:30 GMT

  • Mike P. wrote:

    James, I believe that 76% came from Owen Briggs work:
    http://www.thenoodleincident.com/tutorials/box_lesson/font/

    Permalink for this comment 18 May 2004, 20:12 GMT

  • Shawn Medero wrote:

    Shawn Medero’s Gravatar

    My own testing tells me 76% is as small as you can go before things text becomes unreadable in some browsers.

    Permalink for this comment 18 May 2004, 21:05 GMT

  • ie wrote:

    An excellent article. I think I finally understand how to make ems work.

    Nonetheless, the em approach seems to me to be fairly unwieldy. I differ with you that “sizing with keywords is more complicated.” The ALA article you’re alluding to was the first of its kind. Things have moved on since.

    The technique has stood me in good stead many a time.

    body, div, table, h1, ... h6 {

    font-size: x-small; fo
    t-size: small; /* ALA uses Celik’s hack, I prefer Tan’s hack */
    }

    This gives you a “base” font size 13px in all major browsers if and when set to “medium” text size. Now you can alter text size using either ems or percentages without a usual ripple effect or tedious calculations.

    When you size text, let’s say, from smallest to largest in IE, it’s always legible. See www.stopdesign.com

    With ems you may get horrific text size. See www.micr.cz

    Permalink for this comment 18 May 2004, 22:17 GMT

  • patrick h. lauke wrote:

    patrick h. lauke’s Gravatar

    two issues that are worth mentioning as well:

    IE gets its text resizing horribly wrong when just using ems. if your text size is set to normal, it’s fine, and ems relate directly to what the equivalent percentage would be…so having 0.75em on the body would have the same effect as 75%. now, bump the text size up or down, and you’ll notice that IE scales ems far more drastically than percentages, resulting in too big / too small text. the deceptively simple solution: in addition to having something like

    body { font-size: 0.75em; }

    you need to add an extra rule (i usually do it on the html) in percentages, which helps IE get its bearing back in terms of resizing…so

    html { font-size: 100%; /* IE hack */ }
    body { font-size: 0.75em; }

    now resizing works consistently.

    – although, as per the cascade, setting the font-size on the body should really influence all text sizing in the document, IE seems to ignore it when it encounters a table. the naive approach would be to set the font size for both body and tables like so

    body, table { font-size: 0.75em; }

    this works in IE, but any other same browser will honour the cascade, resulting in table text actually being sized to 0.75 of 0.75 = 0.5625em. the solution, similar to the previous one, is to add a percentage size to the table

    body { font-size: 0.75em; }
    table { font-size: 100%; /* IE hack */ }

    i seem to remember that this same issue happens with selects and inputs as well, and can be solved in exactly the same way, by adding a 100% sizing to them in the CSS.

    i like to call these the “be patronisingly over-specific, so IE knows what you mean” rules…and the beauty is that these don’t break in other browsers, and – apart from being “obvious” – don’t really fall under the category of hacks per se, as they don’t rely on bugs in any browser’s css parsing like, say, the box model hack does…

07 Apr 2008
Subscribe to Technology