Recently in Computers Category

So you fell for Sandisk's marketing line about "supporting Linux." The full truth is they are Linux-tolerant and their device behaves well with Linux. Expect that you'll be doing a lot of the leg work on your own. I've pulled together resources I've found and created to put all the pieces in one place so you can at least start where I've left off.

Preparing your Fuze
First, update your firmware to the latest version and be sure you set your Fuze to connect in MSC mode.
From Fuze menu: Settings -> System Settings -> USB Mode -> MSC
(everytime you upgrade your Fuze you'll have to re-set the USB Mode.)

Re-labeling your Fuze
The VFAT label of your Fuze controls the name of the mountpoint when your Fuze is automounted at. It will be mounted in /media/VFAT_LABELNAME/ (/media/SANSA FUZE/ by default.) You can re-label the VFAT filesystem of your Fuze to eliminate the space character (an inconvenience), give your Fuze a more meaningful name, or give your Fuze a differentiating name if you use multiple Fuzes.

  1. You need to have the 'mtools' package installed and configure a .mtoolsrc file in your home directory.
    sudo apt-get install mtools

  2. run 'mount' and note the /dev/ name of your mounted Fuze (default will look something like "/dev/sdc on /media/SANSA FUZE type vfat") in this case "/dev/sdc" is the value to note, your device name may vary.

  3. Create a .mtoolsrc file in your home directory:
    gedit .mtoolsrc

    with the following contents:
    drive f: file="/dev/sdc"
    mtools_skip_check=1

    (please substitute your device name from step 2 above for "/dev/sdc" above when you type it in...)

  4. Then run the 'mlabel' command as root to re-label your Fuze:
    sudo mlabel f:

    You'll be prompted to create a new label, choose one without spaces, perhaps choose a unique label for if you use multiple Fuzes.

Content Management
I've configured scripts to replicate all (MSC) files from the Fuze (and microSD card on-board the Fuze) to my home directory on my primary computer. This creates a complete backup of all content on the Fuze (and microSD) and allows me to manage files either on the Fuze or to the local directory in my home directory. I can add songs into the directory on the computer when the Fuze is absent (left at work, etc.) and re-sync the files onto the Fuze when it is back at home...

This is done using a set of simple scripts calling the Unix rsync command to mirror two sets of files. It is very efficient and only transfers files that have changed, so even a large dataset transfers quickly if you've only changed a couple files. I

Example rsync script:
script goes here in the near future

Music
Not a lot to note here, the Fuze supports a wide range of music files from MP3, AAC, FLAC, OGG and seems to be fairly tolerant (I haven't seen any "Unsupported Media Format" errors for music files.)

Podcasts
Choose your favorite Podcatcher and point it at your /

FM Radio

Voice Recording

Slot Radio
I haven't sprung for a Slot Radio card yet (and I don't want to displace my microSDHC card) but I'm wondering what sort of DRM has been implemented on them. The marketing materials say you get 1,000 songs, but they play in a random (or at least randomized) order, you can skip forward but not backwards. Apparently you can add more media to the Slot Radio card if it has free space remaining.

Images
The Fuze will downsize your JPGs if you, but there's not much point in putting large .JPG files on your Fuze just to eat up storage. I prefer resizing the images appropriately before putting them on the Fuze. video4fuze is the easiest option for properly resizing images for display on the Fuze. (Note this is the same tool as the "Video" section below.)

Video
The Fuze is very strict about video. Deviating from the standard will result in "Unsupported Media Format".

The easiest general solution for Video currently is video4fuze which provides you a easy GUI interface to video transcoding (using mencoder). You can combine this tool with the rsync technique mentioned above to transcode videos offline, then sync onto your Fuze later.

Miscellaneous Useful Specs
From the owner's manual:
Screen resolution: 220x176

Notes:
3:2 aspect ratio = 219x146 or 171x114
4:3 aspect ratio = 220x165 or 176x132
16:9 aspect ratio = 208x117 or 176x99

Shortfalls:
There doesn't seem to be anyway to sort or arrange files using subdirectories (especially photos and videos.) You can create subdirectories, but the Fuze flattens the filespace out and sorts them all alphabetically.

I'm considering some different approaches to organizing my MP3s to make them easier to browse through. Sansa has a lot of room for improvement in this area.

Unless you've got the correct packages installed, you'll likely get an error with some missing dependencies. You can find the missing packages at:

libicu38
libboost-filesystem1.34.1
libboost-regex1.34.1
libboost-thread1.34.1
libboost-iostreams1.34.1
libboost-signals1.34.1
libboost-date-time1.34.1

Click the above links, choose your architecture, choose a mirror, then download and open with GDebi.

Then install the Amazon MP3 downloader as normal.

My computer history

This is an on-going compilation of the computers I've owned over the years. I'm keeping this for nostalgia and to share one day with my kids. It will be updated as things change.

YearModelProcessorMemoryStorageDetailsPrice
??Odyssey
December 1982Coleco AdamZilog Z80 3.58Mhz80KB256Kb cassette tapesBought right before the video game crash of 1983.~$300
1987IBM PS/2 Model 50Intel 286 10Mhz1MB20MB~$3,600
IBM PC ConvertibleIntel 80C88 4.7Mhz512KB2x 720KB 3.5" floppy drivesMonochrome screen, drive 1 was for OS, drive 2 for app~$800 (used)
1992Generic PCIntel 486DX 33Mhz16MB200MB
Employers provided for all my computer needs for this timeframe
1997PowerSpec 6237Intel Celeron1.7Ghz (O/C to 2.0Ghz)256MB (->768MB)40GBWindows XP~$500
1998PowerSpec 6238Intel Celeron1.8Ghz (O/C to 2.1Ghz)256MB (->512MB)40GBFedora Core 2,3,4,5,6~$450
2007Dell PowerEdge 18002x Intel Xeon 2.8Ghz1GB(->5GB)1.5TB+ RAID 1Fedora Core 5,6,7,8,9,10,11,12, Ubuntu Server~$1150
2008Dell Inspiron 1420N LaptopIntel Core 2 Duo T7500 2.2Ghz1GB (->4GB)120GB14.1" screen, Ubuntu 7.10, 8.04, 8.10, 9.04, 9.10~$1100
2010Dell Inspiron 1750 LaptopIntel Core 2 Duo P8700 @ 2.53GHz/1066 Mhz FSB4GB500GB17.3" screen, Ubuntu 9.10, 10.04, 10.10, 11.04~$950


I was just staring at an old 8-inch floppy disk I keep around sitting on my desk, contemplating how storage capacities and densities have increased since it was introduced on the market in 1971.

The outer dimensions of the disk is 200x200x1mm or 40,000 cubic millimeters. It holds 79.7KiB of data or 81613 bytes. That works out to 2.04 bytes per cubic millimeter.

For comparison, I've chosen the modern-era microSDHC card. It has dimensions of 15x11x1mm or 165 cubic millimeters. It holds up to 16GiB of data or 17,179,869,184 bytes. Quick math turns up 104120419 bytes (104MiB) per cubic millimeter.

In 38 years the storage density of removable media has increased by a factor of over 51 million. I wish I knew what a 8-inch floppy disk cost when it was introduced to the market to do some cost/capacity comparisons.

SanDisk has announced they expect a 128GiB Micro SDHC card to be available in 2011.

My hardware:
  • Canon Rebel XTi (uses Compact Flash (CF) memory)
  • Inland USB multi-format SD/CF card reader ($12 at Micro Center)
  • Dell PowerEdge 1800 running Fedora Core 11
My goal is to start out with files like this on the Compact Flash card::
[CF Card]/dcim/102canon/img_9999.CR2
[CF Card]/dcim/102canon/img_9999.JPG
[CF Card]/dcim/103canon/img_0000.cr2
[CF Card]/dcim/103canon/img_0000.jpg
run the script, and end up with the same files, transferred to the server and renamed like this:
[server photo repository]/2009/200902/20090215/img_1029999.cr2
[server photo repository]/2009/200902/20090215/img_1029999.jpg
[server photo repository]/2009/200902/20090215/img_1030000.cr2
[server photo repository]/2009/200902/20090215/img_1030000.jpg
Removal of files from CF card is performed manually by the Format function on the camera, once I'm sure all the files have survived the trip from CF to hard drive.

The (re)naming convention assures unique file names for photos coming from my camera until I get to 10,000,000 photos. At my current rate of taking pictures, that would be several thousand years. It also allows me to easily manage my photos by year, month, or day (and eventually decade) as I choose.

I've written a script to automatically copy and rename my files from the CF card to an appropriate directory on the server when it is run.

#!/bin/ksh
startdir=`pwd`
cfsourcedir="/mnt/usb"

# make sure to use your device name here, check output of 'dmesg' \
# on your server with card reader connected.
cfdeviceid="/dev/sdc1"
canondir="${cfsourcedir}/dcim"
datepath="/photos/raw/`/bin/date +%Y/%Y%m/%Y%m%d`"

sudo umount $cfsourcedir

sudo mount $cfdeviceid $cfsourcedir
result=$?;

if [ $result -eq 0 ];then

   if [ -d $datepath ]; then
      echo "Directory $datepath exists"
   else
      mkdir $datepath
   fi
   #echo "canondir: $canondir"
   #echo "datepath: $datepath"

   rsync -az $canondir/* $datepath --stats --progress | \
   tee -a /tmp/loadfromcf.out
   cd $datepath
   for i in `find -type d |sed 's/^.\///g' |grep -v ^\.$`
   do
      cd $i
      directorynumber=`echo $i | sed 's/CANON//g' |sed 's/canon//g'`
      for j in `ls -1 *`
      do 
         k=`echo $j |sed "s/img_/img_$directorynumber/g" |\
   sed 's/IMG_/IMG_${directorynumber}/g' |sed 's/JPG/jpg/g' |sed 's/CR2/cr2/g'`
         mv $j ../$k
         chown speed:speed ../$k
         chmod 0544 ../$k
      done
      cd ..
      rmdir $i 
   done
fi

sudo umount /mnt/usb

if [[ $result = 0 ]];then
   grep -i Number /tmp/loadfromcf.out | tail -2
   pwd
fi
I've also contemplated modifying this script so it would automatically (cron) check for a CF card in the reader, then automatically start the copying process. If I make this modification, I'll post it here as well.

I'll be adding code/comments as I improve this script.

I've been working with variations of Unix for a long time now and thought I'd jot down some of my favorite tips and tricks. They are mostly OS/distribution/shell/language independent (unless I indicate otherwise...)

  1. Get rid of blank lines in a file
    grep . inputfile > outputfile
    This matches (and thus prints) only lines that contain some text, not blank (empty) lines.

  2. comm
    Many people never cross paths with the comm command, but it is very useful. I works similarly to diff, but outputs the contents of two compared files into three columns. The first column is content only in the first file, second column is content only in the second file, and third column is content that is in both files (matches between the two files.) While this may not seem useful at first, you can select which columns to output, so if you only want to know what is in both file1 and file 2 (column 2) you'd suppress columns 1 and 2, by running:
    comm -12 file1 file2
    Don't forget that your input files must be sorted.

  3. paste
    Systems administrators frequently use the cut command to parse files, but many people I run into have never used the paste command. The paste command will concatenate two files line by line (as opposed to file by file, like cat.)

  4. less instead of more
    This is not available on all Unix-based OSes, but the less command works very similar to more, but will let you move through a file forwards and backwards more easily. Want to jump to the end of the file, type Shift-G Depending on the version of less you are running, it will provide context highlighting when you search for a pattern.

  5. Jump to vi from more
    While paging through a file in more, press "v" to jump to editting the file in vi at the current position in the file.

  6. Jump to a line number when editing a file with vi
    vi +linenumber filename
    will open up the file with the cursor automatically moved down to the specified line. This is useful when you get an error that indicates "syntax error on line 2047." You can jump straight to the problem without fumbling around.

  7. Invisible characters become visible
    Sometimes you'll end up with carriage returns on each line in a file originally created on a DOS/Windows system, or filenames with spaces, tab, or other control characters in them, but you can't see them typically.
    The cat command provides three useful options -v, -e, and -t that will let you understand these invisible characters
    -v (displays non-printing characters)
    -e (prints a "$" at the end of each line to indicate a NL character)
    -t (prints "^I" for each Tab in the file)
    cat -vet filename |more

  8. Remove DOS ^M from ends of lines
    The "^M" characters are visible when editing in vi but here are two approaches to remove the characters.
    sed 's/<Ctrl-V><Ctrl-M>//g' -i filename

    or in vi: <Esc>:%s/<Ctrl-V><Ctrl-M>//g

If you ever do end up with me interviewing you, I'll likely work one or two of these into the discussion to explore your level of knowledge about Unix. If you need more information, remember: man pages are your friend.

My first PC

My first real IBM PC-compatible computer was an IBM PS/2 Model 50. It was purchased sometime around the summer of 1987. I was about 12 years old and about to enter middle school. I'd previously had a Coleco Adam (which was sort of an Apple IIe mixed with a gaming console.)

It had a 10Mhz Intel 80286 processor, 1 MB of RAM, a 20MB hard drive, a 1.44MB floppy drive, 4 MCA slots (they all went unused), a IBM 8514 VGA Monitor, an IBM 5842 2400bps modem and a IBM 5201 dot matrix printer.

The original IBM PS/2 mouse.The fact that it had 1 MB of RAM was a bit of an early confusion to me as DOS could only use 640Kb until memory manager and extended memory utilities became available.

I remember distinctly saying that I'd never be able to fill up the 20MB hard drive. A little research lists a replacement 20MB drive for the system at $795 (~$40/MB) at today's market rates (cost/MB) that drive would cost approximately three tenths of one cent (.003 dollars) These days my digital camera takes 10MP RAW photos that are almost 20MB each. A 1TB drive (which are available for approximately $200) holds 50,000 times as much data as that 20MB drive. I've long since stopped saying that I'd never fill up a give hard drive...

I remember running IBM DisplayWrite 4, Harvard Graphics, Deluxe Paint (DPaint), F-19 Stealth Fighter. I briefly ran a couple of starup BBSs using Renegade and Wildcat! that never amounted to much. It was mostly an outgoing BBS terminal with occasional application distractions here and there.

I had a 2400bps modem, but all the BBS were 1200bps in town. I used to call long-distance (remember that?) to take full advantage of my modem's speed for the first couple months. The phone bills hurt.

I made the mistake of using DoubleSpace disk compression for the first and only time on this system.

This computer ran MS-DOS (3.0 - 6.22), PC-DOS, DR-DOS, GEOS, Windows 3.0, OS/2 (1.something.) I cut my teeth on BASIC, Turbo Pascal, REXX

Now my computers(!) run at multiple gigahertz with multiple processor cores, have gigabytes of system RAM, and terabytes of storage. I can't wait to see what happens in the next 20 years...

In a product as carefully developed and mature as Microsoft Office Excel 2003 SP2, you'd think there'd be a nice way of intuitively removing multiple hyperlinks from a set of cells. The general thought process for designing this functionality would be something like:

  1. Select range of cells from which you want to remove hyperlinks,
  2. Right-click, then select "Remove Hyperlink(s)" option,
  3. Done.
This seems intuitive, heck, that's how you remove a hyperlink from one cell, why wouldn't multiple removes work the same way?

I recently received a spreadsheet with several hundred hyperlinks included on a key field that had me accidentally linking to a web page (along with being prompted for authentication every time) whenever I selected the hyperlinked field. Useful for someone, a major annoyance to me (click-Hold, BTW is the correct way to select a hyperlinked field.) I tried the approach detailed above several times with no success. The choice to "Remove Hyperlink" disappears when multiple cells are selected. I gave in and asked Microsoft Office Help how to "remove hyperlink" and got the following procedure:

  1. Type the number 1 into a blank cell,
  2. Select and copy it (right-click, select "Copy" option),
  3. Ctrl-Select the fields from which you want to remove hyperlinks (Shift-select or click-drag are also acceptable), release Ctrl or Shift keys if you are using them,
  4. Select the Edit menu, then the "Paste Special" menu item,
  5. When the Paste Special window opens, select "Multiply" under the "Operation" section, then choose "OK.
Who at Microsoft thought this was a useful, intuitive, or even understandable way of removing hyperlinks from multiple cells? It's almost as if some programmer's hack made it into the end-user's experience and no one noticed. Someone had to do functional test on this in Quality Control, right? Did it seem right then? I haven't used the newest Microsoft Office Excel offering, but I sure hope they've improved this bad user interface design. I'll add to this post tonight to comment on how OpenOffice deals with this task.

So I've been having a problem with my "Send To Flickr" Bookmarklet functionality on Flickr, and been in a foul mood about it. I finally got to the right person at Flickr who set me in the right direction and give me permission to post the javascript contents for the bookmarklet here.

"Send To Flickr" Bookmarklet Code:

<20050906 Edit>How Do I Use This?

Highlight the text in this box and drag it onto your "Bookmarks Toolbar" (Netscape/Mozilla) or ":Personal Toolbar" (Opera.) Optionally, you can manually make a bookmark. For the 'Location' field (Mozilla) or 'Address' field (Opera) paste in the javascript from above. (It needs to be copy-and-pasted as one line.) Then go load the page with the picture you want to upload to Flickr. Click on the bookmark(let) and it will list all images on that page. Click the image you want to upload. Login to Flickr if it asks you to. Choose "Upload To Flickr" button. Voila! Your file should be uploaded into your account on Flickr.

To make this really useful, add the bookmark to your "Bookmarks Toolbar" (Mozilla) or "Personal Toolbar" (Opera) under View->Toolbars, so you can use your bookmarklet easily while browsing. If at this point, you can't figure it out, please wait for Flickr's new Bookmarklet coming to a browser near you soon.

</20050906 Edit>

I believe this is the exact JavaScript from Flickr (they wrote the code, not me), but I can't guarantee it. It works correctly and YOU can scan through the JavaScript, there doesn't appear to be anything untoward in the code. Flickr is reworking their bookmarklet upload function currently, so keep an eye on their Upload Tools page (you must be logged in to use that link) and be sure to use their new bookmarklet when they post it. (I'll modify this blog entry when they do...)

</20070323 Edit>

I've stopped using YahooFlickr, so I can't verify whether or not this still works. I'll leave it here for history's sake, and in case anyone finds it useful. As before, this code came from Flickr, I do not support it or provide any warranty to it working or working correctly for any of your needs. Your mileage may vary, use at your own risk/benefit.

My Digital Photo Workflow Notes

I am currently using a Canon Rebel XTi DSLR camera that records onto Compact Flash media. I'm primarily interested in filing, categorizing and annotating my image files. Post-processing (raw conversion, adjustments, etc.) is usually minimal unless I really messed up my settings or am working commercially.

  1. Transfer the images, as taken, to fileserver in a working directory. This is done via USB-connected Compact Flash reader attached to my fileserver (I'm considering adding a built-in card reader if my motherboard provides USB connections internally, need to investigate.) The files are written to a dedicated RAID 1 share on my Fedora Core 6 (currently) Linux fileserver.
  2. Set the Compact Flash card aside, just in case...
  3. From Unix shell, check that the file ownership and permissions are set correctly on the copied files. File permissions are all changed to 0544 for my purposes, so the files are read-only, but my automated system can access the files.
  4. If necessary, renumber (rename) files. Canon stores 10,000 photos per folder, then automatically increments to the next folder. I prefer to append the folder number to the image number to form individual file names like so:
    DCIM/CANON101/IMG_2345.JPG becomes IMG_1012345.JPG. The little shell script I use to rename my files looks like this:
    for i in `ls -1`
          do
          j=`echo $i |sed `s/IMG_/IMG_101/g'`
          mv $i $j
          chmod 0544 $j
       done
    
    I currently keep all my photos in one directory (may rethink this later) so it is important for me to keep filenames unique.
  5. Record the filenames of the new files in the work directory, move them to the production directory.
  6. Process the photos through raw conversion using Bibble Pro
  7. Process the new files (recorded in the previous step) through the script that loads the image records, vital statistics and meta data (EXIF) into the database:
    • sample the image and record the average color in HEX
    • record default values (photographer, photographer e-mail, photographer URL, file directory, filename, url
    • extract EXIF data with jhead and load that data
    • create appropriate .html files which call scripts via SSI and verify new .html file permissions
    • categorize photos where I can by date/time and other extracted information
  8. Create test lightbox view of thumbnails
  9. Correct any images that need their orientation (rotation) adjusted. Usually this is a rotate operation -90 degrees to counteract the camera being used vertically instead of horizontally.Now done in Bibble Pro, so not an issue.
  10. Rebuild thumbnail files for new images. Other than thumbnails, all images are resized on-demand, real-time, and fed as a BLOB from my server to your browser. Neat tricks with Perl, Imagemagick, and Apache.
  11. Rebuild category files to account for new files assigned to categories.
  12. Verify that everything works correctly and looks sane/sober/kosher.
  13. Format Compact Flash media.
At this point, I've got all the information about the image into the database and appropriate web pages have been built to index and display the photos on my online photo galleries. Now I can sleep restfully. Additional notation, categorization, sorting, filing, etc. is an on-going task (with 20,500+ photos and growing, it may never be finished.) The photo files and databases are backed up on a RAID 1 partition locally (to protect against hardware failure) and are also mirrored remotely (using rsync) so I'll always have a copy off-site (in case of local catastrophe (weather, fire, etc.))

I'm in a constant development process with this project, right now. The to-do list is long. Here are some details of the current implementation.

All photos have appropriate copyright notation and all rights are reserved. All photos are available for licensing. All photos are available in their original, unmodified resolution and format. Please contact me for specific information about licensing.

About this Archive

This page is a archive of recent entries in the Computers category.

Television is the next category.

Find recent content on the main index or look in the archives to find all content.