Ruthless Automation

M-x write-something

New (Baby) Skill of the Day

Grace put the mail in the mailbox when I opened it today without any prompting from me. I know she’s been with me when I took it out before, but I don’t know if she ever has seen me put mail in.

Careers

I did a quick retrospective on my life since high school recently. I’ve been bothered for a while with the feeling I’m not where I wanted to be at ahem somewhere close to age 40. I have a few friends who are very successful financially, and occupy some positions in their work with a lot more responsibility than I’ve earned in my own job. The days that I start down the road of comparing my career to theirs don’t end well for me.

I spent several years with a lot of anger towards myself about how I screwed around for too many years, not working a career job, just teaching band and colorguard, and generally not building a base for financial success. What I’ve come to realize now is that those 10 or so years were my first career. A career of teaching, working with teams, learning how to lead, learning how to plan and organize. A pretty successful career at that - the groups I was lucky enough to have worked with won national championships at different levels, and did very well against their competitors. I had the fortune of having great managers in those jobs, although they weren’t called that. But they were people who taught me how to work and how to be motivate others, and those are lessons well learned.

It’s nothing more than a shift in perspective for me but this had been an important change recently. Learning how to look back with an honest eye at my past. I enjoy my second career now, just like I did my first. And I should spend more time looking back and remembering the lessons I learned in those years. People are people, in every industry, teamwork is the same everywhere, and time is only wasted when the lessons learned aren’t applied the next time around.

User Value Versus Vendor Value

Jack Bellis, a colleague at Elseivier, used a phrase I hadn’t heard before.

User value versus Vendor value

The basic example is a form that asks for a telephone number with three input boxes. The user has to enter information in three boxes, either tabbing to each or (hopefully) javascript automatically moves the focus to the next. This has vendor value - the vendor doesn’t have to parse the various methods that might be used such as (xxx) xxx-xxxx, xxx-xxx-xxxx, and so forth.

Contrast this with a single input box where the user can type a phone number as he/she wishes. It’s easier on the user. It can be copied and pasted, or automatically filled in via a browser setting. This has user value

I wonder if you could create a user/vendor value scale to rate web pages. Give a +1 for each case of user value. Give -1 for each case of vendor value. 0 when neither is benefited. If you get a positive score, you’ve done well.

Probably a little simple, but I might play with this to see if I can make something of it.

Apache Tomcat and IIS on a Windows Box

A regular httpd server can handle page requests and pass off only the parts of the page that need to be processed by Tomcat. The following install instructions are based on http://tomcat.apache.org/connectors- doc/webserver_howto/apache.htm.

Install the software

  • Install Apache on your server and serve pages on port 80. This is based off of version 2.2.6.
  • Install Tomcat to serve pages on 8080. This is based on version 6.0.16.
  • Install IIS to serve pages on port 8090. This is based on version 5.1 for Windows XP.
  • You will need a Java virtual machine running on your PC as well. Tomcat should detect this automatically.
  • You might need to configure Tomcat via the system tray program to point at the ‘jvm.dll’ file in ‘bin/client/’.

Apache Changes

Add the module

Tomcat Changes

web.xml file

Enable directory listings

  • Open web.xml located in TOMCAT_INSTALL_DIRECTORY/conf
  • Change the line directly UNDER <param-name>listings</param-name> to have a value of true.

server.xml file, part 1

  • Open the TOMCAT_INSTALL_DIRECTORY/conf/server.xml file.
  • In the Engine section, add this line <Listener className="org.apache.jk.config.ApacheConfig" modJk="/path/to/mod_jk.so" />.

workers.properties file

  • Create a TOMCAT_INSTALL_DIRECTORY/conf/jk directory, if it’s not there already.
  • Create a workers.properties file in TOMCAT_INSTALL_DIRECTORY/conf/jk.
  • Edit the workers.properties file as per here: http://tomcat.apache.org/connectors-doc/generic_howto/workers.html or use the following example:

    the list of workers

    worker.list=worker1

    individual properties

    worker.worker1.type=ajp13 worker.worker1.host=localhost worker.worker1.port=8009

  • Restart Tomcat

  • You will now have a TOMCAT_INSTALL_DIRECTORY/conf/auto/mod_jk.conf file.
  • Edit the mod_jk.conf file to make it read as follows:

    defines the workers file

    JkWorkersFile “TOMCAT_INSTALL_DIRECTORY/conf/jk/workers.properties”

    defines the log file and level

    JkLogFile “TOMCAT_INSTALL_DIRECTORY/logs/mod_jk.log” JkLogLevel info

    sets the base directory for Apache to handoff to Tomcat

    JkAutoAlias “APACHE_DOCUMENT_ROOT_DIRECTORY”

    all files served by Tomcat to start

    JkMount /*.jsp worker1

    Now make it serve static files using httpd

    this command seems to be specific to Apache 2.2

    JkUnMount /.html worker1 JkUnMount /.htm worker1 JkUnMount /.php worker1 JkUnMount /.asp worker1 JkUnMount /.css worker1 JkUnMount /.js worker1 JkUnMount /.jpg worker1 JkUnMount /.jpeg worker1 JkUnMount /.gif worker1 JkUnMount /.png worker1

  • You can change the location of this file (see below).

server.xml file, part 2

  • Remove the line that you added above - <Listener ........> (you can just comment it out).
  • Change the line starting with <Host name="localhost" appBase="webapps" ......> to read <Host name="localhost" appBase="FOLDER_ABOVE_THE_ROOT_DIRECTORY_YOU_COPIED_EARLIER".....>.
  • I.E., if you are now serving pages out of MyDirectory/ROOT, set appBase to be MyDirectory.

Apache Changes part 2

Copy the ROOT folder from Tomcat

  • In the TOMCAT_INSTALL_DIRECTORY/webapps, there is a ROOT folder.
  • Copy the WEB-INF folder in that location INTO your existing Apache directory that you serve pages out of (usually either htdocs or www).

Copy the other folders from Tomcat

  • In the TOMCAT_INSTALL_DIRECTORY/webapps, there are several other folders as well.
  • Copy these INTO the save folder level as the ROOT.
  • Copy TOMCAT_INSTALL_DIRECTORY/webapps/ROOT/index.jsp to the root of where you will serve pages out of and rename it to tomcat.jsp. This will allow you to access the Tomcat manager directly from a page.

httpd.conf file

  • Add the line LoadModule jk_module modules/mod_jk.so to your httpd.conf file.
  • Set DocumentRoot to the ROOT folder you just copied above.
  • Note that you also need to change any other references to the DocumentRoot folder to the new location.
  • Usually there is a Directory block that references this same folder for permissions.
  • Add this line to your httpd.conf file: Include TOMCAT_INSTALL_DIRECTORY/conf/auto/mod_jk.conf.
  • You can change the location of that file as long as you change it here as well.
  • Restart Apache and you should now be able to serve jsp pages.

Serving ASP pages with IIS out of the same directory

It’s possible to have all three webservers (Apache, Tomcat, and IIS) serve pages out of one directory.

  • When you see YOUR_WEB_SERVER below, you should NOT use localhost if others will connect to your machine externally. Use the FQDN for best results.
  • Use the setup above, and have IIS point to the same directory as Apache. Choose a new port for IIS.
  • Add the following to httpd.conf for Apache:

    DirectoryIndex index.html index.jsp index.php RedirectMatch 301 (.*).asp http://YOUR_WEB_SERVER:YOUR_IIS_PORT$1.asp

  • Download and install ISAPI_Rewrite for IIS from here: http://www.isapirewrite.com/ The free version is sufficient.

  • Put the following lines to the httpd.ini file this program creates (only specify a port if it’s not the default):

    [ISAPI_Rewrite]

    anything that’s php or jsp goes back to Apache

    RewriteRule (.).php http\://YOUR_WEB_SERVER$1.php [RP] RewriteRule (.).jsp http\://YOUR_WEB_SERVER$1.jsp [RP]

Now any pages that end in .asp will be sent to the IIS port on that machine, and any pages that are .php or .jsp will go back to Apache. Static files will be used by whatever web server you are connected to at that point.

Possible Gotcha using default.asp

It would be nice if you could specify default.asp as one of the files under DirectoryIndex above, but doing so means that Apache will look for this file after trying the other files. When the RewriteRule sees that, it processes it as a request for a .asp file, and redirects to IIS. So opening a directory with no default page results in a redirect, when all you want to do is browse the directory.

Mobile Link Dump

Been researching mobile devices for a couple of weeks. Take a deep breath:

Table of Contents

  • 1 Books (online and dead tree)
  • 2 Blogs/Articles/Resources worth reading
  • 3 Design and/or Coding Articles
  • 4 Statistics on mobile use
  • 5 Best Practices and Design Resources
  • 6 Testing/Emulation Sites and resources
  • 7 Conferences
  • 8 Articles/Resources specific to Health Care
  • 9 Devices/Manufacturer Specific info and links
    • 9.1 Apple
    • 9.2 RIM
    • 9.3 Nokia
    • 9.4 Palm
    • 9.5 Google
    • 9.6 Microsoft
    • 9.7 Samsung
    • 9.8 Opera
    • 9.9 Firefox

1 Books (online and dead tree)

  • http://mobilewebbook.com/ - gathering of information in one place, by Cameron Moll. Couple of years old but good overview of mobile. Sold as PDF only.
  • Designing the Mobile User Experience by Barbara Ballard – LN tech library bought a copy.
  • Constant Touch: A Global History of the Mobile Phone by Jon Agar
  • Personal, Portable, Pedestrian: Mobile Phones in Japanese Life by Mizuko Ito, Daisuke Okabe, and Misa Matsuda
  • Mobile Interaction Design by Matt Jones and Gary Marsden

2 Blogs/Articles/Resources worth reading

3 Design and/or Coding Articles

4 Statistics on mobile use

5 Best Practices and Design Resources

6 Testing/Emulation Sites and resources

7 Conferences

8 Articles/Resources specific to Health Care

9 Devices/Manufacturer Specific info and links

9.1 Apple

9.2 RIM

9.3 Nokia

9.4 Palm

9.5 Google

9.6 Microsoft

9.7 Samsung

9.8 Opera

9.9 Firefox

Sharing Folders Under Ubuntu in VMWare

VMWare fusion allows you to share folders from the host operating system with the guest operating system. Under Ubuntu 8.04 and 8.10, the permissions are not set correctly to give read/write access to the share.

The share itself is located under /mnt/hgfs in Ubuntu. For some reason, the owner keeps getting set to 506 and the group to dialup. To fix this, edit /etc/fstab and look for the VMware entry (it will be commented). Look for the part of that line that starts with the word default, and add this right after it (after the word default, not that entire section):uid=1000,gid=1000. Save the file, and reboot (or unmount and remount that share).

This assumes you are the only user on the virtual machine, in which case your user id and group id are 1000.

I use this to share a Pictures in my home directory on OSX with Ubuntu for using Digikam.

Writing in Cursive

I have just tried to write cursive for the first time in months, and realized I have to stop and think about how to write some letters.  I remember reading that it’s a dying skill anyway, with keyboarding being taught instead, but it’s a little odd to realize that a skill that used to be automatic takes thought, and even then it doesn’t always work.  I don’t think I even write checks using cursive, it’s all print.  How weird.

Does Data Scale Forever?

Next time someone in your group says something about how Google is doing X, so that shows you should do the same thing, give them this test: 1. Describe Google. 2. Give two examples.

(Apologies to whoever created the joke in the first place, some say Woody Allen.) Google is google because they do stuff no one has ever done.  If your company did that, you’d be the new Google.

There was a recent email floating around at work that went over an article about how Google has enough data that theory isn’t needed to predict outcomes anymore. With enough data, anything can be modeled.  So applying this to writing HTML, can you say “Don’t worry about semantic markup?”.  Can you just keep adding data to your models and you’ll be able to extract meaning from that?  If enough web pages are written, even badly, about a topic, can we pull the data out of those pages regardless?  See http://www.wired.com/science/dis coveries/magazine/16-07/pb_theory

Is there a point where we’ll be creating so much data that we’ll overwhelm even the biggest servers, processors,  RAM, and code? Which wins out, our ability to process the data or create it?  Hardware and software manufacturers or people manufacturers?

You can get by without semantics if you have enough data, storage, memory, and money. Also see http://jeremy.zawodny.com/blog/archives/010841.html.  And  think about data mining for terrorists - is it actually working as the government tries to plow through every bit of communications data. As data keeps growing, will hardware and software scale to keep up?

Moving Email to Google Apps

In an endless quest to be able to publish right to wordpress from Emacs, I upgraded an older hosting account to the newer and shinier version (it’s a whole other story in itself, some other day).  Since I was breaking things right and left, I figured I’d take the leap to Google Apps backend as well for email.  I’ve been forwarding a copy of all email to Gmail for over a year now, and it’s firmly ingrained in my workflow.  I’ve always had the fear I’d lose my account somehow, so for $50 a year per user, it’s worth the peace of mind.

Wishlist

  1. A way to say “take all the information/accounts/whatever for THIS google account and merge it with THAT new google apps account”.  Manually sharing calendars, importing email, sharing docs and so forth has been a pain.
  2. Make the instructions clearer for updating CNAME and MX records. It’s two separate steps, but it’s not clear at first that you have to do both steps.
  3. When importing email, run it through the Spam filter.  I had an account with thousands of junk mails that had to be sorted manually again.
  4. Why can’t I check mail FROM a Google Apps account via IMAP when the account I’m checking is a gmail account?  Why does it have to be POP?
  5. What’s the best way to do the above?  Check via POP?  Forward?  What’s the ‘Google’ way here?
  6. Give me a way to export filters and labels along with my mail.  Recreating those has been a pain.
  7. Give me way to export my mail automatically for backup. So far, that’s my complaints list.  I’ll update as I find more things to whine about.

Get Yourself a High-definition Browser

If you live in the US and watch TV in any amount, you know that we are about to make a switch from analog signals to digital signals. This means that any non-cable ready TV will need a converter box to get over the air programming as opposed to just having rabbit ears. It’s part of a general transition in that’s been happening for a while in television, a transition to hardware and software that can handle the greater amount of information digital streams carry.

If you’ve never looked at a High Definition TV (HDTV), a good example of the difference between the two comes from (in my opinion) watching a football game. If you put it next to a regular TV, the difference in quality is amazing. The individual blades of grass can almost be seen, the detail is that good . Once you start watching on an HDTV, it’s hard to go back to a regular one.

But there’s no difference in the content. You’re watching the same football game, with the same sound, happening at the same time. The difference is in HOW you see the game. You might see details on the uniform you never noticed, see colors that were faded out on the regular TV. But now, you can really appreciate the little details.

So what makes a high definition browser? It’s one of the new generation of browsers - Firefox, Safari, Opera, Webkit, Camino, etc. The HDTVs of the internet. The tools that can process that extra information that websites are bringing with them now. Rounded corners, drop shadows, gradients, HTML5, CSS3, embedded video, embedded fonts. The virtual blades of grass.

Dan Cedarholm calls this “progressive enrichment” - if your browser has the capability to process the extra information, you get the better experience. If not, you get an experience with the same basic information, just not the extra detail that makes it come alive. It only feels a little flat if you know what you COULD be getting.

So why not get yourself a free HDB - High Definition Browser? You might not have $2000 to watch that football game on a new big screen, but you can bring the internet to life without spending a dime.

*[HDTV]: High Definition TV